diff --git a/.gitignore b/.gitignore
index 49616fa..0dbb4e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,4 +6,7 @@
__pycache__/
# Simulations
-sim_build/
\ No newline at end of file
+sim_build/
+
+outflow/
+work*/
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
index 8187f1b..e21be67 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,9 @@
[submodule "src/common/crypto"]
path = src/common/crypto
url = ../../bslathi19/crypto.git
-[submodule "src/common/taxi"]
- path = src/common/taxi
- url = ../../bslathi19/taxi.git
+[submodule "src/common/fifo"]
+ path = src/common/fifo
+ url = https://github.com/olofk/fifo.git
+[submodule "src/common/taxi-bsl"]
+ path = src/common/taxi-bsl
+ url = ../../bslathi19/taxi-bsl.git
diff --git a/Ti375C529_devkit/.lock b/Ti375C529_devkit/.lock
new file mode 100644
index 0000000..9518eff
--- /dev/null
+++ b/Ti375C529_devkit/.lock
@@ -0,0 +1 @@
+4176154
diff --git a/Ti375C529_devkit/EfxSapphireHpSoc_bootloader/default_bootloader.hex b/Ti375C529_devkit/EfxSapphireHpSoc_bootloader/default_bootloader.hex
new file mode 100644
index 0000000..85ba367
--- /dev/null
+++ b/Ti375C529_devkit/EfxSapphireHpSoc_bootloader/default_bootloader.hex
@@ -0,0 +1,50 @@
+:02000004F90001
+:1000000097110000938181AC23A00182732540F1F8
+:1000100015C503A5018275DD0F0020020F10000039
+:1000200083A7C181014581450146828723AEA18016
+:100030000F001001054523A0A182828013818192C7
+:1000400013850181938501811386C18163FAC500FF
+:100050008322050023A0550011059105E3EAC5FEA2
+:100060001385C181938581826377B50023200500C4
+:0E0070001105E36DB5FEDD2A192001A0828086
+:10007E00B70701E81307E01098C7B70701E81D4757
+:10008E00D8C771A8B70603E8416791067D179C4251
+:10009E00F98FF5DF856793870780370703E81CC361
+:1000AE008280B70603E8416791067D179C42F98F5F
+:1000BE00F5DF13070020B70703E898C3370703E8F7
+:1000CE0011071C43C183F5DFB70703E88843137597
+:1000DE00F50F8280B70603E8416791067D179C42B3
+:1000EE00F98FF5DF13650510B70703E888C3828023
+:1000FE00B7C7B0F8E11794439386A60F984333879A
+:10010E00E640E35D07FEB70603E8416791067D17FB
+:10011E00130600109C42F98FE39EC7FE82804111A8
+:10012E0006C622C426C2B70703E823A40700094760
+:10013E00B70703E898D39546B70703E8D4D3B707B4
+:10014E0003E898D71D47B70703E8D8D755371D3FA3
+:10015E00B70603E8416791067D179C42F98FF5DFDC
+:10016E00856793870788370703E81CC31305B00A12
+:10017E009537093FB53FB7C7B0F8E11794431967F4
+:10018E001307871ABA9698433387E640E35D07FE56
+:10019E00B70603E8416791067D179C42F98FF5DF9C
+:1001AE00856793870788370703E81CC31305F00993
+:1001BE001537C53DB7C7B0F8E11794434967130724
+:1001CE00874F2A84BA9698433387E640E35D07FE4D
+:1001DE00553D393FB70603E8416791067D179C42AE
+:1001EE00F98FF5DF856793870788370703E81CC308
+:1001FE009307D009130590026304F4001305900EC3
+:10020E00D13D4935F535B70603E8416791067D17AF
+:10021E009C42F98FF5DF856793870788370703E8D8
+:10022E001CC32D45453D130500046D3501455D3557
+:10023E0001454D350145793D0564B70402009535FC
+:10024E00A2872380A7000504E31B94FE253D0565C8
+:10025E00F9332244B24092448567410182874111AD
+:10026E0022C44AC097070000938747061704000070
+:10027E001304C40506C626C233898740638B8700E4
+:10028E001359294081441C40850411048297E3ECE4
+:10029E0024FF9707000093876703170400001304D9
+:1002AE00E4023389874013592940638987008144CA
+:1002BE001C40850411048297E3EC24FFB2402244D3
+:0802CE009244024941018280C3
+:0C02D6000000000000000000000000001C
+:04000005F9000000FE
+:00000001FF
diff --git a/Ti375C529_devkit/Ti375C529_devkit.isf b/Ti375C529_devkit/Ti375C529_devkit.isf
new file mode 100644
index 0000000..f47d39d
--- /dev/null
+++ b/Ti375C529_devkit/Ti375C529_devkit.isf
@@ -0,0 +1,285 @@
+# Efinity Interface Configuration
+# Version: 2026.1.132
+# Date: 2026-08-08 20:48
+#
+# Copyright (C) 2013 - 2026 Efinix Inc. All rights reserved.
+#
+# Device: Ti375C529
+# Package: 529-ball FBGA (final)
+# Project: Ti375C529_devkit
+# Configuration mode: active (x1)
+# Timing Model: C4 (final)
+
+
+# Device setting
+design.set_device_property("2A","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("2A","2A_MODE_SEL","2A")
+design.set_device_property("2A","VOLTAGE","1.8","IOBANK")
+design.set_device_property("2B","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("2B","2B_MODE_SEL","2B")
+design.set_device_property("2B","VOLTAGE","1.8","IOBANK")
+design.set_device_property("2C","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("2C","2C_MODE_SEL","2C")
+design.set_device_property("2C","VOLTAGE","1.8","IOBANK")
+design.set_device_property("2D","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("2D","2D_MODE_SEL","2D")
+design.set_device_property("2D","VOLTAGE","1.8","IOBANK")
+design.set_device_property("2E","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("2E","2E_MODE_SEL","2E")
+design.set_device_property("2E","VOLTAGE","1.8","IOBANK")
+design.set_device_property("4A_4B","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("4A_4B","4A_4B_MODE_SEL","4A_4B")
+design.set_device_property("4A_4B","VOLTAGE","1.8","IOBANK")
+design.set_device_property("4C","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("4C","4C_MODE_SEL","4C")
+design.set_device_property("4C","VOLTAGE","1.8","IOBANK")
+design.set_device_property("4D","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("4D","4D_MODE_SEL","4D")
+design.set_device_property("4D","VOLTAGE","1.8","IOBANK")
+design.set_device_property("BL2_BL3","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("BL2_BL3","BL2_BL3_MODE_SEL","BL2_BL3")
+design.set_device_property("BL2_BL3","VOLTAGE","3.3","IOBANK")
+design.set_device_property("BR0","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("BR0","BR0_MODE_SEL","BR0")
+design.set_device_property("BR0","VOLTAGE","3.3","IOBANK")
+design.set_device_property("BR3_BR4","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("BR3_BR4","BR3_BR4_MODE_SEL","BR3_BR4")
+design.set_device_property("BR3_BR4","VOLTAGE","3.3","IOBANK")
+design.set_device_property("TL1_TL5","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("TL1_TL5","TL1_TL5_MODE_SEL","TL1_TL5")
+design.set_device_property("TL1_TL5","VOLTAGE","3.3","IOBANK")
+design.set_device_property("TR0","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("TR0","TR0_MODE_SEL","TR0")
+design.set_device_property("TR0","VOLTAGE","3.3","IOBANK")
+design.set_device_property("TR1","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("TR1","TR1_MODE_SEL","TR1")
+design.set_device_property("TR1","VOLTAGE","3.3","IOBANK")
+design.set_device_property("TR2","DYNAMIC_VOLTAGE","0","IOBANK")
+design.set_mode_sel_name("TR2","TR2_MODE_SEL","TR2")
+design.set_device_property("TR2","VOLTAGE","3.3","IOBANK")
+design.set_device_property("seu","ENA_DETECT","0","SEU")
+design.set_device_property("cfg","CBSEL_PIN","cfg_CBSEL","RU")
+design.set_device_property("cfg","CLK_PIN","","RU")
+design.set_device_property("cfg","CONFIG_PIN","cfg_CONFIG","RU")
+design.set_device_property("cfg","ENA_PIN","cfg_ENA","RU")
+design.set_device_property("cfg","ERROR_PIN","cfg_ERROR","RU")
+design.set_device_property("cfg","INVERT_CLK_EN","0","RU")
+design.set_device_property("cfg","RECONFIG_EN","0","RU")
+design.set_device_property("cfg","REMOTE_UPDATE_RETRIES","3","RU")
+design.set_device_property("Bottom","CORE0_PIN","","CLKMUX")
+design.set_device_property("Bottom","CORE1_PIN","","CLKMUX")
+design.set_device_property("Bottom","CORE2_PIN","","CLKMUX")
+design.set_device_property("Bottom","CORE3_PIN","","CLKMUX")
+design.set_device_property("Bottom","DYN_MUX0_EN","0","CLKMUX")
+design.set_device_property("Bottom","DYN_MUX7_EN","0","CLKMUX")
+design.set_device_property("Left","CORE0_PIN","","CLKMUX")
+design.set_device_property("Left","CORE1_PIN","","CLKMUX")
+design.set_device_property("Left","CORE2_PIN","","CLKMUX")
+design.set_device_property("Left","CORE3_PIN","","CLKMUX")
+design.set_device_property("Left","DYN_MUX0_EN","0","CLKMUX")
+design.set_device_property("Left","DYN_MUX7_EN","0","CLKMUX")
+design.set_device_property("Right","CORE0_PIN","","CLKMUX")
+design.set_device_property("Right","CORE1_PIN","","CLKMUX")
+design.set_device_property("Right","CORE2_PIN","","CLKMUX")
+design.set_device_property("Right","CORE3_PIN","","CLKMUX")
+design.set_device_property("Right","DYN_MUX0_EN","0","CLKMUX")
+design.set_device_property("Right","DYN_MUX7_EN","0","CLKMUX")
+design.set_device_property("Top","CORE0_PIN","","CLKMUX")
+design.set_device_property("Top","CORE1_PIN","","CLKMUX")
+design.set_device_property("Top","CORE2_PIN","","CLKMUX")
+design.set_device_property("Top","CORE3_PIN","","CLKMUX")
+design.set_device_property("Top","DYN_MUX0_EN","0","CLKMUX")
+design.set_device_property("Top","DYN_MUX7_EN","0","CLKMUX")
+design.set_gpio_unused_state("INPUT_WEAK_PULLUP")
+
+# Create instance
+design.create_block("soc_jtag_inst1","JTAG")
+design.create_block("qcrv32_inst1","SOC")
+
+# Set property, non-defaults
+design.set_property("soc_jtag_inst1","NAME","soc_jtag_inst1","JTAG")
+design.set_property("soc_jtag_inst1","RESOURCE","JTAG_USER1","JTAG")
+design.set_property("soc_jtag_inst1","CAPTURE","ut_jtagCtrl_capture","JTAG")
+design.set_property("soc_jtag_inst1","DRCK","","JTAG")
+design.set_property("soc_jtag_inst1","RESET","ut_jtagCtrl_reset","JTAG")
+design.set_property("soc_jtag_inst1","RUNTEST","","JTAG")
+design.set_property("soc_jtag_inst1","SEL","ut_jtagCtrl_enable","JTAG")
+design.set_property("soc_jtag_inst1","SHIFT","ut_jtagCtrl_shift","JTAG")
+design.set_property("soc_jtag_inst1","TCK","jtagCtrl_tck","JTAG")
+design.set_property("soc_jtag_inst1","TDI","ut_jtagCtrl_tdi","JTAG")
+design.set_property("soc_jtag_inst1","TMS","","JTAG")
+design.set_property("soc_jtag_inst1","UPDATE","ut_jtagCtrl_update","JTAG")
+design.set_property("soc_jtag_inst1","TDO","ut_jtagCtrl_tdo","JTAG")
+design.set_property("qcrv32_inst1","AXIAINTERRUPT_PIN","axiAInterrupt","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARADDR_PIN","axiA_araddr","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARBURST_PIN","axiA_arburst","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARCACHE_PIN","axiA_arcache","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARLEN_PIN","axiA_arlen","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARLOCK_PIN","axiA_arlock","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARPROT_PIN","axiA_arprot","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARQOS_PIN","axiA_arqos","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARREADY_PIN","axiA_arready","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARREGION_PIN","axiA_arregion","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARSIZE_PIN","axiA_arsize","SOC")
+design.set_property("qcrv32_inst1","AXIA_ARVALID_PIN","axiA_arvalid","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWADDR_PIN","axiA_awaddr","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWBURST_PIN","axiA_awburst","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWCACHE_PIN","axiA_awcache","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWLEN_PIN","axiA_awlen","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWLOCK_PIN","axiA_awlock","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWPROT_PIN","axiA_awprot","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWQOS_PIN","axiA_awqos","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWREADY_PIN","axiA_awready","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWREGION_PIN","axiA_awregion","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWSIZE_PIN","axiA_awsize","SOC")
+design.set_property("qcrv32_inst1","AXIA_AWVALID_PIN","axiA_awvalid","SOC")
+design.set_property("qcrv32_inst1","AXIA_BREADY_PIN","axiA_bready","SOC")
+design.set_property("qcrv32_inst1","AXIA_BRESP_PIN","axiA_bresp","SOC")
+design.set_property("qcrv32_inst1","AXIA_BVALID_PIN","axiA_bvalid","SOC")
+design.set_property("qcrv32_inst1","AXIA_RDATA_PIN","axiA_rdata","SOC")
+design.set_property("qcrv32_inst1","AXIA_RLAST_PIN","axiA_rlast","SOC")
+design.set_property("qcrv32_inst1","AXIA_RREADY_PIN","axiA_rready","SOC")
+design.set_property("qcrv32_inst1","AXIA_RRESP_PIN","axiA_rresp","SOC")
+design.set_property("qcrv32_inst1","AXIA_RVALID_PIN","axiA_rvalid","SOC")
+design.set_property("qcrv32_inst1","AXIA_WDATA_PIN","axiA_wdata","SOC")
+design.set_property("qcrv32_inst1","AXIA_WLAST_PIN","axiA_wlast","SOC")
+design.set_property("qcrv32_inst1","AXIA_WREADY_PIN","axiA_wready","SOC")
+design.set_property("qcrv32_inst1","AXIA_WSTRB_PIN","axiA_wstrb","SOC")
+design.set_property("qcrv32_inst1","AXIA_WVALID_PIN","axiA_wvalid","SOC")
+design.set_property("qcrv32_inst1","AXI_MASTER_EN","1","SOC")
+design.set_property("qcrv32_inst1","AXI_SLAVE_EN","1","SOC")
+design.set_property("qcrv32_inst1","CPU0_CUSTOMINSTRUCTION_CMD_READY_PIN","cpu0_customInstruction_cmd_ready","SOC")
+design.set_property("qcrv32_inst1","CPU0_CUSTOMINSTRUCTION_CMD_VALID_PIN","cpu0_customInstruction_cmd_valid","SOC")
+design.set_property("qcrv32_inst1","CPU0_CUSTOMINSTRUCTION_FUNCTION_ID_PIN","cpu0_customInstruction_function_id","SOC")
+design.set_property("qcrv32_inst1","CPU0_CUSTOMINSTRUCTION_INPUTS_0_PIN","cpu0_customInstruction_inputs_0","SOC")
+design.set_property("qcrv32_inst1","CPU0_CUSTOMINSTRUCTION_INPUTS_1_PIN","cpu0_customInstruction_inputs_1","SOC")
+design.set_property("qcrv32_inst1","CPU0_CUSTOMINSTRUCTION_OUTPUTS_0_PIN","cpu0_customInstruction_outputs_0","SOC")
+design.set_property("qcrv32_inst1","CPU0_CUSTOMINSTRUCTION_RSP_READY_PIN","cpu0_customInstruction_rsp_ready","SOC")
+design.set_property("qcrv32_inst1","CPU0_CUSTOMINSTRUCTION_RSP_VALID_PIN","cpu0_customInstruction_rsp_valid","SOC")
+design.set_property("qcrv32_inst1","CPU1_CUSTOMINSTRUCTION_CMD_READY_PIN","cpu1_customInstruction_cmd_ready","SOC")
+design.set_property("qcrv32_inst1","CPU1_CUSTOMINSTRUCTION_CMD_VALID_PIN","cpu1_customInstruction_cmd_valid","SOC")
+design.set_property("qcrv32_inst1","CPU1_CUSTOMINSTRUCTION_FUNCTION_ID_PIN","cpu1_customInstruction_function_id","SOC")
+design.set_property("qcrv32_inst1","CPU1_CUSTOMINSTRUCTION_INPUTS_0_PIN","cpu1_customInstruction_inputs_0","SOC")
+design.set_property("qcrv32_inst1","CPU1_CUSTOMINSTRUCTION_INPUTS_1_PIN","cpu1_customInstruction_inputs_1","SOC")
+design.set_property("qcrv32_inst1","CPU1_CUSTOMINSTRUCTION_OUTPUTS_0_PIN","cpu1_customInstruction_outputs_0","SOC")
+design.set_property("qcrv32_inst1","CPU1_CUSTOMINSTRUCTION_RSP_READY_PIN","cpu1_customInstruction_rsp_ready","SOC")
+design.set_property("qcrv32_inst1","CPU1_CUSTOMINSTRUCTION_RSP_VALID_PIN","cpu1_customInstruction_rsp_valid","SOC")
+design.set_property("qcrv32_inst1","CPU2_CUSTOMINSTRUCTION_CMD_READY_PIN","cpu2_customInstruction_cmd_ready","SOC")
+design.set_property("qcrv32_inst1","CPU2_CUSTOMINSTRUCTION_CMD_VALID_PIN","cpu2_customInstruction_cmd_valid","SOC")
+design.set_property("qcrv32_inst1","CPU2_CUSTOMINSTRUCTION_FUNCTION_ID_PIN","cpu2_customInstruction_function_id","SOC")
+design.set_property("qcrv32_inst1","CPU2_CUSTOMINSTRUCTION_INPUTS_0_PIN","cpu2_customInstruction_inputs_0","SOC")
+design.set_property("qcrv32_inst1","CPU2_CUSTOMINSTRUCTION_INPUTS_1_PIN","cpu2_customInstruction_inputs_1","SOC")
+design.set_property("qcrv32_inst1","CPU2_CUSTOMINSTRUCTION_OUTPUTS_0_PIN","cpu2_customInstruction_outputs_0","SOC")
+design.set_property("qcrv32_inst1","CPU2_CUSTOMINSTRUCTION_RSP_READY_PIN","cpu2_customInstruction_rsp_ready","SOC")
+design.set_property("qcrv32_inst1","CPU2_CUSTOMINSTRUCTION_RSP_VALID_PIN","cpu2_customInstruction_rsp_valid","SOC")
+design.set_property("qcrv32_inst1","CPU3_CUSTOMINSTRUCTION_CMD_READY_PIN","cpu3_customInstruction_cmd_ready","SOC")
+design.set_property("qcrv32_inst1","CPU3_CUSTOMINSTRUCTION_CMD_VALID_PIN","cpu3_customInstruction_cmd_valid","SOC")
+design.set_property("qcrv32_inst1","CPU3_CUSTOMINSTRUCTION_FUNCTION_ID_PIN","cpu3_customInstruction_function_id","SOC")
+design.set_property("qcrv32_inst1","CPU3_CUSTOMINSTRUCTION_INPUTS_0_PIN","cpu3_customInstruction_inputs_0","SOC")
+design.set_property("qcrv32_inst1","CPU3_CUSTOMINSTRUCTION_INPUTS_1_PIN","cpu3_customInstruction_inputs_1","SOC")
+design.set_property("qcrv32_inst1","CPU3_CUSTOMINSTRUCTION_OUTPUTS_0_PIN","cpu3_customInstruction_outputs_0","SOC")
+design.set_property("qcrv32_inst1","CPU3_CUSTOMINSTRUCTION_RSP_READY_PIN","cpu3_customInstruction_rsp_ready","SOC")
+design.set_property("qcrv32_inst1","CPU3_CUSTOMINSTRUCTION_RSP_VALID_PIN","cpu3_customInstruction_rsp_valid","SOC")
+design.set_property("qcrv32_inst1","CUSTOM_INSTRUCTION_0_EN","1","SOC")
+design.set_property("qcrv32_inst1","CUSTOM_INSTRUCTION_1_EN","1","SOC")
+design.set_property("qcrv32_inst1","CUSTOM_INSTRUCTION_2_EN","1","SOC")
+design.set_property("qcrv32_inst1","CUSTOM_INSTRUCTION_3_EN","1","SOC")
+design.set_property("qcrv32_inst1","IO_ASYNCRESET_PIN","io_asyncReset","SOC")
+design.set_property("qcrv32_inst1","IO_CFUCLK_INVERT_EN","0","SOC")
+design.set_property("qcrv32_inst1","IO_CFUCLK_PIN","io_cfuClk","SOC")
+design.set_property("qcrv32_inst1","IO_CFURESET_PIN","io_cfuReset","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_PAYLOAD_ADDR_PIN","io_ddrMasters_0_ar_payload_addr","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_PAYLOAD_BURST_PIN","io_ddrMasters_0_ar_payload_burst","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_PAYLOAD_CACHE_PIN","io_ddrMasters_0_ar_payload_cache","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_PAYLOAD_ID_PIN","io_ddrMasters_0_ar_payload_id","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_PAYLOAD_LEN_PIN","io_ddrMasters_0_ar_payload_len","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_PAYLOAD_LOCK_PIN","io_ddrMasters_0_ar_payload_lock","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_PAYLOAD_PROT_PIN","io_ddrMasters_0_ar_payload_prot","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_PAYLOAD_QOS_PIN","io_ddrMasters_0_ar_payload_qos","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_PAYLOAD_REGION_PIN","io_ddrMasters_0_ar_payload_region","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_PAYLOAD_SIZE_PIN","io_ddrMasters_0_ar_payload_size","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_READY_PIN","io_ddrMasters_0_ar_ready","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AR_VALID_PIN","io_ddrMasters_0_ar_valid","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_ADDR_PIN","io_ddrMasters_0_aw_payload_addr","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_ALLSTRB_PIN","io_ddrMasters_0_aw_payload_allStrb","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_BURST_PIN","io_ddrMasters_0_aw_payload_burst","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_CACHE_PIN","io_ddrMasters_0_aw_payload_cache","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_ID_PIN","io_ddrMasters_0_aw_payload_id","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_LEN_PIN","io_ddrMasters_0_aw_payload_len","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_LOCK_PIN","io_ddrMasters_0_aw_payload_lock","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_PROT_PIN","io_ddrMasters_0_aw_payload_prot","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_QOS_PIN","io_ddrMasters_0_aw_payload_qos","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_REGION_PIN","io_ddrMasters_0_aw_payload_region","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_PAYLOAD_SIZE_PIN","io_ddrMasters_0_aw_payload_size","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_READY_PIN","io_ddrMasters_0_aw_ready","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_AW_VALID_PIN","io_ddrMasters_0_aw_valid","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_B_PAYLOAD_ID_PIN","io_ddrMasters_0_b_payload_id","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_B_PAYLOAD_RESP_PIN","io_ddrMasters_0_b_payload_resp","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_B_READY_PIN","io_ddrMasters_0_b_ready","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_B_VALID_PIN","io_ddrMasters_0_b_valid","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_CLK_INVERT_EN","0","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_CLK_PIN","io_ddrMasters_0_clk","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_RESET_PIN","io_ddrMasters_0_reset","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_R_PAYLOAD_DATA_PIN","io_ddrMasters_0_r_payload_data","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_R_PAYLOAD_ID_PIN","io_ddrMasters_0_r_payload_id","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_R_PAYLOAD_LAST_PIN","io_ddrMasters_0_r_payload_last","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_R_PAYLOAD_RESP_PIN","io_ddrMasters_0_r_payload_resp","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_R_READY_PIN","io_ddrMasters_0_r_ready","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_R_VALID_PIN","io_ddrMasters_0_r_valid","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_W_PAYLOAD_DATA_PIN","io_ddrMasters_0_w_payload_data","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_W_PAYLOAD_LAST_PIN","io_ddrMasters_0_w_payload_last","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_W_PAYLOAD_STRB_PIN","io_ddrMasters_0_w_payload_strb","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_W_READY_PIN","io_ddrMasters_0_w_ready","SOC")
+design.set_property("qcrv32_inst1","IO_DDRMASTERS_0_W_VALID_PIN","io_ddrMasters_0_w_valid","SOC")
+design.set_property("qcrv32_inst1","IO_JTAG_TCK_INVERT_EN","0","SOC")
+design.set_property("qcrv32_inst1","IO_JTAG_TCK_PIN","","SOC")
+design.set_property("qcrv32_inst1","IO_JTAG_TDI_PIN","","SOC")
+design.set_property("qcrv32_inst1","IO_JTAG_TDO_PIN","","SOC")
+design.set_property("qcrv32_inst1","IO_JTAG_TMS_PIN","","SOC")
+design.set_property("qcrv32_inst1","IO_PERIPHERALCLK_INVERT_EN","0","SOC")
+design.set_property("qcrv32_inst1","IO_PERIPHERALCLK_PIN","io_peripheralClk","SOC")
+design.set_property("qcrv32_inst1","IO_PERIPHERALRESET_PIN","io_peripheralReset","SOC")
+design.set_property("qcrv32_inst1","IO_SYSTEMRESET_PIN","io_systemReset","SOC")
+design.set_property("qcrv32_inst1","JTAGCTRL_CAPTURE_PIN","jtagCtrl_capture","SOC")
+design.set_property("qcrv32_inst1","JTAGCTRL_ENABLE_PIN","jtagCtrl_enable","SOC")
+design.set_property("qcrv32_inst1","JTAGCTRL_RESET_PIN","jtagCtrl_reset","SOC")
+design.set_property("qcrv32_inst1","JTAGCTRL_SHIFT_PIN","jtagCtrl_shift","SOC")
+design.set_property("qcrv32_inst1","JTAGCTRL_TCK_INVERT_EN","0","SOC")
+design.set_property("qcrv32_inst1","JTAGCTRL_TCK_PIN","jtagCtrl_tck","SOC")
+design.set_property("qcrv32_inst1","JTAGCTRL_TDI_PIN","jtagCtrl_tdi","SOC")
+design.set_property("qcrv32_inst1","JTAGCTRL_TDO_PIN","jtagCtrl_tdo","SOC")
+design.set_property("qcrv32_inst1","JTAGCTRL_UPDATE_PIN","jtagCtrl_update","SOC")
+design.set_property("qcrv32_inst1","JTAG_TYPE","FPGA","SOC")
+design.set_property("qcrv32_inst1","MEM_CLK_SOURCE","Clock 0","SOC")
+design.set_property("qcrv32_inst1","OCR_FILE_PATH","EfxSapphireHpSoc_bootloader/default_bootloader.hex","SOC")
+design.set_property("qcrv32_inst1","PIPELINE_SOC_AXI_MEM_INTERFACE_EN","0","SOC")
+design.set_property("qcrv32_inst1","SYS_CLK_SOURCE","Clock 0","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTA_PIN","userInterruptA","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTB_PIN","userInterruptB","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTC_PIN","userInterruptC","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTD_PIN","userInterruptD","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTE_PIN","userInterruptE","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTF_PIN","userInterruptF","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTG_PIN","userInterruptG","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTH_PIN","userInterruptH","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTI_PIN","userInterruptI","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTJ_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTK_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTL_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTM_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTN_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTO_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTP_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTQ_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTR_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTS_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTT_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTU_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTV_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTW_PIN","","SOC")
+design.set_property("qcrv32_inst1","USERINTERRUPTX_PIN","","SOC")
+design.set_property("qcrv32_inst1","WRITEBUFFER_SOC_AXI_INTERFACE_EN","0","SOC")
+
+# Set resource assignment
+design.assign_resource("soc_jtag_inst1","JTAG_USER1","JTAG")
+design.assign_resource("qcrv32_inst1","SOC_0","SOC")
diff --git a/Ti375C529_devkit/Ti375C529_devkit.peri.xml b/Ti375C529_devkit/Ti375C529_devkit.peri.xml
new file mode 100644
index 0000000..7e3cac2
--- /dev/null
+++ b/Ti375C529_devkit/Ti375C529_devkit.peri.xml
@@ -0,0 +1,853 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ti375C529_devkit/Ti375C529_devkit.xml b/Ti375C529_devkit/Ti375C529_devkit.xml
new file mode 100644
index 0000000..287b280
--- /dev/null
+++ b/Ti375C529_devkit/Ti375C529_devkit.xml
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ti375C529_devkit/constraints.sdc b/Ti375C529_devkit/constraints.sdc
new file mode 100644
index 0000000..7e3647b
--- /dev/null
+++ b/Ti375C529_devkit/constraints.sdc
@@ -0,0 +1,369 @@
+
+# Auto-generated by Interface Designer
+#
+# WARNING: Any manual changes made to this file will be lost when generating constraints.
+
+# Efinity Interface Designer SDC
+# Version: 2024.M.98
+# Date: 2024-04-13 10:16
+
+# Copyright (C) 2013 - 2024 Efinix Inc. All rights reserved.
+
+# Device: Ti375C529
+# Project: Ti375C529_devkit
+# Timing Model: C4 (preliminary)
+# NOTE: The timing data is not final
+
+# PLL Constraints
+#################
+create_clock -period 10.0000 io_sysFbClk
+create_clock -period 5.0000 io_peripheralClk
+create_clock -period 4.0000 io_ddrMasters_0_clk
+create_clock -period 8.0000 io_cfuClk
+create_clock -period 10.0000 sd_base_clk
+create_clock -period 8.0000 rgmii_rxc
+create_clock -waveform {2.0000 6.0000} -period 8.0000 io_tseClk_90
+create_clock -period 8.0000 io_tseClk
+
+set_clock_groups -exclusive -group {rgmii_rxc io_tseClk_90 io_tseClk} -group {sd_base_clk} -group {io_cfuClk} -group {io_peripheralClk} -group {io_ddrMasters_0_clk}
+
+# GPIO Constraints
+####################
+set_output_delay -clock sd_base_clk -reference_pin [get_ports {sd_base_clk~CLKOUT~347~2}] -max 0.079 [get_ports {sd_clk_hi}]
+set_output_delay -clock sd_base_clk -reference_pin [get_ports {sd_base_clk~CLKOUT~347~2}] -min -0.045 [get_ports {sd_clk_hi}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {io_gpio_sw_n}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {io_gpio_sw_n}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {system_uart_0_io_rxd}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {system_uart_0_io_rxd}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_uart_0_io_txd}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_uart_0_io_txd}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_read[1]}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_read[1]}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_write[1]}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_write[1]}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_writeEnable[1]}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_writeEnable[1]}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_read[2]}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_read[2]}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_write[2]}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_write[2]}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_writeEnable[2]}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_writeEnable[2]}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {system_i2c_0_io_scl_read}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {system_i2c_0_io_scl_read}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_i2c_0_io_scl_write}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_i2c_0_io_scl_write}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_i2c_0_io_scl_writeEnable}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_i2c_0_io_scl_writeEnable}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {system_i2c_0_io_sda_read}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {system_i2c_0_io_sda_read}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_i2c_0_io_sda_write}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_i2c_0_io_sda_write}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_i2c_0_io_sda_writeEnable}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_i2c_0_io_sda_writeEnable}]
+
+# JTAG Constraints
+####################
+create_clock -period 100 [get_ports {jtagCtrl_tck}]
+set_output_delay -clock jtagCtrl_tck -max 0.117 [get_ports {ut_jtagCtrl_tdo}]
+set_output_delay -clock jtagCtrl_tck -min -0.075 [get_ports {ut_jtagCtrl_tdo}]
+set_input_delay -clock_fall -clock jtagCtrl_tck -max 0.280 [get_ports {ut_jtagCtrl_capture}]
+set_input_delay -clock_fall -clock jtagCtrl_tck -min 0.187 [get_ports {ut_jtagCtrl_capture}]
+set_input_delay -clock_fall -clock jtagCtrl_tck -max 0.280 [get_ports {ut_jtagCtrl_reset}]
+set_input_delay -clock_fall -clock jtagCtrl_tck -min 0.187 [get_ports {ut_jtagCtrl_reset}]
+set_input_delay -clock_fall -clock jtagCtrl_tck -max 0.243 [get_ports {ut_jtagCtrl_enable}]
+set_input_delay -clock_fall -clock jtagCtrl_tck -min 0.162 [get_ports {ut_jtagCtrl_enable}]
+set_input_delay -clock_fall -clock jtagCtrl_tck -max 0.280 [get_ports {ut_jtagCtrl_update}]
+set_input_delay -clock_fall -clock jtagCtrl_tck -min 0.187 [get_ports {ut_jtagCtrl_update}]
+set_input_delay -clock_fall -clock jtagCtrl_tck -max 0.337 [get_ports {ut_jtagCtrl_shift}]
+set_input_delay -clock_fall -clock jtagCtrl_tck -min 0.225 [get_ports {ut_jtagCtrl_shift}]
+# JTAG Constraints (extra... not used by current Efinity debug tools)
+# Create separate clock groups for JTAG clocks. Remove DRCK clock from the list below if it is not defined.
+# set_clock_groups -asynchronous -group {jtagCtrl_tck}
+
+# HSIO GPIO Constraints
+#########################
+set_input_delay -clock rgmii_rxc -reference_pin [get_ports {rgmii_rxc~CLKOUT~391~964}] -max 0.414 [get_ports {rgmii_rx_ctl_LO rgmii_rx_ctl_HI}]
+set_input_delay -clock rgmii_rxc -reference_pin [get_ports {rgmii_rxc~CLKOUT~391~964}] -min 0.276 [get_ports {rgmii_rx_ctl_LO rgmii_rx_ctl_HI}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {rgmii_rxc_phy}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {rgmii_rxc_phy}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {rgmii_rxc_slow}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {rgmii_rxc_slow}]
+set_input_delay -clock rgmii_rxc -reference_pin [get_ports {rgmii_rxc~CLKOUT~395~964}] -max 0.414 [get_ports {rgmii_rxd_LO[0] rgmii_rxd_HI[0]}]
+set_input_delay -clock rgmii_rxc -reference_pin [get_ports {rgmii_rxc~CLKOUT~395~964}] -min 0.276 [get_ports {rgmii_rxd_LO[0] rgmii_rxd_HI[0]}]
+set_input_delay -clock rgmii_rxc -reference_pin [get_ports {rgmii_rxc~CLKOUT~397~964}] -max 0.414 [get_ports {rgmii_rxd_LO[1] rgmii_rxd_HI[1]}]
+set_input_delay -clock rgmii_rxc -reference_pin [get_ports {rgmii_rxc~CLKOUT~397~964}] -min 0.276 [get_ports {rgmii_rxd_LO[1] rgmii_rxd_HI[1]}]
+set_input_delay -clock rgmii_rxc -reference_pin [get_ports {rgmii_rxc~CLKOUT~408~964}] -max 0.414 [get_ports {rgmii_rxd_LO[2] rgmii_rxd_HI[2]}]
+set_input_delay -clock rgmii_rxc -reference_pin [get_ports {rgmii_rxc~CLKOUT~408~964}] -min 0.276 [get_ports {rgmii_rxd_LO[2] rgmii_rxd_HI[2]}]
+set_input_delay -clock rgmii_rxc -reference_pin [get_ports {rgmii_rxc~CLKOUT~412~963}] -max 0.414 [get_ports {rgmii_rxd_LO[3] rgmii_rxd_HI[3]}]
+set_input_delay -clock rgmii_rxc -reference_pin [get_ports {rgmii_rxc~CLKOUT~412~963}] -min 0.276 [get_ports {rgmii_rxd_LO[3] rgmii_rxd_HI[3]}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {sd_cd_n}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {sd_cd_n}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {io_ddrMasters_memCheck_pass}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {io_ddrMasters_memCheck_pass}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {phy_mdc}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {phy_mdc}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~352~963}] -max 0.263 [get_ports {rgmii_tx_ctl_LO rgmii_tx_ctl_HI}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~352~963}] -min -0.140 [get_ports {rgmii_tx_ctl_LO rgmii_tx_ctl_HI}]
+set_output_delay -clock io_tseClk_90 -reference_pin [get_ports {io_tseClk_90~CLKOUT~359~964}] -max 0.263 [get_ports {rgmii_txc_LO rgmii_txc_HI}]
+set_output_delay -clock io_tseClk_90 -reference_pin [get_ports {io_tseClk_90~CLKOUT~359~964}] -min -0.140 [get_ports {rgmii_txc_LO rgmii_txc_HI}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~358~963}] -max 0.263 [get_ports {rgmii_txd_LO[0] rgmii_txd_HI[0]}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~358~963}] -min -0.140 [get_ports {rgmii_txd_LO[0] rgmii_txd_HI[0]}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~364~963}] -max 0.263 [get_ports {rgmii_txd_LO[1] rgmii_txd_HI[1]}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~364~963}] -min -0.140 [get_ports {rgmii_txd_LO[1] rgmii_txd_HI[1]}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~365~964}] -max 0.263 [get_ports {rgmii_txd_LO[2] rgmii_txd_HI[2]}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~365~964}] -min -0.140 [get_ports {rgmii_txd_LO[2] rgmii_txd_HI[2]}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~376~964}] -max 0.263 [get_ports {rgmii_txd_LO[3] rgmii_txd_HI[3]}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~376~964}] -min -0.140 [get_ports {rgmii_txd_LO[3] rgmii_txd_HI[3]}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~418~2}] -max 0.263 [get_ports {system_spi_0_io_sclk_write}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~418~2}] -min -0.140 [get_ports {system_spi_0_io_sclk_write}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~407~2}] -max 0.263 [get_ports {system_spi_0_io_ss[0]}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~407~2}] -min -0.140 [get_ports {system_spi_0_io_ss[0]}]
+set_input_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~381~964}] -max 0.414 [get_ports {phy_mdi}]
+set_input_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~381~964}] -min 0.276 [get_ports {phy_mdi}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~384~964}] -max 0.263 [get_ports {phy_mdo}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~384~964}] -min -0.140 [get_ports {phy_mdo}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~384~964}] -max 0.263 [get_ports {phy_mdo_en}]
+set_output_delay -clock io_tseClk -reference_pin [get_ports {io_tseClk~CLKOUT~384~964}] -min -0.140 [get_ports {phy_mdo_en}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_read[0]}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_read[0]}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_write[0]}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_write[0]}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_writeEnable[0]}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_writeEnable[0]}]
+# set_input_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_read[3]}]
+# set_input_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_read[3]}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_write[3]}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_write[3]}]
+# set_output_delay -clock [-reference_pin ] -max [get_ports {system_gpio_0_io_writeEnable[3]}]
+# set_output_delay -clock [-reference_pin ] -min [get_ports {system_gpio_0_io_writeEnable[3]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~418~1}] -max 0.414 [get_ports {system_spi_0_io_data_0_read}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~418~1}] -min 0.276 [get_ports {system_spi_0_io_data_0_read}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~422~2}] -max 0.263 [get_ports {system_spi_0_io_data_0_write}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~422~2}] -min -0.140 [get_ports {system_spi_0_io_data_0_write}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~422~2}] -max 0.263 [get_ports {system_spi_0_io_data_0_writeEnable}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~422~2}] -min -0.140 [get_ports {system_spi_0_io_data_0_writeEnable}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~425~1}] -max 0.414 [get_ports {system_spi_0_io_data_1_read}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~425~1}] -min 0.276 [get_ports {system_spi_0_io_data_1_read}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~420~1}] -max 0.263 [get_ports {system_spi_0_io_data_1_write}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~420~1}] -min -0.140 [get_ports {system_spi_0_io_data_1_write}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~420~1}] -max 0.263 [get_ports {system_spi_0_io_data_1_writeEnable}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~420~1}] -min -0.140 [get_ports {system_spi_0_io_data_1_writeEnable}]
+
+# QCRV32 Constraints
+#######################
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.701 [get_ports {io_ddrMasters_0_reset}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.340 [get_ports {io_ddrMasters_0_reset}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.196 [get_ports {io_ddrMasters_0_ar_payload_addr[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.071 [get_ports {io_ddrMasters_0_ar_payload_addr[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.217 [get_ports {io_ddrMasters_0_ar_payload_burst[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.034 [get_ports {io_ddrMasters_0_ar_payload_burst[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.222 [get_ports {io_ddrMasters_0_ar_payload_cache[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.020 [get_ports {io_ddrMasters_0_ar_payload_cache[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.247 [get_ports {io_ddrMasters_0_ar_payload_id[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.038 [get_ports {io_ddrMasters_0_ar_payload_id[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.251 [get_ports {io_ddrMasters_0_ar_payload_len[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.008 [get_ports {io_ddrMasters_0_ar_payload_len[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.226 [get_ports {io_ddrMasters_0_ar_payload_lock}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.054 [get_ports {io_ddrMasters_0_ar_payload_lock}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.265 [get_ports {io_ddrMasters_0_ar_payload_prot[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.006 [get_ports {io_ddrMasters_0_ar_payload_prot[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.191 [get_ports {io_ddrMasters_0_ar_payload_qos[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.013 [get_ports {io_ddrMasters_0_ar_payload_qos[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.259 [get_ports {io_ddrMasters_0_ar_payload_region[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.018 [get_ports {io_ddrMasters_0_ar_payload_region[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.219 [get_ports {io_ddrMasters_0_ar_payload_size[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.007 [get_ports {io_ddrMasters_0_ar_payload_size[*]}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 1.064 [get_ports {io_ddrMasters_0_ar_ready}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.544 [get_ports {io_ddrMasters_0_ar_ready}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.025 [get_ports {io_ddrMasters_0_ar_valid}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.051 [get_ports {io_ddrMasters_0_ar_valid}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 1.031 [get_ports {io_ddrMasters_0_r_payload_data[*]}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.347 [get_ports {io_ddrMasters_0_r_payload_data[*]}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.844 [get_ports {io_ddrMasters_0_r_payload_last}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.387 [get_ports {io_ddrMasters_0_r_payload_last}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.426 [get_ports {io_ddrMasters_0_r_ready}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.095 [get_ports {io_ddrMasters_0_r_ready}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.965 [get_ports {io_ddrMasters_0_r_valid}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.508 [get_ports {io_ddrMasters_0_r_valid}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.372 [get_ports {io_ddrMasters_0_aw_payload_addr[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.005 [get_ports {io_ddrMasters_0_aw_payload_addr[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.296 [get_ports {io_ddrMasters_0_aw_payload_allStrb}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.016 [get_ports {io_ddrMasters_0_aw_payload_allStrb}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.217 [get_ports {io_ddrMasters_0_aw_payload_burst[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.002 [get_ports {io_ddrMasters_0_aw_payload_burst[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.217 [get_ports {io_ddrMasters_0_aw_payload_cache[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.027 [get_ports {io_ddrMasters_0_aw_payload_cache[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.238 [get_ports {io_ddrMasters_0_aw_payload_id[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.001 [get_ports {io_ddrMasters_0_aw_payload_id[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.280 [get_ports {io_ddrMasters_0_aw_payload_len[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.003 [get_ports {io_ddrMasters_0_aw_payload_len[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.205 [get_ports {io_ddrMasters_0_aw_payload_lock}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.022 [get_ports {io_ddrMasters_0_aw_payload_lock}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.178 [get_ports {io_ddrMasters_0_aw_payload_prot[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.039 [get_ports {io_ddrMasters_0_aw_payload_prot[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.243 [get_ports {io_ddrMasters_0_aw_payload_qos[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.053 [get_ports {io_ddrMasters_0_aw_payload_qos[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.253 [get_ports {io_ddrMasters_0_aw_payload_region[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.008 [get_ports {io_ddrMasters_0_aw_payload_region[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.263 [get_ports {io_ddrMasters_0_aw_payload_size[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.007 [get_ports {io_ddrMasters_0_aw_payload_size[*]}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 1.213 [get_ports {io_ddrMasters_0_aw_ready}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.610 [get_ports {io_ddrMasters_0_aw_ready}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.294 [get_ports {io_ddrMasters_0_aw_valid}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.058 [get_ports {io_ddrMasters_0_aw_valid}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.289 [get_ports {io_ddrMasters_0_w_payload_data[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.105 [get_ports {io_ddrMasters_0_w_payload_data[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.042 [get_ports {io_ddrMasters_0_w_payload_last}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.053 [get_ports {io_ddrMasters_0_w_payload_last}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.130 [get_ports {io_ddrMasters_0_w_payload_strb[*]}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.070 [get_ports {io_ddrMasters_0_w_payload_strb[*]}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 1.193 [get_ports {io_ddrMasters_0_w_ready}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.616 [get_ports {io_ddrMasters_0_w_ready}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.118 [get_ports {io_ddrMasters_0_w_valid}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.038 [get_ports {io_ddrMasters_0_w_valid}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.196 [get_ports {io_ddrMasters_0_b_ready}]
+set_output_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min -0.012 [get_ports {io_ddrMasters_0_b_ready}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -max 0.991 [get_ports {io_ddrMasters_0_b_valid}]
+set_input_delay -clock io_ddrMasters_0_clk -reference_pin [get_ports {io_ddrMasters_0_clk~CLKOUT~38~2}] -min 0.514 [get_ports {io_ddrMasters_0_b_valid}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.766 [get_ports {axiAInterrupt}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.322 [get_ports {axiAInterrupt}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 1.089 [get_ports {axiA_araddr[*]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.425 [get_ports {axiA_araddr[*]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 1.134 [get_ports {axiA_arlen[*]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.484 [get_ports {axiA_arlen[*]}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.285 [get_ports {axiA_arready}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.074 [get_ports {axiA_arready}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.824 [get_ports {axiA_arvalid}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.444 [get_ports {axiA_arvalid}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.660 [get_ports {axiA_rdata[*]}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.018 [get_ports {axiA_rdata[*]}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.384 [get_ports {axiA_rlast}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.068 [get_ports {axiA_rlast}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 1.305 [get_ports {axiA_rready}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.647 [get_ports {axiA_rready}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.460 [get_ports {axiA_rresp[*]}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.113 [get_ports {axiA_rresp[*]}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.344 [get_ports {axiA_rvalid}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.071 [get_ports {axiA_rvalid}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.710 [get_ports {axiA_awaddr[*]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.344 [get_ports {axiA_awaddr[*]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.753 [get_ports {axiA_awlen[*]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.363 [get_ports {axiA_awlen[*]}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.156 [get_ports {axiA_awready}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min -0.017 [get_ports {axiA_awready}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.674 [get_ports {axiA_awvalid}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.354 [get_ports {axiA_awvalid}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 1.000 [get_ports {axiA_wdata[*]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.373 [get_ports {axiA_wdata[*]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.933 [get_ports {axiA_wlast}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.494 [get_ports {axiA_wlast}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.155 [get_ports {axiA_wready}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min -0.018 [get_ports {axiA_wready}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 1.021 [get_ports {axiA_wstrb[*]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.491 [get_ports {axiA_wstrb[*]}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.799 [get_ports {axiA_wvalid}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.414 [get_ports {axiA_wvalid}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.944 [get_ports {axiA_bready}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.494 [get_ports {axiA_bready}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.315 [get_ports {axiA_bresp[*]}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.064 [get_ports {axiA_bresp[*]}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.251 [get_ports {axiA_bvalid}]
+set_output_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.052 [get_ports {axiA_bvalid}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -max 0.730 [get_ports {io_peripheralReset}]
+set_input_delay -clock io_peripheralClk -reference_pin [get_ports {io_peripheralClk~CLKOUT~42~2}] -min 0.386 [get_ports {io_peripheralReset}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 0.777 [get_ports {cpu0_customInstruction_cmd_ready}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.246 [get_ports {cpu0_customInstruction_cmd_ready}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.488 [get_ports {cpu0_customInstruction_cmd_valid}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.776 [get_ports {cpu0_customInstruction_cmd_valid}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.500 [get_ports {cpu0_customInstruction_function_id[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.637 [get_ports {cpu0_customInstruction_function_id[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.545 [get_ports {cpu0_customInstruction_inputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.612 [get_ports {cpu0_customInstruction_inputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.428 [get_ports {cpu0_customInstruction_inputs_1[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.625 [get_ports {cpu0_customInstruction_inputs_1[*]}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 0.844 [get_ports {cpu0_customInstruction_outputs_0[*]}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.147 [get_ports {cpu0_customInstruction_outputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.401 [get_ports {cpu0_customInstruction_rsp_ready}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.746 [get_ports {cpu0_customInstruction_rsp_ready}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 0.864 [get_ports {cpu0_customInstruction_rsp_valid}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.251 [get_ports {cpu0_customInstruction_rsp_valid}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 0.947 [get_ports {cpu1_customInstruction_cmd_ready}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.300 [get_ports {cpu1_customInstruction_cmd_ready}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.580 [get_ports {cpu1_customInstruction_cmd_valid}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.804 [get_ports {cpu1_customInstruction_cmd_valid}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.849 [get_ports {cpu1_customInstruction_function_id[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.720 [get_ports {cpu1_customInstruction_function_id[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.956 [get_ports {cpu1_customInstruction_inputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.752 [get_ports {cpu1_customInstruction_inputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.810 [get_ports {cpu1_customInstruction_inputs_1[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.748 [get_ports {cpu1_customInstruction_inputs_1[*]}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.052 [get_ports {cpu1_customInstruction_outputs_0[*]}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.169 [get_ports {cpu1_customInstruction_outputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.643 [get_ports {cpu1_customInstruction_rsp_ready}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.869 [get_ports {cpu1_customInstruction_rsp_ready}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 0.800 [get_ports {cpu1_customInstruction_rsp_valid}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.278 [get_ports {cpu1_customInstruction_rsp_valid}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 0.863 [get_ports {cpu2_customInstruction_cmd_ready}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.325 [get_ports {cpu2_customInstruction_cmd_ready}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.757 [get_ports {cpu2_customInstruction_cmd_valid}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.841 [get_ports {cpu2_customInstruction_cmd_valid}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.667 [get_ports {cpu2_customInstruction_function_id[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.801 [get_ports {cpu2_customInstruction_function_id[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.848 [get_ports {cpu2_customInstruction_inputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.750 [get_ports {cpu2_customInstruction_inputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.750 [get_ports {cpu2_customInstruction_inputs_1[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.762 [get_ports {cpu2_customInstruction_inputs_1[*]}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 0.950 [get_ports {cpu2_customInstruction_outputs_0[*]}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.234 [get_ports {cpu2_customInstruction_outputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.745 [get_ports {cpu2_customInstruction_rsp_ready}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.931 [get_ports {cpu2_customInstruction_rsp_ready}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 0.726 [get_ports {cpu2_customInstruction_rsp_valid}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.277 [get_ports {cpu2_customInstruction_rsp_valid}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 0.730 [get_ports {cpu3_customInstruction_cmd_ready}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.297 [get_ports {cpu3_customInstruction_cmd_ready}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.529 [get_ports {cpu3_customInstruction_cmd_valid}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.830 [get_ports {cpu3_customInstruction_cmd_valid}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.677 [get_ports {cpu3_customInstruction_function_id[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.788 [get_ports {cpu3_customInstruction_function_id[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.677 [get_ports {cpu3_customInstruction_inputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.770 [get_ports {cpu3_customInstruction_inputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.741 [get_ports {cpu3_customInstruction_inputs_1[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.769 [get_ports {cpu3_customInstruction_inputs_1[*]}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.074 [get_ports {cpu3_customInstruction_outputs_0[*]}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.200 [get_ports {cpu3_customInstruction_outputs_0[*]}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 1.685 [get_ports {cpu3_customInstruction_rsp_ready}]
+set_input_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.913 [get_ports {cpu3_customInstruction_rsp_ready}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -max 0.756 [get_ports {cpu3_customInstruction_rsp_valid}]
+set_output_delay -clock io_cfuClk -reference_pin [get_ports {io_cfuClk~CLKOUT~3~1}] -min 0.319 [get_ports {cpu3_customInstruction_rsp_valid}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -max 1.058 [get_ports {jtagCtrl_capture}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -min 0.420 [get_ports {jtagCtrl_capture}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -max 1.423 [get_ports {jtagCtrl_enable}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -min 0.374 [get_ports {jtagCtrl_enable}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -max 1.313 [get_ports {jtagCtrl_reset}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -min 0.436 [get_ports {jtagCtrl_reset}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -max 1.379 [get_ports {jtagCtrl_shift}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -min 0.399 [get_ports {jtagCtrl_shift}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -max 0.687 [get_ports {jtagCtrl_tdi}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -min 0.304 [get_ports {jtagCtrl_tdi}]
+set_input_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -max 2.055 [get_ports {jtagCtrl_tdo}]
+set_input_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -min 0.906 [get_ports {jtagCtrl_tdo}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -max 1.351 [get_ports {jtagCtrl_update}]
+set_output_delay -clock jtagCtrl_tck -reference_pin [get_ports {jtagCtrl_tck~CLKOUT~44~1}] -min 0.425 [get_ports {jtagCtrl_update}]
+
+# Clock Latency Constraints
+############################
+# set_clock_latency -source -setup [get_ports {io_sysFbClk}]
+# set_clock_latency -source -hold [get_ports {io_sysFbClk}]
+# set_clock_latency -source -setup [get_ports {io_systemClk}]
+# set_clock_latency -source -hold [get_ports {io_systemClk}]
+# set_clock_latency -source -setup [get_ports {io_memoryClk}]
+# set_clock_latency -source -hold [get_ports {io_memoryClk}]
+# set_clock_latency -source -setup [get_ports {io_memFbClk}]
+# set_clock_latency -source -hold [get_ports {io_memFbClk}]
+# set_clock_latency -source -setup [get_ports {io_peripheralClk}]
+# set_clock_latency -source -hold [get_ports {io_peripheralClk}]
+# set_clock_latency -source -setup [get_ports {io_ddrMasters_0_clk}]
+# set_clock_latency -source -hold [get_ports {io_ddrMasters_0_clk}]
+# set_clock_latency -source -setup [get_ports {io_cfuClk}]
+# set_clock_latency -source -hold [get_ports {io_cfuClk}]
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb.v b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb.v
new file mode 100644
index 0000000..7b89235
--- /dev/null
+++ b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb.v
@@ -0,0 +1,8650 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 1.23.0
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+`define IP_UUID _be6ad777990c4e5089d0b11c63cc2698
+`define IP_NAME_CONCAT(a,b) a``b
+`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
+module EfxSapphireHpSoc_slb
+(
+ input io_peripheralClk,
+ input io_peripheralReset,
+ output io_asyncReset,
+ input io_gpio_sw_n,
+ input pll_peripheral_locked,
+ input pll_system_locked,
+ output jtagCtrl_capture,
+ output jtagCtrl_enable,
+ output jtagCtrl_reset,
+ output jtagCtrl_shift,
+ output jtagCtrl_tdi,
+ input jtagCtrl_tdo,
+ output jtagCtrl_update,
+ input ut_jtagCtrl_capture,
+ input ut_jtagCtrl_enable,
+ input ut_jtagCtrl_reset,
+ input ut_jtagCtrl_shift,
+ input ut_jtagCtrl_tdi,
+ output ut_jtagCtrl_tdo,
+ input ut_jtagCtrl_update,
+ input system_spi_0_io_data_0_read,
+ output system_spi_0_io_data_0_write,
+ output system_spi_0_io_data_0_writeEnable,
+ input system_spi_0_io_data_1_read,
+ output system_spi_0_io_data_1_write,
+ output system_spi_0_io_data_1_writeEnable,
+ input system_spi_0_io_data_2_read,
+ output system_spi_0_io_data_2_write,
+ output system_spi_0_io_data_2_writeEnable,
+ input system_spi_0_io_data_3_read,
+ output system_spi_0_io_data_3_write,
+ output system_spi_0_io_data_3_writeEnable,
+ output system_spi_0_io_sclk_write,
+ output [3:0] system_spi_0_io_ss,
+ input system_uart_0_io_rxd,
+ output system_uart_0_io_txd,
+ input system_i2c_0_io_scl_read,
+ output system_i2c_0_io_scl_write,
+ input system_i2c_0_io_sda_read,
+ input [3:0] system_gpio_0_io_read,
+ output [3:0] system_gpio_0_io_write,
+ output [3:0] system_gpio_0_io_writeEnable,
+ input cfg_done,
+ output cfg_start,
+ output cfg_sel,
+ output cfg_reset,
+ output axiAInterrupt,
+ input [31:0] axiA_awaddr,
+ input [7:0] axiA_awlen,
+ input [2:0] axiA_awsize,
+ input [1:0] axiA_awburst,
+ input axiA_awlock,
+ input [3:0] axiA_awcache,
+ input [2:0] axiA_awprot,
+ input [3:0] axiA_awqos,
+ input [3:0] axiA_awregion,
+ input axiA_awvalid,
+ output axiA_awready,
+ input [31:0] axiA_wdata,
+ input [3:0] axiA_wstrb,
+ input axiA_wvalid,
+ input axiA_wlast,
+ output axiA_wready,
+ output [1:0] axiA_bresp,
+ output axiA_bvalid,
+ input axiA_bready,
+ input [31:0] axiA_araddr,
+ input [7:0] axiA_arlen,
+ input [2:0] axiA_arsize,
+ input [1:0] axiA_arburst,
+ input axiA_arlock,
+ input [3:0] axiA_arcache,
+ input [2:0] axiA_arprot,
+ input [3:0] axiA_arqos,
+ input [3:0] axiA_arregion,
+ input axiA_arvalid,
+ output axiA_arready,
+ output [31:0] axiA_rdata,
+ output [1:0] axiA_rresp,
+ output axiA_rlast,
+ output axiA_rvalid,
+ input axiA_rready,
+ output userInterruptA,
+ output userInterruptB,
+ output userInterruptC,
+ output userInterruptD,
+ output userInterruptE,
+ output userInterruptF,
+ output [31:0] io_apbSlave_0_PADDR,
+ output io_apbSlave_0_PENABLE,
+ input [31:0] io_apbSlave_0_PRDATA,
+ input io_apbSlave_0_PREADY,
+ output io_apbSlave_0_PSEL,
+ input io_apbSlave_0_PSLVERROR,
+ output [31:0] io_apbSlave_0_PWDATA,
+ output io_apbSlave_0_PWRITE,
+ output system_i2c_0_io_sda_write,
+ output system_i2c_0_io_sda_writeEnable,
+ output system_i2c_0_io_scl_writeEnable,
+ output system_watchdog_hardPanic_reset
+);
+`IP_MODULE_NAME(Axi4Peripheral_wrapper)
+#(
+ .PERI_FREQ (200)
+)
+u_Axi4Peripheral_wrapper
+(
+ .io_peripheralClk ( io_peripheralClk ),
+ .io_peripheralReset ( io_peripheralReset ),
+ .io_asyncReset ( io_asyncReset ),
+ .io_gpio_sw_n ( io_gpio_sw_n ),
+ .pll_peripheral_locked ( pll_peripheral_locked ),
+ .pll_system_locked ( pll_system_locked ),
+ .jtagCtrl_capture ( jtagCtrl_capture ),
+ .jtagCtrl_enable ( jtagCtrl_enable ),
+ .jtagCtrl_reset ( jtagCtrl_reset ),
+ .jtagCtrl_shift ( jtagCtrl_shift ),
+ .jtagCtrl_tdi ( jtagCtrl_tdi ),
+ .jtagCtrl_tdo ( jtagCtrl_tdo ),
+ .jtagCtrl_update ( jtagCtrl_update ),
+ .ut_jtagCtrl_capture ( ut_jtagCtrl_capture ),
+ .ut_jtagCtrl_enable ( ut_jtagCtrl_enable ),
+ .ut_jtagCtrl_reset ( ut_jtagCtrl_reset ),
+ .ut_jtagCtrl_shift ( ut_jtagCtrl_shift ),
+ .ut_jtagCtrl_tdi ( ut_jtagCtrl_tdi ),
+ .ut_jtagCtrl_tdo ( ut_jtagCtrl_tdo ),
+ .ut_jtagCtrl_update ( ut_jtagCtrl_update ),
+ .system_spi_0_io_data_0_read ( system_spi_0_io_data_0_read ),
+ .system_spi_0_io_data_0_write ( system_spi_0_io_data_0_write ),
+ .system_spi_0_io_data_0_writeEnable ( system_spi_0_io_data_0_writeEnable ),
+ .system_spi_0_io_data_1_read ( system_spi_0_io_data_1_read ),
+ .system_spi_0_io_data_1_write ( system_spi_0_io_data_1_write ),
+ .system_spi_0_io_data_1_writeEnable ( system_spi_0_io_data_1_writeEnable ),
+ .system_spi_0_io_data_2_read ( system_spi_0_io_data_2_read ),
+ .system_spi_0_io_data_2_write ( system_spi_0_io_data_2_write ),
+ .system_spi_0_io_data_2_writeEnable ( system_spi_0_io_data_2_writeEnable ),
+ .system_spi_0_io_data_3_read ( system_spi_0_io_data_3_read ),
+ .system_spi_0_io_data_3_write ( system_spi_0_io_data_3_write ),
+ .system_spi_0_io_data_3_writeEnable ( system_spi_0_io_data_3_writeEnable ),
+ .system_spi_0_io_sclk_write ( system_spi_0_io_sclk_write ),
+ .system_spi_0_io_ss ( system_spi_0_io_ss ),
+ .system_uart_0_io_rxd ( system_uart_0_io_rxd ),
+ .system_uart_0_io_txd ( system_uart_0_io_txd ),
+ .system_i2c_0_io_scl_read ( system_i2c_0_io_scl_read ),
+ .system_i2c_0_io_scl_write ( system_i2c_0_io_scl_write ),
+ .system_i2c_0_io_sda_read ( system_i2c_0_io_sda_read ),
+ .system_gpio_0_io_read ( system_gpio_0_io_read ),
+ .system_gpio_0_io_write ( system_gpio_0_io_write ),
+ .system_gpio_0_io_writeEnable ( system_gpio_0_io_writeEnable ),
+ .cfg_done ( cfg_done ),
+ .cfg_start ( cfg_start ),
+ .cfg_sel ( cfg_sel ),
+ .cfg_reset ( cfg_reset ),
+ .axiAInterrupt ( axiAInterrupt ),
+ .axiA_awaddr ( axiA_awaddr ),
+ .axiA_awlen ( axiA_awlen ),
+ .axiA_awsize ( axiA_awsize ),
+ .axiA_awburst ( axiA_awburst ),
+ .axiA_awlock ( axiA_awlock ),
+ .axiA_awcache ( axiA_awcache ),
+ .axiA_awprot ( axiA_awprot ),
+ .axiA_awqos ( axiA_awqos ),
+ .axiA_awregion ( axiA_awregion ),
+ .axiA_awvalid ( axiA_awvalid ),
+ .axiA_awready ( axiA_awready ),
+ .axiA_wdata ( axiA_wdata ),
+ .axiA_wstrb ( axiA_wstrb ),
+ .axiA_wvalid ( axiA_wvalid ),
+ .axiA_wlast ( axiA_wlast ),
+ .axiA_wready ( axiA_wready ),
+ .axiA_bresp ( axiA_bresp ),
+ .axiA_bvalid ( axiA_bvalid ),
+ .axiA_bready ( axiA_bready ),
+ .axiA_araddr ( axiA_araddr ),
+ .axiA_arlen ( axiA_arlen ),
+ .axiA_arsize ( axiA_arsize ),
+ .axiA_arburst ( axiA_arburst ),
+ .axiA_arlock ( axiA_arlock ),
+ .axiA_arcache ( axiA_arcache ),
+ .axiA_arprot ( axiA_arprot ),
+ .axiA_arqos ( axiA_arqos ),
+ .axiA_arregion ( axiA_arregion ),
+ .axiA_arvalid ( axiA_arvalid ),
+ .axiA_arready ( axiA_arready ),
+ .axiA_rdata ( axiA_rdata ),
+ .axiA_rresp ( axiA_rresp ),
+ .axiA_rlast ( axiA_rlast ),
+ .axiA_rvalid ( axiA_rvalid ),
+ .axiA_rready ( axiA_rready ),
+ .userInterruptA ( userInterruptA ),
+ .userInterruptB ( userInterruptB ),
+ .userInterruptC ( userInterruptC ),
+ .userInterruptD ( userInterruptD ),
+ .userInterruptE ( userInterruptE ),
+ .userInterruptF ( userInterruptF ),
+ .io_apbSlave_0_PADDR ( io_apbSlave_0_PADDR ),
+ .io_apbSlave_0_PENABLE ( io_apbSlave_0_PENABLE ),
+ .io_apbSlave_0_PRDATA ( io_apbSlave_0_PRDATA ),
+ .io_apbSlave_0_PREADY ( io_apbSlave_0_PREADY ),
+ .io_apbSlave_0_PSEL ( io_apbSlave_0_PSEL ),
+ .io_apbSlave_0_PSLVERROR ( io_apbSlave_0_PSLVERROR ),
+ .io_apbSlave_0_PWDATA ( io_apbSlave_0_PWDATA ),
+ .io_apbSlave_0_PWRITE ( io_apbSlave_0_PWRITE ),
+ .system_i2c_0_io_sda_write ( system_i2c_0_io_sda_write ),
+ .system_i2c_0_io_sda_writeEnable ( system_i2c_0_io_sda_writeEnable ),
+ .system_i2c_0_io_scl_writeEnable ( system_i2c_0_io_scl_writeEnable ),
+ .system_watchdog_hardPanic_reset ( system_watchdog_hardPanic_reset )
+);
+endmodule
+
+module `IP_MODULE_NAME(Axi4Peripheral_wrapper) #(
+parameter PERI_FREQ=250
+)(
+input [3:0] system_gpio_0_io_read,
+output [3:0] system_gpio_0_io_write,
+output [3:0] system_gpio_0_io_writeEnable,
+output system_i2c_0_io_sda_writeEnable,
+output system_i2c_0_io_sda_write,
+input system_i2c_0_io_sda_read,
+output system_i2c_0_io_scl_writeEnable,
+output system_i2c_0_io_scl_write,
+input system_i2c_0_io_scl_read,
+output system_watchdog_hardPanic_reset,
+output userInterruptF,
+output system_spi_0_io_sclk_write,
+output system_spi_0_io_data_0_writeEnable,
+input system_spi_0_io_data_0_read,
+output system_spi_0_io_data_0_write,
+output system_spi_0_io_data_1_writeEnable,
+input system_spi_0_io_data_1_read,
+output system_spi_0_io_data_1_write,
+output system_spi_0_io_data_2_writeEnable,
+input system_spi_0_io_data_2_read,
+output system_spi_0_io_data_2_write,
+output system_spi_0_io_data_3_writeEnable,
+input system_spi_0_io_data_3_read,
+output system_spi_0_io_data_3_write,
+output [3:0] system_spi_0_io_ss,
+output userInterruptD,
+output [15:0] io_apbSlave_0_PADDR,
+output io_apbSlave_0_PSEL,
+output io_apbSlave_0_PENABLE,
+input io_apbSlave_0_PREADY,
+output io_apbSlave_0_PWRITE,
+output [31:0] io_apbSlave_0_PWDATA,
+input [31:0] io_apbSlave_0_PRDATA,
+input io_apbSlave_0_PSLVERROR,
+output userInterruptC,
+output jtagCtrl_tdi,
+input jtagCtrl_tdo,
+output jtagCtrl_enable,
+output jtagCtrl_capture,
+output jtagCtrl_shift,
+output jtagCtrl_update,
+output jtagCtrl_reset,
+input ut_jtagCtrl_tdi,
+output ut_jtagCtrl_tdo,
+input ut_jtagCtrl_enable,
+input ut_jtagCtrl_capture,
+input ut_jtagCtrl_shift,
+input ut_jtagCtrl_update,
+input ut_jtagCtrl_reset,
+output system_uart_0_io_txd,
+input system_uart_0_io_rxd,
+output userInterruptB,
+output userInterruptA,
+output userInterruptE,
+input [31:0] axiA_awaddr,
+input [7:0] axiA_awlen,
+input [2:0] axiA_awsize,
+input [1:0] axiA_awburst,
+input axiA_awlock,
+input [3:0] axiA_awcache,
+input [2:0] axiA_awprot,
+input [3:0] axiA_awqos,
+input [3:0] axiA_awregion,
+input axiA_awvalid,
+output axiA_awready,
+input [31:0] axiA_wdata,
+input [3:0] axiA_wstrb,
+input axiA_wvalid,
+input axiA_wlast,
+output axiA_wready,
+output [1:0] axiA_bresp,
+output axiA_bvalid,
+input axiA_bready,
+input [31:0] axiA_araddr,
+input [7:0] axiA_arlen,
+input [2:0] axiA_arsize,
+input [1:0] axiA_arburst,
+input axiA_arlock,
+input [3:0] axiA_arcache,
+input [2:0] axiA_arprot,
+input [3:0] axiA_arqos,
+input [3:0] axiA_arregion,
+input axiA_arvalid,
+output axiA_arready,
+output [31:0] axiA_rdata,
+output [1:0] axiA_rresp,
+output axiA_rlast,
+output axiA_rvalid,
+input axiA_rready,
+output axiAInterrupt,
+input cfg_done,
+output cfg_start,
+output cfg_sel,
+output cfg_reset,
+input io_peripheralClk,
+input io_peripheralReset,
+output io_asyncReset,
+input io_gpio_sw_n,
+input pll_peripheral_locked,
+input pll_system_locked
+);
+
+wire flag_ok;
+wire system_watchdog_softPanic_interrupt;
+wire system_i2c_0_io_interrupt;
+wire system_spi_0_io_interrupt;
+wire system_uart_0_io_interrupt;
+wire system_gpio_0_io_interrupt_0;
+wire system_gpio_0_io_interrupt_1;
+
+
+`IP_MODULE_NAME(lppdr4_init) u_lppdr4_init (
+.io_peripheralClk (io_peripheralClk),
+.io_peripheralReset (io_peripheralReset),
+.io_gpio_sw_n (io_gpio_sw_n),
+.flag_ok (flag_ok),
+.cfg_done (cfg_done),
+.cfg_start (cfg_start),
+.cfg_sel (cfg_sel),
+.cfg_reset (cfg_reset)
+);
+
+assign io_asyncReset = ~(io_gpio_sw_n &
+ pll_peripheral_locked &
+ pll_system_locked &
+ flag_ok);
+
+assign userInterruptA = system_uart_0_io_interrupt;
+assign userInterruptB = system_spi_0_io_interrupt;
+assign userInterruptC = system_i2c_0_io_interrupt;
+assign userInterruptD = system_gpio_0_io_interrupt_0;
+assign userInterruptE = system_gpio_0_io_interrupt_1;
+assign userInterruptF = system_watchdog_softPanic_interrupt;
+
+assign jtagCtrl_capture = ut_jtagCtrl_capture;
+assign jtagCtrl_enable = ut_jtagCtrl_enable;
+assign jtagCtrl_reset = ut_jtagCtrl_reset;
+assign jtagCtrl_shift = ut_jtagCtrl_shift;
+assign jtagCtrl_tdi = ut_jtagCtrl_tdi;
+assign jtagCtrl_update = ut_jtagCtrl_update;
+assign ut_jtagCtrl_tdo = jtagCtrl_tdo;
+
+
+assign system_i2c_0_io_sda_writeEnable=!system_i2c_0_io_sda_write;
+assign system_i2c_0_io_scl_writeEnable=!system_i2c_0_io_scl_write;
+
+
+//axi4 bridge to various I/O
+Axi4PeripheralTop_be6ad777990c4e5089d0b11c63cc2698 u_Axi4PeripheralTop(
+.io_apbSlave_0_PADDR(io_apbSlave_0_PADDR),
+.io_apbSlave_0_PSEL(io_apbSlave_0_PSEL),
+.io_apbSlave_0_PENABLE(io_apbSlave_0_PENABLE),
+.io_apbSlave_0_PREADY(io_apbSlave_0_PREADY),
+.io_apbSlave_0_PWRITE(io_apbSlave_0_PWRITE),
+.io_apbSlave_0_PWDATA(io_apbSlave_0_PWDATA),
+.io_apbSlave_0_PRDATA(io_apbSlave_0_PRDATA),
+.io_apbSlave_0_PSLVERROR(io_apbSlave_0_PSLVERROR),
+.system_i2c_0_io_interrupt(system_i2c_0_io_interrupt),
+.system_i2c_0_io_sda_write(system_i2c_0_io_sda_write),
+.system_i2c_0_io_sda_read(system_i2c_0_io_sda_read),
+.system_i2c_0_io_scl_write(system_i2c_0_io_scl_write),
+.system_i2c_0_io_scl_read(system_i2c_0_io_scl_read),
+.system_gpio_0_io_interrupts_0(system_gpio_0_io_interrupt_0),
+.system_gpio_0_io_interrupts_1(system_gpio_0_io_interrupt_1),
+.system_gpio_0_io_read(system_gpio_0_io_read),
+.system_gpio_0_io_write(system_gpio_0_io_write),
+.system_gpio_0_io_writeEnable(system_gpio_0_io_writeEnable),
+.system_spi_0_io_interrupt(system_spi_0_io_interrupt),
+.system_spi_0_io_sclk_write(system_spi_0_io_sclk_write),
+.system_spi_0_io_data_0_writeEnable(system_spi_0_io_data_0_writeEnable),
+.system_spi_0_io_data_0_read(system_spi_0_io_data_0_read),
+.system_spi_0_io_data_0_write(system_spi_0_io_data_0_write),
+.system_spi_0_io_data_1_writeEnable(system_spi_0_io_data_1_writeEnable),
+.system_spi_0_io_data_1_read(system_spi_0_io_data_1_read),
+.system_spi_0_io_data_1_write(system_spi_0_io_data_1_write),
+.system_spi_0_io_data_2_writeEnable(system_spi_0_io_data_2_writeEnable),
+.system_spi_0_io_data_2_read(system_spi_0_io_data_2_read),
+.system_spi_0_io_data_2_write(system_spi_0_io_data_2_write),
+.system_spi_0_io_data_3_writeEnable(system_spi_0_io_data_3_writeEnable),
+.system_spi_0_io_data_3_read(system_spi_0_io_data_3_read),
+.system_spi_0_io_data_3_write(system_spi_0_io_data_3_write),
+.system_spi_0_io_ss(system_spi_0_io_ss),
+.system_uart_0_io_interrupt(system_uart_0_io_interrupt),
+.system_uart_0_io_txd(system_uart_0_io_txd),
+.system_uart_0_io_rxd(system_uart_0_io_rxd),
+.system_watchdog_hardPanic_reset(system_watchdog_hardPanic_reset),
+.system_watchdog_logic_panics_0(system_watchdog_softPanic_interrupt),
+.axi_awvalid(axiA_awvalid),
+.axi_awready(axiA_awready),
+.axi_awaddr(axiA_awaddr[23:0]),
+.axi_awlen(axiA_awlen),
+.axi_awsize(axiA_awsize),
+.axi_awcache(axiA_awcache),
+.axi_awprot(axiA_awprot),
+.axi_wvalid(axiA_wvalid),
+.axi_wready(axiA_wready),
+.axi_wdata(axiA_wdata),
+.axi_wstrb(axiA_wstrb),
+.axi_wlast(axiA_wlast),
+.axi_bvalid(axiA_bvalid),
+.axi_bready(axiA_bready),
+.axi_bresp(axiA_bresp),
+.axi_arvalid(axiA_arvalid),
+.axi_arready(axiA_arready),
+.axi_araddr(axiA_araddr[23:0]),
+.axi_arlen(axiA_arlen),
+.axi_arsize(axiA_arsize),
+.axi_arcache(axiA_arcache),
+.axi_arprot(axiA_arprot),
+.axi_rvalid(axiA_rvalid),
+.axi_rready(axiA_rready),
+.axi_rdata(axiA_rdata),
+.axi_rresp(axiA_rresp),
+.axi_rlast(axiA_rlast),
+.clk(io_peripheralClk),
+.reset(io_peripheralReset)
+);
+assign axiAInterrupt = 1'b0;
+
+endmodule
+
+
+module `IP_MODULE_NAME(lppdr4_init) (
+ input io_peripheralClk,
+ input io_peripheralReset,
+ input io_gpio_sw_n,
+ output reg flag_ok,
+ input cfg_done,
+ output cfg_start,
+ output cfg_sel,
+ output cfg_reset
+);
+
+localparam [1:0] IDLE = 2'b00,
+ CFG_START = 2'b01,
+ CFG_DONE = 2'b11;
+
+reg [1:0] cfg_st,
+ cfg_next;
+reg [7:0] cfg_count;
+wire cfg_ok;
+reg [1:0] buf_reset;
+wire dmReset;
+
+always@(posedge io_peripheralClk)
+begin
+ buf_reset[1] <= io_peripheralReset;
+ buf_reset[0] <= buf_reset[1];
+end
+
+assign dmReset = (~buf_reset[0] & buf_reset[1]);
+
+always@(posedge io_peripheralClk or negedge io_gpio_sw_n)
+begin
+ if(!io_gpio_sw_n)
+ flag_ok <= 1'b0;
+ else
+ begin
+ if(cfg_st == CFG_DONE)
+ flag_ok <= 1'b1;
+ else
+ flag_ok <= flag_ok;
+ end
+end
+
+always@(posedge io_peripheralClk or negedge io_gpio_sw_n)
+begin
+ if(!io_gpio_sw_n || dmReset)
+ cfg_st <= IDLE;
+ else
+ cfg_st <= cfg_next;
+end
+
+always@(*)
+begin
+ cfg_next = cfg_st;
+ case(cfg_st)
+ IDLE:
+ begin
+ if(cfg_count == 'hff)
+ cfg_next = CFG_START;
+ else
+ cfg_next = IDLE;
+ end
+ CFG_START:
+ begin
+ if(cfg_done)
+ cfg_next = CFG_DONE;
+ else
+ cfg_next = CFG_START;
+ end
+ CFG_DONE:
+ cfg_next = CFG_DONE;
+ default:
+ cfg_next = IDLE;
+ endcase
+end
+
+assign cfg_start = (cfg_st != IDLE);
+assign cfg_ok = (cfg_st == CFG_DONE);
+assign cfg_reset = (cfg_st == IDLE);
+assign cfg_sel = 1'b0;
+
+always@(posedge io_peripheralClk)
+begin
+ if(cfg_st == IDLE)
+ cfg_count <= cfg_count + 1'b1;
+ else
+ cfg_count <= 'h0;
+end
+
+endmodule
+
+
+// Generator : SpinalHDL dev git head : a69f4b9a329be784802c37cd8038b7dc9aec3094
+// Component : Axi4PeripheralTop_be6ad777990c4e5089d0b11c63cc2698
+
+`timescale 1ns/1ps
+
+module Axi4PeripheralTop_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire axi_awvalid,
+ output wire axi_awready,
+ input wire [23:0] axi_awaddr,
+ input wire [7:0] axi_awlen,
+ input wire [2:0] axi_awsize,
+ input wire [3:0] axi_awcache,
+ input wire [2:0] axi_awprot,
+ input wire axi_wvalid,
+ output wire axi_wready,
+ input wire [31:0] axi_wdata,
+ input wire [3:0] axi_wstrb,
+ input wire axi_wlast,
+ output wire axi_bvalid,
+ input wire axi_bready,
+ output wire [1:0] axi_bresp,
+ input wire axi_arvalid,
+ output wire axi_arready,
+ input wire [23:0] axi_araddr,
+ input wire [7:0] axi_arlen,
+ input wire [2:0] axi_arsize,
+ input wire [3:0] axi_arcache,
+ input wire [2:0] axi_arprot,
+ output wire axi_rvalid,
+ input wire axi_rready,
+ output wire [31:0] axi_rdata,
+ output wire [1:0] axi_rresp,
+ output wire axi_rlast,
+ output wire system_uart_0_io_txd,
+ input wire system_uart_0_io_rxd,
+ output wire system_i2c_0_io_sda_write,
+ input wire system_i2c_0_io_sda_read,
+ output wire system_i2c_0_io_scl_write,
+ input wire system_i2c_0_io_scl_read,
+ input wire [3:0] system_gpio_0_io_read,
+ output wire [3:0] system_gpio_0_io_write,
+ output wire [3:0] system_gpio_0_io_writeEnable,
+ output wire [15:0] io_apbSlave_0_PADDR,
+ output wire [0:0] io_apbSlave_0_PSEL,
+ output wire io_apbSlave_0_PENABLE,
+ input wire io_apbSlave_0_PREADY,
+ output wire io_apbSlave_0_PWRITE,
+ output wire [31:0] io_apbSlave_0_PWDATA,
+ input wire [31:0] io_apbSlave_0_PRDATA,
+ input wire io_apbSlave_0_PSLVERROR,
+ output wire system_uart_0_io_interrupt,
+ output wire system_spi_0_io_interrupt,
+ output wire [0:0] system_spi_0_io_sclk_write,
+ output wire system_spi_0_io_data_0_writeEnable,
+ input wire [0:0] system_spi_0_io_data_0_read,
+ output wire [0:0] system_spi_0_io_data_0_write,
+ output wire system_spi_0_io_data_1_writeEnable,
+ input wire [0:0] system_spi_0_io_data_1_read,
+ output wire [0:0] system_spi_0_io_data_1_write,
+ output wire system_spi_0_io_data_2_writeEnable,
+ input wire [0:0] system_spi_0_io_data_2_read,
+ output wire [0:0] system_spi_0_io_data_2_write,
+ output wire system_spi_0_io_data_3_writeEnable,
+ input wire [0:0] system_spi_0_io_data_3_read,
+ output wire [0:0] system_spi_0_io_data_3_write,
+ output wire [3:0] system_spi_0_io_ss,
+ output wire system_i2c_0_io_interrupt,
+ output wire system_gpio_0_io_interrupts_0,
+ output wire system_gpio_0_io_interrupts_1,
+ output wire system_watchdog_logic_panics_0,
+ output wire system_watchdog_hardPanic_reset,
+ input wire clk,
+ input wire reset
+);
+
+ wire streamArbiter_io_inputs_0_ready;
+ wire streamArbiter_io_inputs_1_ready;
+ wire streamArbiter_io_output_valid;
+ wire [23:0] streamArbiter_io_output_payload_addr;
+ wire [7:0] streamArbiter_io_output_payload_len;
+ wire [2:0] streamArbiter_io_output_payload_size;
+ wire [3:0] streamArbiter_io_output_payload_cache;
+ wire [2:0] streamArbiter_io_output_payload_prot;
+ wire [0:0] streamArbiter_io_chosen;
+ wire [1:0] streamArbiter_io_chosenOH;
+ wire axiToBmb_io_axi_arw_ready;
+ wire axiToBmb_io_axi_w_ready;
+ wire axiToBmb_io_axi_b_valid;
+ wire [1:0] axiToBmb_io_axi_b_payload_resp;
+ wire axiToBmb_io_axi_r_valid;
+ wire [31:0] axiToBmb_io_axi_r_payload_data;
+ wire [1:0] axiToBmb_io_axi_r_payload_resp;
+ wire axiToBmb_io_axi_r_payload_last;
+ wire axiToBmb_io_bmb_cmd_valid;
+ wire axiToBmb_io_bmb_cmd_payload_last;
+ wire [0:0] axiToBmb_io_bmb_cmd_payload_fragment_source;
+ wire [0:0] axiToBmb_io_bmb_cmd_payload_fragment_opcode;
+ wire [23:0] axiToBmb_io_bmb_cmd_payload_fragment_address;
+ wire [9:0] axiToBmb_io_bmb_cmd_payload_fragment_length;
+ wire [31:0] axiToBmb_io_bmb_cmd_payload_fragment_data;
+ wire [3:0] axiToBmb_io_bmb_cmd_payload_fragment_mask;
+ wire axiToBmb_io_bmb_rsp_ready;
+ wire bmbHandle_decoder_io_input_cmd_ready;
+ wire bmbHandle_decoder_io_input_rsp_valid;
+ wire bmbHandle_decoder_io_input_rsp_payload_last;
+ wire [0:0] bmbHandle_decoder_io_input_rsp_payload_fragment_source;
+ wire [0:0] bmbHandle_decoder_io_input_rsp_payload_fragment_opcode;
+ wire [31:0] bmbHandle_decoder_io_input_rsp_payload_fragment_data;
+ wire bmbHandle_decoder_io_outputs_0_cmd_valid;
+ wire bmbHandle_decoder_io_outputs_0_cmd_payload_last;
+ wire [0:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_source;
+ wire [0:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_opcode;
+ wire [23:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_address;
+ wire [9:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_length;
+ wire [31:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_data;
+ wire [3:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_mask;
+ wire bmbHandle_decoder_io_outputs_0_rsp_ready;
+ wire bmbHandle_unburstify_io_input_cmd_ready;
+ wire bmbHandle_unburstify_io_input_rsp_valid;
+ wire bmbHandle_unburstify_io_input_rsp_payload_last;
+ wire [0:0] bmbHandle_unburstify_io_input_rsp_payload_fragment_source;
+ wire [0:0] bmbHandle_unburstify_io_input_rsp_payload_fragment_opcode;
+ wire [31:0] bmbHandle_unburstify_io_input_rsp_payload_fragment_data;
+ wire bmbHandle_unburstify_io_output_cmd_valid;
+ wire bmbHandle_unburstify_io_output_cmd_payload_last;
+ wire [0:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_opcode;
+ wire [23:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_address;
+ wire [1:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_length;
+ wire [31:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_data;
+ wire [3:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_mask;
+ wire [2:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_context;
+ wire bmbHandle_unburstify_io_output_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_input_cmd_ready;
+ wire bmbPeripheral_bmb_decoder_io_input_rsp_valid;
+ wire bmbPeripheral_bmb_decoder_io_input_rsp_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_opcode;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_data;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_0_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_0_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_outputs_1_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_1_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_outputs_2_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_2_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_outputs_3_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_3_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_outputs_4_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_4_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_outputs_5_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_5_rsp_ready;
+ wire system_uart_0_io_logic_io_bus_cmd_ready;
+ wire system_uart_0_io_logic_io_bus_rsp_valid;
+ wire system_uart_0_io_logic_io_bus_rsp_payload_last;
+ wire [0:0] system_uart_0_io_logic_io_bus_rsp_payload_fragment_opcode;
+ wire [31:0] system_uart_0_io_logic_io_bus_rsp_payload_fragment_data;
+ wire [2:0] system_uart_0_io_logic_io_bus_rsp_payload_fragment_context;
+ wire system_uart_0_io_logic_io_uart_txd;
+ wire system_uart_0_io_logic_system_uart_0_io_interrupt_source;
+ wire system_spi_0_io_logic_io_ctrl_cmd_ready;
+ wire system_spi_0_io_logic_io_ctrl_rsp_valid;
+ wire system_spi_0_io_logic_io_ctrl_rsp_payload_last;
+ wire [0:0] system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_opcode;
+ wire [31:0] system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_data;
+ wire [2:0] system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_context;
+ wire [0:0] system_spi_0_io_logic_io_spi_sclk_write;
+ wire [3:0] system_spi_0_io_logic_io_spi_ss;
+ wire [0:0] system_spi_0_io_logic_io_spi_data_0_write;
+ wire system_spi_0_io_logic_io_spi_data_0_writeEnable;
+ wire [0:0] system_spi_0_io_logic_io_spi_data_1_write;
+ wire system_spi_0_io_logic_io_spi_data_1_writeEnable;
+ wire [0:0] system_spi_0_io_logic_io_spi_data_2_write;
+ wire system_spi_0_io_logic_io_spi_data_2_writeEnable;
+ wire [0:0] system_spi_0_io_logic_io_spi_data_3_write;
+ wire system_spi_0_io_logic_io_spi_data_3_writeEnable;
+ wire system_spi_0_io_logic_system_spi_0_io_interrupt_source;
+ wire system_i2c_0_io_logic_io_ctrl_cmd_ready;
+ wire system_i2c_0_io_logic_io_ctrl_rsp_valid;
+ wire system_i2c_0_io_logic_io_ctrl_rsp_payload_last;
+ wire [0:0] system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_opcode;
+ wire [31:0] system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_data;
+ wire [2:0] system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_context;
+ wire system_i2c_0_io_logic_io_i2c_scl_write;
+ wire system_i2c_0_io_logic_io_i2c_sda_write;
+ wire system_i2c_0_io_logic_system_i2c_0_io_interrupt_source;
+ wire [3:0] system_gpio_0_io_logic_io_gpio_write;
+ wire [3:0] system_gpio_0_io_logic_io_gpio_writeEnable;
+ wire system_gpio_0_io_logic_io_bus_cmd_ready;
+ wire system_gpio_0_io_logic_io_bus_rsp_valid;
+ wire system_gpio_0_io_logic_io_bus_rsp_payload_last;
+ wire [0:0] system_gpio_0_io_logic_io_bus_rsp_payload_fragment_opcode;
+ wire [31:0] system_gpio_0_io_logic_io_bus_rsp_payload_fragment_data;
+ wire [2:0] system_gpio_0_io_logic_io_bus_rsp_payload_fragment_context;
+ wire [3:0] system_gpio_0_io_logic_io_interrupt;
+ wire system_watchdog_logic_logic_io_bus_cmd_ready;
+ wire system_watchdog_logic_logic_io_bus_rsp_valid;
+ wire system_watchdog_logic_logic_io_bus_rsp_payload_last;
+ wire [0:0] system_watchdog_logic_logic_io_bus_rsp_payload_fragment_opcode;
+ wire [31:0] system_watchdog_logic_logic_io_bus_rsp_payload_fragment_data;
+ wire [2:0] system_watchdog_logic_logic_io_bus_rsp_payload_fragment_context;
+ wire [1:0] system_watchdog_logic_logic_io_panics;
+ wire io_apbSlave_0_logic_io_input_cmd_ready;
+ wire io_apbSlave_0_logic_io_input_rsp_valid;
+ wire io_apbSlave_0_logic_io_input_rsp_payload_last;
+ wire [0:0] io_apbSlave_0_logic_io_input_rsp_payload_fragment_opcode;
+ wire [31:0] io_apbSlave_0_logic_io_input_rsp_payload_fragment_data;
+ wire [2:0] io_apbSlave_0_logic_io_input_rsp_payload_fragment_context;
+ wire [15:0] io_apbSlave_0_logic_io_output_PADDR;
+ wire [0:0] io_apbSlave_0_logic_io_output_PSEL;
+ wire io_apbSlave_0_logic_io_output_PENABLE;
+ wire io_apbSlave_0_logic_io_output_PWRITE;
+ wire [31:0] io_apbSlave_0_logic_io_output_PWDATA;
+ wire _zz_axiShared_b_ready;
+ wire _zz_axiShared_r_ready;
+ wire axi_aw_halfPipe_valid;
+ wire axi_aw_halfPipe_ready;
+ wire [23:0] axi_aw_halfPipe_payload_addr;
+ wire [7:0] axi_aw_halfPipe_payload_len;
+ wire [2:0] axi_aw_halfPipe_payload_size;
+ wire [3:0] axi_aw_halfPipe_payload_cache;
+ wire [2:0] axi_aw_halfPipe_payload_prot;
+ reg axi_aw_rValid;
+ wire axi_aw_halfPipe_fire;
+ reg [23:0] axi_aw_rData_addr;
+ reg [7:0] axi_aw_rData_len;
+ reg [2:0] axi_aw_rData_size;
+ reg [3:0] axi_aw_rData_cache;
+ reg [2:0] axi_aw_rData_prot;
+ wire axi_w_halfPipe_valid;
+ wire axi_w_halfPipe_ready;
+ wire [31:0] axi_w_halfPipe_payload_data;
+ wire [3:0] axi_w_halfPipe_payload_strb;
+ wire axi_w_halfPipe_payload_last;
+ reg axi_w_rValid;
+ wire axi_w_halfPipe_fire;
+ reg [31:0] axi_w_rData_data;
+ reg [3:0] axi_w_rData_strb;
+ reg axi_w_rData_last;
+ wire _zz_axi_bvalid;
+ reg _zz_axi_bvalid_1;
+ reg [1:0] _zz_axi_bresp;
+ wire axi_ar_halfPipe_valid;
+ wire axi_ar_halfPipe_ready;
+ wire [23:0] axi_ar_halfPipe_payload_addr;
+ wire [7:0] axi_ar_halfPipe_payload_len;
+ wire [2:0] axi_ar_halfPipe_payload_size;
+ wire [3:0] axi_ar_halfPipe_payload_cache;
+ wire [2:0] axi_ar_halfPipe_payload_prot;
+ reg axi_ar_rValid;
+ wire axi_ar_halfPipe_fire;
+ reg [23:0] axi_ar_rData_addr;
+ reg [7:0] axi_ar_rData_len;
+ reg [2:0] axi_ar_rData_size;
+ reg [3:0] axi_ar_rData_cache;
+ reg [2:0] axi_ar_rData_prot;
+ wire _zz_axi_rvalid;
+ reg _zz_axi_rvalid_1;
+ reg [31:0] _zz_axi_rdata;
+ reg [1:0] _zz_axi_rresp;
+ reg _zz_axi_rlast;
+ wire axiShared_arw_valid;
+ wire axiShared_arw_ready;
+ wire [23:0] axiShared_arw_payload_addr;
+ wire [7:0] axiShared_arw_payload_len;
+ wire [2:0] axiShared_arw_payload_size;
+ wire [3:0] axiShared_arw_payload_cache;
+ wire [2:0] axiShared_arw_payload_prot;
+ wire axiShared_arw_payload_write;
+ wire axiShared_w_valid;
+ wire axiShared_w_ready;
+ wire [31:0] axiShared_w_payload_data;
+ wire [3:0] axiShared_w_payload_strb;
+ wire axiShared_w_payload_last;
+ wire axiShared_b_valid;
+ wire axiShared_b_ready;
+ wire [1:0] axiShared_b_payload_resp;
+ wire axiShared_r_valid;
+ wire axiShared_r_ready;
+ wire [31:0] axiShared_r_payload_data;
+ wire [1:0] axiShared_r_payload_resp;
+ wire axiShared_r_payload_last;
+ wire bmbPeripheral_bmb_cmd_valid;
+ wire bmbPeripheral_bmb_cmd_ready;
+ wire bmbPeripheral_bmb_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_rsp_valid;
+ wire bmbPeripheral_bmb_rsp_ready;
+ wire bmbPeripheral_bmb_rsp_payload_last;
+ wire [0:0] bmbPeripheral_bmb_rsp_payload_fragment_opcode;
+ wire [31:0] bmbPeripheral_bmb_rsp_payload_fragment_data;
+ wire [2:0] bmbPeripheral_bmb_rsp_payload_fragment_context;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire system_gpio_0_io_interrupts_0_source;
+ wire system_gpio_0_io_interrupts_1_source;
+ wire system_gpio_0_io_interrupts_2;
+ wire system_gpio_0_io_interrupts_3;
+ wire system_watchdog_logic_panics_0_source;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [5:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire _zz_io_bus_rsp_ready;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last;
+ wire [0:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode;
+ wire [5:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address;
+ wire [1:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length;
+ wire [31:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data;
+ wire [2:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context;
+ reg system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire;
+ reg system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ reg [0:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ reg [5:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ reg [1:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ reg [31:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ reg [2:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ wire _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ reg _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1;
+ reg _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ reg [0:0] _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ reg [2:0] _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [11:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last;
+ wire [0:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode;
+ wire [11:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address;
+ wire [1:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length;
+ wire [31:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data;
+ wire [2:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context;
+ reg system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire;
+ reg system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ reg [0:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ reg [11:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ reg [1:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ reg [31:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ reg [2:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [7:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last;
+ wire [0:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode;
+ wire [7:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address;
+ wire [1:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length;
+ wire [31:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data;
+ wire [2:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context;
+ reg system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire;
+ reg system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ reg [0:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ reg [7:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ reg [1:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ reg [31:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ reg [2:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [7:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [7:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [15:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid_1;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready_1;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last_1;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_1;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_1;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_1;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_1;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_1;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid_1;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready_1;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last_1;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_1;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_1;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_1;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid_2;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready_2;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last_2;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_2;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_2;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_2;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_2;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_2;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid_2;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready_2;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last_2;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_2;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_2;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_2;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid_3;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready_3;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last_3;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_3;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_3;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_3;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_3;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_3;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid_3;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready_3;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last_3;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_3;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_3;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_3;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid_4;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready_4;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last_4;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_4;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_4;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_4;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_4;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_4;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid_4;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready_4;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last_4;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_4;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_4;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_4;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid_5;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready_5;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last_5;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_5;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_5;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_5;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_5;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_5;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid_5;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready_5;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last_5;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_5;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_5;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_5;
+
+ Axi4PeripheralStreamArbiter_be6ad777990c4e5089d0b11c63cc2698 streamArbiter (
+ .io_inputs_0_valid (axi_ar_halfPipe_valid ), //i
+ .io_inputs_0_ready (streamArbiter_io_inputs_0_ready ), //o
+ .io_inputs_0_payload_addr (axi_ar_halfPipe_payload_addr[23:0] ), //i
+ .io_inputs_0_payload_len (axi_ar_halfPipe_payload_len[7:0] ), //i
+ .io_inputs_0_payload_size (axi_ar_halfPipe_payload_size[2:0] ), //i
+ .io_inputs_0_payload_cache (axi_ar_halfPipe_payload_cache[3:0] ), //i
+ .io_inputs_0_payload_prot (axi_ar_halfPipe_payload_prot[2:0] ), //i
+ .io_inputs_1_valid (axi_aw_halfPipe_valid ), //i
+ .io_inputs_1_ready (streamArbiter_io_inputs_1_ready ), //o
+ .io_inputs_1_payload_addr (axi_aw_halfPipe_payload_addr[23:0] ), //i
+ .io_inputs_1_payload_len (axi_aw_halfPipe_payload_len[7:0] ), //i
+ .io_inputs_1_payload_size (axi_aw_halfPipe_payload_size[2:0] ), //i
+ .io_inputs_1_payload_cache (axi_aw_halfPipe_payload_cache[3:0] ), //i
+ .io_inputs_1_payload_prot (axi_aw_halfPipe_payload_prot[2:0] ), //i
+ .io_output_valid (streamArbiter_io_output_valid ), //o
+ .io_output_ready (axiShared_arw_ready ), //i
+ .io_output_payload_addr (streamArbiter_io_output_payload_addr[23:0]), //o
+ .io_output_payload_len (streamArbiter_io_output_payload_len[7:0] ), //o
+ .io_output_payload_size (streamArbiter_io_output_payload_size[2:0] ), //o
+ .io_output_payload_cache (streamArbiter_io_output_payload_cache[3:0]), //o
+ .io_output_payload_prot (streamArbiter_io_output_payload_prot[2:0] ), //o
+ .io_chosen (streamArbiter_io_chosen ), //o
+ .io_chosenOH (streamArbiter_io_chosenOH[1:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralAxi4SharedToBmb_be6ad777990c4e5089d0b11c63cc2698 axiToBmb (
+ .io_axi_arw_valid (axiShared_arw_valid ), //i
+ .io_axi_arw_ready (axiToBmb_io_axi_arw_ready ), //o
+ .io_axi_arw_payload_addr (axiShared_arw_payload_addr[23:0] ), //i
+ .io_axi_arw_payload_len (axiShared_arw_payload_len[7:0] ), //i
+ .io_axi_arw_payload_size (axiShared_arw_payload_size[2:0] ), //i
+ .io_axi_arw_payload_cache (axiShared_arw_payload_cache[3:0] ), //i
+ .io_axi_arw_payload_prot (axiShared_arw_payload_prot[2:0] ), //i
+ .io_axi_arw_payload_write (axiShared_arw_payload_write ), //i
+ .io_axi_w_valid (axiShared_w_valid ), //i
+ .io_axi_w_ready (axiToBmb_io_axi_w_ready ), //o
+ .io_axi_w_payload_data (axiShared_w_payload_data[31:0] ), //i
+ .io_axi_w_payload_strb (axiShared_w_payload_strb[3:0] ), //i
+ .io_axi_w_payload_last (axiShared_w_payload_last ), //i
+ .io_axi_b_valid (axiToBmb_io_axi_b_valid ), //o
+ .io_axi_b_ready (axiShared_b_ready ), //i
+ .io_axi_b_payload_resp (axiToBmb_io_axi_b_payload_resp[1:0] ), //o
+ .io_axi_r_valid (axiToBmb_io_axi_r_valid ), //o
+ .io_axi_r_ready (axiShared_r_ready ), //i
+ .io_axi_r_payload_data (axiToBmb_io_axi_r_payload_data[31:0] ), //o
+ .io_axi_r_payload_resp (axiToBmb_io_axi_r_payload_resp[1:0] ), //o
+ .io_axi_r_payload_last (axiToBmb_io_axi_r_payload_last ), //o
+ .io_bmb_cmd_valid (axiToBmb_io_bmb_cmd_valid ), //o
+ .io_bmb_cmd_ready (bmbHandle_decoder_io_input_cmd_ready ), //i
+ .io_bmb_cmd_payload_last (axiToBmb_io_bmb_cmd_payload_last ), //o
+ .io_bmb_cmd_payload_fragment_source (axiToBmb_io_bmb_cmd_payload_fragment_source ), //o
+ .io_bmb_cmd_payload_fragment_opcode (axiToBmb_io_bmb_cmd_payload_fragment_opcode ), //o
+ .io_bmb_cmd_payload_fragment_address (axiToBmb_io_bmb_cmd_payload_fragment_address[23:0] ), //o
+ .io_bmb_cmd_payload_fragment_length (axiToBmb_io_bmb_cmd_payload_fragment_length[9:0] ), //o
+ .io_bmb_cmd_payload_fragment_data (axiToBmb_io_bmb_cmd_payload_fragment_data[31:0] ), //o
+ .io_bmb_cmd_payload_fragment_mask (axiToBmb_io_bmb_cmd_payload_fragment_mask[3:0] ), //o
+ .io_bmb_rsp_valid (bmbHandle_decoder_io_input_rsp_valid ), //i
+ .io_bmb_rsp_ready (axiToBmb_io_bmb_rsp_ready ), //o
+ .io_bmb_rsp_payload_last (bmbHandle_decoder_io_input_rsp_payload_last ), //i
+ .io_bmb_rsp_payload_fragment_source (bmbHandle_decoder_io_input_rsp_payload_fragment_source ), //i
+ .io_bmb_rsp_payload_fragment_opcode (bmbHandle_decoder_io_input_rsp_payload_fragment_opcode ), //i
+ .io_bmb_rsp_payload_fragment_data (bmbHandle_decoder_io_input_rsp_payload_fragment_data[31:0]) //i
+ );
+ Axi4PeripheralBmbDecoder_be6ad777990c4e5089d0b11c63cc2698 bmbHandle_decoder (
+ .io_input_cmd_valid (axiToBmb_io_bmb_cmd_valid ), //i
+ .io_input_cmd_ready (bmbHandle_decoder_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (axiToBmb_io_bmb_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_source (axiToBmb_io_bmb_cmd_payload_fragment_source ), //i
+ .io_input_cmd_payload_fragment_opcode (axiToBmb_io_bmb_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (axiToBmb_io_bmb_cmd_payload_fragment_address[23:0] ), //i
+ .io_input_cmd_payload_fragment_length (axiToBmb_io_bmb_cmd_payload_fragment_length[9:0] ), //i
+ .io_input_cmd_payload_fragment_data (axiToBmb_io_bmb_cmd_payload_fragment_data[31:0] ), //i
+ .io_input_cmd_payload_fragment_mask (axiToBmb_io_bmb_cmd_payload_fragment_mask[3:0] ), //i
+ .io_input_rsp_valid (bmbHandle_decoder_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (axiToBmb_io_bmb_rsp_ready ), //i
+ .io_input_rsp_payload_last (bmbHandle_decoder_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_source (bmbHandle_decoder_io_input_rsp_payload_fragment_source ), //o
+ .io_input_rsp_payload_fragment_opcode (bmbHandle_decoder_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (bmbHandle_decoder_io_input_rsp_payload_fragment_data[31:0] ), //o
+ .io_outputs_0_cmd_valid (bmbHandle_decoder_io_outputs_0_cmd_valid ), //o
+ .io_outputs_0_cmd_ready (bmbHandle_unburstify_io_input_cmd_ready ), //i
+ .io_outputs_0_cmd_payload_last (bmbHandle_decoder_io_outputs_0_cmd_payload_last ), //o
+ .io_outputs_0_cmd_payload_fragment_source (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_source ), //o
+ .io_outputs_0_cmd_payload_fragment_opcode (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_opcode ), //o
+ .io_outputs_0_cmd_payload_fragment_address (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_0_cmd_payload_fragment_length (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_length[9:0] ), //o
+ .io_outputs_0_cmd_payload_fragment_data (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_0_cmd_payload_fragment_mask (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_0_rsp_valid (bmbHandle_unburstify_io_input_rsp_valid ), //i
+ .io_outputs_0_rsp_ready (bmbHandle_decoder_io_outputs_0_rsp_ready ), //o
+ .io_outputs_0_rsp_payload_last (bmbHandle_unburstify_io_input_rsp_payload_last ), //i
+ .io_outputs_0_rsp_payload_fragment_source (bmbHandle_unburstify_io_input_rsp_payload_fragment_source ), //i
+ .io_outputs_0_rsp_payload_fragment_opcode (bmbHandle_unburstify_io_input_rsp_payload_fragment_opcode ), //i
+ .io_outputs_0_rsp_payload_fragment_data (bmbHandle_unburstify_io_input_rsp_payload_fragment_data[31:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbUnburstify_be6ad777990c4e5089d0b11c63cc2698 bmbHandle_unburstify (
+ .io_input_cmd_valid (bmbHandle_decoder_io_outputs_0_cmd_valid ), //i
+ .io_input_cmd_ready (bmbHandle_unburstify_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (bmbHandle_decoder_io_outputs_0_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_source (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_source ), //i
+ .io_input_cmd_payload_fragment_opcode (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_address[23:0] ), //i
+ .io_input_cmd_payload_fragment_length (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_length[9:0] ), //i
+ .io_input_cmd_payload_fragment_data (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_data[31:0] ), //i
+ .io_input_cmd_payload_fragment_mask (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_mask[3:0] ), //i
+ .io_input_rsp_valid (bmbHandle_unburstify_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (bmbHandle_decoder_io_outputs_0_rsp_ready ), //i
+ .io_input_rsp_payload_last (bmbHandle_unburstify_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_source (bmbHandle_unburstify_io_input_rsp_payload_fragment_source ), //o
+ .io_input_rsp_payload_fragment_opcode (bmbHandle_unburstify_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (bmbHandle_unburstify_io_input_rsp_payload_fragment_data[31:0] ), //o
+ .io_output_cmd_valid (bmbHandle_unburstify_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready ), //i
+ .io_output_cmd_payload_last (bmbHandle_unburstify_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_opcode (bmbHandle_unburstify_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (bmbHandle_unburstify_io_output_cmd_payload_fragment_address[23:0] ), //o
+ .io_output_cmd_payload_fragment_length (bmbHandle_unburstify_io_output_cmd_payload_fragment_length[1:0] ), //o
+ .io_output_cmd_payload_fragment_data (bmbHandle_unburstify_io_output_cmd_payload_fragment_data[31:0] ), //o
+ .io_output_cmd_payload_fragment_mask (bmbHandle_unburstify_io_output_cmd_payload_fragment_mask[3:0] ), //o
+ .io_output_cmd_payload_fragment_context (bmbHandle_unburstify_io_output_cmd_payload_fragment_context[2:0] ), //o
+ .io_output_rsp_valid (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid ), //i
+ .io_output_rsp_ready (bmbHandle_unburstify_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last ), //i
+ .io_output_rsp_payload_fragment_opcode (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_data (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data[31:0] ), //i
+ .io_output_rsp_payload_fragment_context (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context[2:0]), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbDecoder_1_be6ad777990c4e5089d0b11c63cc2698 bmbPeripheral_bmb_decoder (
+ .io_input_cmd_valid (bmbPeripheral_bmb_cmd_valid ), //i
+ .io_input_cmd_ready (bmbPeripheral_bmb_decoder_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (bmbPeripheral_bmb_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (bmbPeripheral_bmb_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (bmbPeripheral_bmb_cmd_payload_fragment_address[23:0] ), //i
+ .io_input_cmd_payload_fragment_length (bmbPeripheral_bmb_cmd_payload_fragment_length[1:0] ), //i
+ .io_input_cmd_payload_fragment_data (bmbPeripheral_bmb_cmd_payload_fragment_data[31:0] ), //i
+ .io_input_cmd_payload_fragment_mask (bmbPeripheral_bmb_cmd_payload_fragment_mask[3:0] ), //i
+ .io_input_cmd_payload_fragment_context (bmbPeripheral_bmb_cmd_payload_fragment_context[2:0] ), //i
+ .io_input_rsp_valid (bmbPeripheral_bmb_decoder_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (bmbPeripheral_bmb_rsp_ready ), //i
+ .io_input_rsp_payload_last (bmbPeripheral_bmb_decoder_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_data[31:0] ), //o
+ .io_input_rsp_payload_fragment_context (bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_context[2:0] ), //o
+ .io_outputs_0_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_valid ), //o
+ .io_outputs_0_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready ), //i
+ .io_outputs_0_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_last ), //o
+ .io_outputs_0_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_opcode ), //o
+ .io_outputs_0_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_0_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_0_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_0_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_0_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_0_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid ), //i
+ .io_outputs_0_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_0_rsp_ready ), //o
+ .io_outputs_0_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last ), //i
+ .io_outputs_0_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode ), //i
+ .io_outputs_0_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data[31:0] ), //i
+ .io_outputs_0_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context[2:0] ), //i
+ .io_outputs_1_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_valid ), //o
+ .io_outputs_1_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready_1 ), //i
+ .io_outputs_1_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_last ), //o
+ .io_outputs_1_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_opcode ), //o
+ .io_outputs_1_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_1_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_1_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_1_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_1_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_1_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid_1 ), //i
+ .io_outputs_1_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_1_rsp_ready ), //o
+ .io_outputs_1_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last_1 ), //i
+ .io_outputs_1_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_1 ), //i
+ .io_outputs_1_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_1[31:0] ), //i
+ .io_outputs_1_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_1[2:0] ), //i
+ .io_outputs_2_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_valid ), //o
+ .io_outputs_2_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready_2 ), //i
+ .io_outputs_2_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_last ), //o
+ .io_outputs_2_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_opcode ), //o
+ .io_outputs_2_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_2_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_2_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_2_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_2_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_2_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid_2 ), //i
+ .io_outputs_2_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_2_rsp_ready ), //o
+ .io_outputs_2_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last_2 ), //i
+ .io_outputs_2_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_2 ), //i
+ .io_outputs_2_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_2[31:0] ), //i
+ .io_outputs_2_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_2[2:0] ), //i
+ .io_outputs_3_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_valid ), //o
+ .io_outputs_3_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready_3 ), //i
+ .io_outputs_3_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_last ), //o
+ .io_outputs_3_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_opcode ), //o
+ .io_outputs_3_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_3_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_3_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_3_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_3_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_3_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid_3 ), //i
+ .io_outputs_3_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_3_rsp_ready ), //o
+ .io_outputs_3_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last_3 ), //i
+ .io_outputs_3_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_3 ), //i
+ .io_outputs_3_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_3[31:0] ), //i
+ .io_outputs_3_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_3[2:0] ), //i
+ .io_outputs_4_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_valid ), //o
+ .io_outputs_4_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready_4 ), //i
+ .io_outputs_4_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_last ), //o
+ .io_outputs_4_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_opcode ), //o
+ .io_outputs_4_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_4_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_4_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_4_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_4_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_4_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid_4 ), //i
+ .io_outputs_4_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_4_rsp_ready ), //o
+ .io_outputs_4_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last_4 ), //i
+ .io_outputs_4_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_4 ), //i
+ .io_outputs_4_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_4[31:0] ), //i
+ .io_outputs_4_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_4[2:0] ), //i
+ .io_outputs_5_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_valid ), //o
+ .io_outputs_5_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready_5 ), //i
+ .io_outputs_5_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_last ), //o
+ .io_outputs_5_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_opcode ), //o
+ .io_outputs_5_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_5_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_5_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_5_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_5_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_5_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid_5 ), //i
+ .io_outputs_5_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_5_rsp_ready ), //o
+ .io_outputs_5_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last_5 ), //i
+ .io_outputs_5_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_5 ), //i
+ .io_outputs_5_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_5[31:0] ), //i
+ .io_outputs_5_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_5[2:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbUartCtrl_be6ad777990c4e5089d0b11c63cc2698 system_uart_0_io_logic (
+ .io_bus_cmd_valid (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid ), //i
+ .io_bus_cmd_ready (system_uart_0_io_logic_io_bus_cmd_ready ), //o
+ .io_bus_cmd_payload_last (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last ), //i
+ .io_bus_cmd_payload_fragment_opcode (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode ), //i
+ .io_bus_cmd_payload_fragment_address (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address[5:0]), //i
+ .io_bus_cmd_payload_fragment_length (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length[1:0] ), //i
+ .io_bus_cmd_payload_fragment_data (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data[31:0] ), //i
+ .io_bus_cmd_payload_fragment_context (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context[2:0]), //i
+ .io_bus_rsp_valid (system_uart_0_io_logic_io_bus_rsp_valid ), //o
+ .io_bus_rsp_ready (_zz_io_bus_rsp_ready ), //i
+ .io_bus_rsp_payload_last (system_uart_0_io_logic_io_bus_rsp_payload_last ), //o
+ .io_bus_rsp_payload_fragment_opcode (system_uart_0_io_logic_io_bus_rsp_payload_fragment_opcode ), //o
+ .io_bus_rsp_payload_fragment_data (system_uart_0_io_logic_io_bus_rsp_payload_fragment_data[31:0] ), //o
+ .io_bus_rsp_payload_fragment_context (system_uart_0_io_logic_io_bus_rsp_payload_fragment_context[2:0] ), //o
+ .io_uart_txd (system_uart_0_io_logic_io_uart_txd ), //o
+ .io_uart_rxd (system_uart_0_io_rxd ), //i
+ .system_uart_0_io_interrupt_source (system_uart_0_io_logic_system_uart_0_io_interrupt_source ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbSpiXdrMasterCtrl_be6ad777990c4e5089d0b11c63cc2698 system_spi_0_io_logic (
+ .io_ctrl_cmd_valid (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid ), //i
+ .io_ctrl_cmd_ready (system_spi_0_io_logic_io_ctrl_cmd_ready ), //o
+ .io_ctrl_cmd_payload_last (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last ), //i
+ .io_ctrl_cmd_payload_fragment_opcode (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode ), //i
+ .io_ctrl_cmd_payload_fragment_address (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address[11:0]), //i
+ .io_ctrl_cmd_payload_fragment_length (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length[1:0] ), //i
+ .io_ctrl_cmd_payload_fragment_data (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data[31:0] ), //i
+ .io_ctrl_cmd_payload_fragment_context (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context[2:0] ), //i
+ .io_ctrl_rsp_valid (system_spi_0_io_logic_io_ctrl_rsp_valid ), //o
+ .io_ctrl_rsp_ready (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready ), //i
+ .io_ctrl_rsp_payload_last (system_spi_0_io_logic_io_ctrl_rsp_payload_last ), //o
+ .io_ctrl_rsp_payload_fragment_opcode (system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_opcode ), //o
+ .io_ctrl_rsp_payload_fragment_data (system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_data[31:0] ), //o
+ .io_ctrl_rsp_payload_fragment_context (system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_context[2:0] ), //o
+ .io_spi_sclk_write (system_spi_0_io_logic_io_spi_sclk_write ), //o
+ .io_spi_data_0_writeEnable (system_spi_0_io_logic_io_spi_data_0_writeEnable ), //o
+ .io_spi_data_0_read (system_spi_0_io_data_0_read ), //i
+ .io_spi_data_0_write (system_spi_0_io_logic_io_spi_data_0_write ), //o
+ .io_spi_data_1_writeEnable (system_spi_0_io_logic_io_spi_data_1_writeEnable ), //o
+ .io_spi_data_1_read (system_spi_0_io_data_1_read ), //i
+ .io_spi_data_1_write (system_spi_0_io_logic_io_spi_data_1_write ), //o
+ .io_spi_data_2_writeEnable (system_spi_0_io_logic_io_spi_data_2_writeEnable ), //o
+ .io_spi_data_2_read (system_spi_0_io_data_2_read ), //i
+ .io_spi_data_2_write (system_spi_0_io_logic_io_spi_data_2_write ), //o
+ .io_spi_data_3_writeEnable (system_spi_0_io_logic_io_spi_data_3_writeEnable ), //o
+ .io_spi_data_3_read (system_spi_0_io_data_3_read ), //i
+ .io_spi_data_3_write (system_spi_0_io_logic_io_spi_data_3_write ), //o
+ .io_spi_ss (system_spi_0_io_logic_io_spi_ss[3:0] ), //o
+ .system_spi_0_io_interrupt_source (system_spi_0_io_logic_system_spi_0_io_interrupt_source ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbI2cCtrl_be6ad777990c4e5089d0b11c63cc2698 system_i2c_0_io_logic (
+ .io_ctrl_cmd_valid (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid ), //i
+ .io_ctrl_cmd_ready (system_i2c_0_io_logic_io_ctrl_cmd_ready ), //o
+ .io_ctrl_cmd_payload_last (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last ), //i
+ .io_ctrl_cmd_payload_fragment_opcode (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode ), //i
+ .io_ctrl_cmd_payload_fragment_address (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address[7:0]), //i
+ .io_ctrl_cmd_payload_fragment_length (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length[1:0] ), //i
+ .io_ctrl_cmd_payload_fragment_data (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data[31:0] ), //i
+ .io_ctrl_cmd_payload_fragment_context (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context[2:0]), //i
+ .io_ctrl_rsp_valid (system_i2c_0_io_logic_io_ctrl_rsp_valid ), //o
+ .io_ctrl_rsp_ready (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready ), //i
+ .io_ctrl_rsp_payload_last (system_i2c_0_io_logic_io_ctrl_rsp_payload_last ), //o
+ .io_ctrl_rsp_payload_fragment_opcode (system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_opcode ), //o
+ .io_ctrl_rsp_payload_fragment_data (system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_data[31:0] ), //o
+ .io_ctrl_rsp_payload_fragment_context (system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_context[2:0] ), //o
+ .io_i2c_sda_write (system_i2c_0_io_logic_io_i2c_sda_write ), //o
+ .io_i2c_sda_read (system_i2c_0_io_sda_read ), //i
+ .io_i2c_scl_write (system_i2c_0_io_logic_io_i2c_scl_write ), //o
+ .io_i2c_scl_read (system_i2c_0_io_scl_read ), //i
+ .system_i2c_0_io_interrupt_source (system_i2c_0_io_logic_system_i2c_0_io_interrupt_source ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbGpio2_be6ad777990c4e5089d0b11c63cc2698 system_gpio_0_io_logic (
+ .io_gpio_read (system_gpio_0_io_read[3:0] ), //i
+ .io_gpio_write (system_gpio_0_io_logic_io_gpio_write[3:0] ), //o
+ .io_gpio_writeEnable (system_gpio_0_io_logic_io_gpio_writeEnable[3:0] ), //o
+ .io_bus_cmd_valid (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid ), //i
+ .io_bus_cmd_ready (system_gpio_0_io_logic_io_bus_cmd_ready ), //o
+ .io_bus_cmd_payload_last (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last ), //i
+ .io_bus_cmd_payload_fragment_opcode (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode ), //i
+ .io_bus_cmd_payload_fragment_address (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address[7:0]), //i
+ .io_bus_cmd_payload_fragment_length (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length[1:0] ), //i
+ .io_bus_cmd_payload_fragment_data (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data[31:0] ), //i
+ .io_bus_cmd_payload_fragment_context (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context[2:0]), //i
+ .io_bus_rsp_valid (system_gpio_0_io_logic_io_bus_rsp_valid ), //o
+ .io_bus_rsp_ready (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready ), //i
+ .io_bus_rsp_payload_last (system_gpio_0_io_logic_io_bus_rsp_payload_last ), //o
+ .io_bus_rsp_payload_fragment_opcode (system_gpio_0_io_logic_io_bus_rsp_payload_fragment_opcode ), //o
+ .io_bus_rsp_payload_fragment_data (system_gpio_0_io_logic_io_bus_rsp_payload_fragment_data[31:0] ), //o
+ .io_bus_rsp_payload_fragment_context (system_gpio_0_io_logic_io_bus_rsp_payload_fragment_context[2:0] ), //o
+ .io_interrupt (system_gpio_0_io_logic_io_interrupt[3:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbWatchdog_be6ad777990c4e5089d0b11c63cc2698 system_watchdog_logic_logic (
+ .io_bus_cmd_valid (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid ), //i
+ .io_bus_cmd_ready (system_watchdog_logic_logic_io_bus_cmd_ready ), //o
+ .io_bus_cmd_payload_last (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last ), //i
+ .io_bus_cmd_payload_fragment_opcode (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode ), //i
+ .io_bus_cmd_payload_fragment_address (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address[7:0]), //i
+ .io_bus_cmd_payload_fragment_length (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length[1:0] ), //i
+ .io_bus_cmd_payload_fragment_data (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data[31:0] ), //i
+ .io_bus_cmd_payload_fragment_context (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context[2:0]), //i
+ .io_bus_rsp_valid (system_watchdog_logic_logic_io_bus_rsp_valid ), //o
+ .io_bus_rsp_ready (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready ), //i
+ .io_bus_rsp_payload_last (system_watchdog_logic_logic_io_bus_rsp_payload_last ), //o
+ .io_bus_rsp_payload_fragment_opcode (system_watchdog_logic_logic_io_bus_rsp_payload_fragment_opcode ), //o
+ .io_bus_rsp_payload_fragment_data (system_watchdog_logic_logic_io_bus_rsp_payload_fragment_data[31:0] ), //o
+ .io_bus_rsp_payload_fragment_context (system_watchdog_logic_logic_io_bus_rsp_payload_fragment_context[2:0] ), //o
+ .io_panics (system_watchdog_logic_logic_io_panics[1:0] ), //o
+ .io_heartBeat (1'b0 ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbToApb3Bridge_be6ad777990c4e5089d0b11c63cc2698 io_apbSlave_0_logic (
+ .io_input_cmd_valid (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid ), //i
+ .io_input_cmd_ready (io_apbSlave_0_logic_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address[15:0]), //i
+ .io_input_cmd_payload_fragment_length (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length[1:0] ), //i
+ .io_input_cmd_payload_fragment_data (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data[31:0] ), //i
+ .io_input_cmd_payload_fragment_context (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context[2:0] ), //i
+ .io_input_rsp_valid (io_apbSlave_0_logic_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready ), //i
+ .io_input_rsp_payload_last (io_apbSlave_0_logic_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (io_apbSlave_0_logic_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (io_apbSlave_0_logic_io_input_rsp_payload_fragment_data[31:0] ), //o
+ .io_input_rsp_payload_fragment_context (io_apbSlave_0_logic_io_input_rsp_payload_fragment_context[2:0] ), //o
+ .io_output_PADDR (io_apbSlave_0_logic_io_output_PADDR[15:0] ), //o
+ .io_output_PSEL (io_apbSlave_0_logic_io_output_PSEL ), //o
+ .io_output_PENABLE (io_apbSlave_0_logic_io_output_PENABLE ), //o
+ .io_output_PREADY (io_apbSlave_0_PREADY ), //i
+ .io_output_PWRITE (io_apbSlave_0_logic_io_output_PWRITE ), //o
+ .io_output_PWDATA (io_apbSlave_0_logic_io_output_PWDATA[31:0] ), //o
+ .io_output_PRDATA (io_apbSlave_0_PRDATA[31:0] ), //i
+ .io_output_PSLVERROR (io_apbSlave_0_PSLVERROR ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign axi_aw_halfPipe_fire = (axi_aw_halfPipe_valid && axi_aw_halfPipe_ready);
+ assign axi_awready = (! axi_aw_rValid);
+ assign axi_aw_halfPipe_valid = axi_aw_rValid;
+ assign axi_aw_halfPipe_payload_addr = axi_aw_rData_addr;
+ assign axi_aw_halfPipe_payload_len = axi_aw_rData_len;
+ assign axi_aw_halfPipe_payload_size = axi_aw_rData_size;
+ assign axi_aw_halfPipe_payload_cache = axi_aw_rData_cache;
+ assign axi_aw_halfPipe_payload_prot = axi_aw_rData_prot;
+ assign axi_aw_halfPipe_ready = streamArbiter_io_inputs_1_ready;
+ assign axi_w_halfPipe_fire = (axi_w_halfPipe_valid && axi_w_halfPipe_ready);
+ assign axi_wready = (! axi_w_rValid);
+ assign axi_w_halfPipe_valid = axi_w_rValid;
+ assign axi_w_halfPipe_payload_data = axi_w_rData_data;
+ assign axi_w_halfPipe_payload_strb = axi_w_rData_strb;
+ assign axi_w_halfPipe_payload_last = axi_w_rData_last;
+ assign axi_w_halfPipe_ready = axiShared_w_ready;
+ assign _zz_axiShared_b_ready = (! _zz_axi_bvalid_1);
+ assign _zz_axi_bvalid = _zz_axi_bvalid_1;
+ assign axi_bvalid = _zz_axi_bvalid;
+ assign axi_bresp = _zz_axi_bresp;
+ assign axi_ar_halfPipe_fire = (axi_ar_halfPipe_valid && axi_ar_halfPipe_ready);
+ assign axi_arready = (! axi_ar_rValid);
+ assign axi_ar_halfPipe_valid = axi_ar_rValid;
+ assign axi_ar_halfPipe_payload_addr = axi_ar_rData_addr;
+ assign axi_ar_halfPipe_payload_len = axi_ar_rData_len;
+ assign axi_ar_halfPipe_payload_size = axi_ar_rData_size;
+ assign axi_ar_halfPipe_payload_cache = axi_ar_rData_cache;
+ assign axi_ar_halfPipe_payload_prot = axi_ar_rData_prot;
+ assign axi_ar_halfPipe_ready = streamArbiter_io_inputs_0_ready;
+ assign _zz_axiShared_r_ready = (! _zz_axi_rvalid_1);
+ assign _zz_axi_rvalid = _zz_axi_rvalid_1;
+ assign axi_rvalid = _zz_axi_rvalid;
+ assign axi_rdata = _zz_axi_rdata;
+ assign axi_rresp = _zz_axi_rresp;
+ assign axi_rlast = _zz_axi_rlast;
+ assign axiShared_arw_valid = streamArbiter_io_output_valid;
+ assign axiShared_arw_payload_addr = streamArbiter_io_output_payload_addr;
+ assign axiShared_arw_payload_len = streamArbiter_io_output_payload_len;
+ assign axiShared_arw_payload_size = streamArbiter_io_output_payload_size;
+ assign axiShared_arw_payload_cache = streamArbiter_io_output_payload_cache;
+ assign axiShared_arw_payload_prot = streamArbiter_io_output_payload_prot;
+ assign axiShared_arw_payload_write = streamArbiter_io_chosenOH[1];
+ assign axiShared_w_valid = axi_w_halfPipe_valid;
+ assign axiShared_w_payload_data = axi_w_halfPipe_payload_data;
+ assign axiShared_w_payload_strb = axi_w_halfPipe_payload_strb;
+ assign axiShared_w_payload_last = axi_w_halfPipe_payload_last;
+ assign axiShared_b_ready = _zz_axiShared_b_ready;
+ assign axiShared_r_ready = _zz_axiShared_r_ready;
+ assign axiShared_arw_ready = axiToBmb_io_axi_arw_ready;
+ assign axiShared_w_ready = axiToBmb_io_axi_w_ready;
+ assign axiShared_b_valid = axiToBmb_io_axi_b_valid;
+ assign axiShared_b_payload_resp = axiToBmb_io_axi_b_payload_resp;
+ assign axiShared_r_valid = axiToBmb_io_axi_r_valid;
+ assign axiShared_r_payload_data = axiToBmb_io_axi_r_payload_data;
+ assign axiShared_r_payload_last = axiToBmb_io_axi_r_payload_last;
+ assign axiShared_r_payload_resp = axiToBmb_io_axi_r_payload_resp;
+ assign bmbPeripheral_bmb_cmd_valid = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = bmbPeripheral_bmb_cmd_ready;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = bmbPeripheral_bmb_rsp_valid;
+ assign bmbPeripheral_bmb_rsp_ready = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ assign bmbPeripheral_bmb_cmd_payload_last = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = bmbPeripheral_bmb_rsp_payload_last;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_opcode = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_address = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_length = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_data = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_mask = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_mask;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_context = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = bmbPeripheral_bmb_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = bmbPeripheral_bmb_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = bmbPeripheral_bmb_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbHandle_unburstify_io_output_cmd_valid;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbHandle_unburstify_io_output_rsp_ready;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbHandle_unburstify_io_output_cmd_payload_last;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbHandle_unburstify_io_output_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbHandle_unburstify_io_output_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbHandle_unburstify_io_output_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbHandle_unburstify_io_output_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_mask = bmbHandle_unburstify_io_output_cmd_payload_fragment_mask;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbHandle_unburstify_io_output_cmd_payload_fragment_context;
+ assign bmbPeripheral_bmb_cmd_ready = bmbPeripheral_bmb_decoder_io_input_cmd_ready;
+ assign bmbPeripheral_bmb_rsp_valid = bmbPeripheral_bmb_decoder_io_input_rsp_valid;
+ assign bmbPeripheral_bmb_rsp_payload_last = bmbPeripheral_bmb_decoder_io_input_rsp_payload_last;
+ assign bmbPeripheral_bmb_rsp_payload_fragment_opcode = bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_rsp_payload_fragment_data = bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_rsp_payload_fragment_context = bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_context;
+ assign system_uart_0_io_txd = system_uart_0_io_logic_io_uart_txd;
+ assign system_i2c_0_io_sda_write = system_i2c_0_io_logic_io_i2c_sda_write;
+ assign system_i2c_0_io_scl_write = system_i2c_0_io_logic_io_i2c_scl_write;
+ assign system_gpio_0_io_write = system_gpio_0_io_logic_io_gpio_write;
+ assign system_gpio_0_io_writeEnable = system_gpio_0_io_logic_io_gpio_writeEnable;
+ assign system_gpio_0_io_interrupts_0_source = system_gpio_0_io_logic_io_interrupt[0];
+ assign system_gpio_0_io_interrupts_1_source = system_gpio_0_io_logic_io_interrupt[1];
+ assign system_gpio_0_io_interrupts_2 = system_gpio_0_io_logic_io_interrupt[2];
+ assign system_gpio_0_io_interrupts_3 = system_gpio_0_io_logic_io_interrupt[3];
+ assign system_watchdog_logic_panics_0_source = system_watchdog_logic_logic_io_panics[0];
+ assign io_apbSlave_0_PADDR = io_apbSlave_0_logic_io_output_PADDR;
+ assign io_apbSlave_0_PSEL = io_apbSlave_0_logic_io_output_PSEL;
+ assign io_apbSlave_0_PENABLE = io_apbSlave_0_logic_io_output_PENABLE;
+ assign io_apbSlave_0_PWRITE = io_apbSlave_0_logic_io_output_PWRITE;
+ assign io_apbSlave_0_PWDATA = io_apbSlave_0_logic_io_output_PWDATA;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire = (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid && system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready);
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = (! system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid);
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready = system_uart_0_io_logic_io_bus_cmd_ready;
+ assign _zz_io_bus_rsp_ready = (! _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1);
+ assign _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign system_uart_0_io_interrupt = system_uart_0_io_logic_system_uart_0_io_interrupt_source;
+ assign system_spi_0_io_interrupt = system_spi_0_io_logic_system_spi_0_io_interrupt_source;
+ assign system_spi_0_io_sclk_write = system_spi_0_io_logic_io_spi_sclk_write;
+ assign system_spi_0_io_data_0_writeEnable = system_spi_0_io_logic_io_spi_data_0_writeEnable;
+ assign system_spi_0_io_data_0_write = system_spi_0_io_logic_io_spi_data_0_write;
+ assign system_spi_0_io_data_1_writeEnable = system_spi_0_io_logic_io_spi_data_1_writeEnable;
+ assign system_spi_0_io_data_1_write = system_spi_0_io_logic_io_spi_data_1_write;
+ assign system_spi_0_io_data_2_writeEnable = system_spi_0_io_logic_io_spi_data_2_writeEnable;
+ assign system_spi_0_io_data_2_write = system_spi_0_io_logic_io_spi_data_2_write;
+ assign system_spi_0_io_data_3_writeEnable = system_spi_0_io_logic_io_spi_data_3_writeEnable;
+ assign system_spi_0_io_data_3_write = system_spi_0_io_logic_io_spi_data_3_write;
+ assign system_spi_0_io_ss = system_spi_0_io_logic_io_spi_ss;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire = (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid && system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready);
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = (! system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid);
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready = system_spi_0_io_logic_io_ctrl_cmd_ready;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = system_spi_0_io_logic_io_ctrl_rsp_valid;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = system_spi_0_io_logic_io_ctrl_rsp_payload_last;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_opcode;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_data;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_context;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire = (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid && system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready);
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = (! system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid);
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready = system_i2c_0_io_logic_io_ctrl_cmd_ready;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = system_i2c_0_io_logic_io_ctrl_rsp_valid;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = system_i2c_0_io_logic_io_ctrl_rsp_payload_last;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_opcode;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_data;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_context;
+ assign system_i2c_0_io_interrupt = system_i2c_0_io_logic_system_i2c_0_io_interrupt_source;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = system_gpio_0_io_logic_io_bus_cmd_ready;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = system_gpio_0_io_logic_io_bus_rsp_valid;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = system_gpio_0_io_logic_io_bus_rsp_payload_last;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = system_gpio_0_io_logic_io_bus_rsp_payload_fragment_opcode;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = system_gpio_0_io_logic_io_bus_rsp_payload_fragment_data;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = system_gpio_0_io_logic_io_bus_rsp_payload_fragment_context;
+ assign system_gpio_0_io_interrupts_0 = system_gpio_0_io_interrupts_0_source;
+ assign system_gpio_0_io_interrupts_1 = system_gpio_0_io_interrupts_1_source;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = system_watchdog_logic_logic_io_bus_cmd_ready;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = system_watchdog_logic_logic_io_bus_rsp_valid;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = system_watchdog_logic_logic_io_bus_rsp_payload_last;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = system_watchdog_logic_logic_io_bus_rsp_payload_fragment_opcode;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = system_watchdog_logic_logic_io_bus_rsp_payload_fragment_data;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = system_watchdog_logic_logic_io_bus_rsp_payload_fragment_context;
+ assign system_watchdog_logic_panics_0 = system_watchdog_logic_panics_0_source;
+ assign system_watchdog_hardPanic_reset = system_watchdog_logic_logic_io_panics[1];
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = io_apbSlave_0_logic_io_input_cmd_ready;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = io_apbSlave_0_logic_io_input_rsp_valid;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = io_apbSlave_0_logic_io_input_rsp_payload_last;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = io_apbSlave_0_logic_io_input_rsp_payload_fragment_opcode;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = io_apbSlave_0_logic_io_input_rsp_payload_fragment_data;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = io_apbSlave_0_logic_io_input_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready = bmbPeripheral_bmb_decoder_io_outputs_0_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_context;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address[5:0];
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready_1 = bmbPeripheral_bmb_decoder_io_outputs_1_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_context;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid_1;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready_1;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last_1;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_1;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_1[11:0];
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_1;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_1;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_1;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready_2 = bmbPeripheral_bmb_decoder_io_outputs_2_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_context;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid_2;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready_2;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last_2;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_2;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_2[7:0];
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_2;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_2;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_2;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready_3 = bmbPeripheral_bmb_decoder_io_outputs_3_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_context;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid_3;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready_3;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last_3;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_3;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_3[7:0];
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_3;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_3;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_3;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready_4 = bmbPeripheral_bmb_decoder_io_outputs_4_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_context;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid_4;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready_4;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last_4;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_4;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_4[7:0];
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_4;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_4;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_4;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready_5 = bmbPeripheral_bmb_decoder_io_outputs_5_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_context;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid_5;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready_5;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last_5;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_5;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_5[15:0];
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_5;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_5;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_5;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ always @(posedge clk) begin
+ if(reset) begin
+ axi_aw_rValid <= 1'b0;
+ axi_w_rValid <= 1'b0;
+ _zz_axi_bvalid_1 <= 1'b0;
+ axi_ar_rValid <= 1'b0;
+ _zz_axi_rvalid_1 <= 1'b0;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1 <= 1'b0;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ end else begin
+ if(axi_awvalid) begin
+ axi_aw_rValid <= 1'b1;
+ end
+ if(axi_aw_halfPipe_fire) begin
+ axi_aw_rValid <= 1'b0;
+ end
+ if(axi_wvalid) begin
+ axi_w_rValid <= 1'b1;
+ end
+ if(axi_w_halfPipe_fire) begin
+ axi_w_rValid <= 1'b0;
+ end
+ if(axiShared_b_valid) begin
+ _zz_axi_bvalid_1 <= 1'b1;
+ end
+ if((_zz_axi_bvalid && axi_bready)) begin
+ _zz_axi_bvalid_1 <= 1'b0;
+ end
+ if(axi_arvalid) begin
+ axi_ar_rValid <= 1'b1;
+ end
+ if(axi_ar_halfPipe_fire) begin
+ axi_ar_rValid <= 1'b0;
+ end
+ if(axiShared_r_valid) begin
+ _zz_axi_rvalid_1 <= 1'b1;
+ end
+ if((_zz_axi_rvalid && axi_rready)) begin
+ _zz_axi_rvalid_1 <= 1'b0;
+ end
+ if(system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid) begin
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b1;
+ end
+ if(system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire) begin
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ end
+ if(system_uart_0_io_logic_io_bus_rsp_valid) begin
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1 <= 1'b1;
+ end
+ if((_zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid && system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready)) begin
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1 <= 1'b0;
+ end
+ if(system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid) begin
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b1;
+ end
+ if(system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire) begin
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ end
+ if(system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid) begin
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b1;
+ end
+ if(system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire) begin
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(axi_awready) begin
+ axi_aw_rData_addr <= axi_awaddr;
+ axi_aw_rData_len <= axi_awlen;
+ axi_aw_rData_size <= axi_awsize;
+ axi_aw_rData_cache <= axi_awcache;
+ axi_aw_rData_prot <= axi_awprot;
+ end
+ if(axi_wready) begin
+ axi_w_rData_data <= axi_wdata;
+ axi_w_rData_strb <= axi_wstrb;
+ axi_w_rData_last <= axi_wlast;
+ end
+ if(_zz_axiShared_b_ready) begin
+ _zz_axi_bresp <= axiShared_b_payload_resp;
+ end
+ if(axi_arready) begin
+ axi_ar_rData_addr <= axi_araddr;
+ axi_ar_rData_len <= axi_arlen;
+ axi_ar_rData_size <= axi_arsize;
+ axi_ar_rData_cache <= axi_arcache;
+ axi_ar_rData_prot <= axi_arprot;
+ end
+ if(_zz_axiShared_r_ready) begin
+ _zz_axi_rdata <= axiShared_r_payload_data;
+ _zz_axi_rresp <= axiShared_r_payload_resp;
+ _zz_axi_rlast <= axiShared_r_payload_last;
+ end
+ if(system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready) begin
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ end
+ if(_zz_io_bus_rsp_ready) begin
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last <= system_uart_0_io_logic_io_bus_rsp_payload_last;
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode <= system_uart_0_io_logic_io_bus_rsp_payload_fragment_opcode;
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data <= system_uart_0_io_logic_io_bus_rsp_payload_fragment_data;
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context <= system_uart_0_io_logic_io_bus_rsp_payload_fragment_context;
+ end
+ if(system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready) begin
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ end
+ if(system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready) begin
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbToApb3Bridge_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [15:0] io_input_cmd_payload_fragment_address,
+ input wire [1:0] io_input_cmd_payload_fragment_length,
+ input wire [31:0] io_input_cmd_payload_fragment_data,
+ input wire [2:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [31:0] io_input_rsp_payload_fragment_data,
+ output wire [2:0] io_input_rsp_payload_fragment_context,
+ output wire [15:0] io_output_PADDR,
+ output wire [0:0] io_output_PSEL,
+ output wire io_output_PENABLE,
+ input wire io_output_PREADY,
+ output wire io_output_PWRITE,
+ output wire [31:0] io_output_PWDATA,
+ input wire [31:0] io_output_PRDATA,
+ input wire io_output_PSLVERROR,
+ input wire clk,
+ input wire reset
+);
+
+ wire bmbBuffer_cmd_valid;
+ reg bmbBuffer_cmd_ready;
+ wire bmbBuffer_cmd_payload_last;
+ wire [0:0] bmbBuffer_cmd_payload_fragment_opcode;
+ wire [15:0] bmbBuffer_cmd_payload_fragment_address;
+ wire [1:0] bmbBuffer_cmd_payload_fragment_length;
+ wire [31:0] bmbBuffer_cmd_payload_fragment_data;
+ wire [2:0] bmbBuffer_cmd_payload_fragment_context;
+ reg bmbBuffer_rsp_valid;
+ reg bmbBuffer_rsp_ready;
+ wire bmbBuffer_rsp_payload_last;
+ reg [0:0] bmbBuffer_rsp_payload_fragment_opcode;
+ wire [31:0] bmbBuffer_rsp_payload_fragment_data;
+ wire [2:0] bmbBuffer_rsp_payload_fragment_context;
+ wire io_input_rsp_isStall;
+ wire _zz_io_input_cmd_ready;
+ wire bmbBuffer_rsp_m2sPipe_valid;
+ wire bmbBuffer_rsp_m2sPipe_ready;
+ wire bmbBuffer_rsp_m2sPipe_payload_last;
+ wire [0:0] bmbBuffer_rsp_m2sPipe_payload_fragment_opcode;
+ wire [31:0] bmbBuffer_rsp_m2sPipe_payload_fragment_data;
+ wire [2:0] bmbBuffer_rsp_m2sPipe_payload_fragment_context;
+ reg bmbBuffer_rsp_rValid;
+ reg bmbBuffer_rsp_rData_last;
+ reg [0:0] bmbBuffer_rsp_rData_fragment_opcode;
+ reg [31:0] bmbBuffer_rsp_rData_fragment_data;
+ reg [2:0] bmbBuffer_rsp_rData_fragment_context;
+ wire when_Stream_l375;
+ reg state;
+ wire when_BmbToApb3Bridge_l46;
+
+ assign io_input_rsp_isStall = (io_input_rsp_valid && (! io_input_rsp_ready));
+ assign _zz_io_input_cmd_ready = (! io_input_rsp_isStall);
+ assign io_input_cmd_ready = (bmbBuffer_cmd_ready && _zz_io_input_cmd_ready);
+ assign bmbBuffer_cmd_valid = (io_input_cmd_valid && _zz_io_input_cmd_ready);
+ assign bmbBuffer_cmd_payload_last = io_input_cmd_payload_last;
+ assign bmbBuffer_cmd_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign bmbBuffer_cmd_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign bmbBuffer_cmd_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign bmbBuffer_cmd_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign bmbBuffer_cmd_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ always @(*) begin
+ bmbBuffer_rsp_ready = bmbBuffer_rsp_m2sPipe_ready;
+ if(when_Stream_l375) begin
+ bmbBuffer_rsp_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! bmbBuffer_rsp_m2sPipe_valid);
+ assign bmbBuffer_rsp_m2sPipe_valid = bmbBuffer_rsp_rValid;
+ assign bmbBuffer_rsp_m2sPipe_payload_last = bmbBuffer_rsp_rData_last;
+ assign bmbBuffer_rsp_m2sPipe_payload_fragment_opcode = bmbBuffer_rsp_rData_fragment_opcode;
+ assign bmbBuffer_rsp_m2sPipe_payload_fragment_data = bmbBuffer_rsp_rData_fragment_data;
+ assign bmbBuffer_rsp_m2sPipe_payload_fragment_context = bmbBuffer_rsp_rData_fragment_context;
+ assign io_input_rsp_valid = bmbBuffer_rsp_m2sPipe_valid;
+ assign bmbBuffer_rsp_m2sPipe_ready = io_input_rsp_ready;
+ assign io_input_rsp_payload_last = bmbBuffer_rsp_m2sPipe_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = bmbBuffer_rsp_m2sPipe_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_data = bmbBuffer_rsp_m2sPipe_payload_fragment_data;
+ assign io_input_rsp_payload_fragment_context = bmbBuffer_rsp_m2sPipe_payload_fragment_context;
+ always @(*) begin
+ bmbBuffer_cmd_ready = 1'b0;
+ if(!when_BmbToApb3Bridge_l46) begin
+ if(io_output_PREADY) begin
+ bmbBuffer_cmd_ready = 1'b1;
+ end
+ end
+ end
+
+ assign io_output_PSEL[0] = bmbBuffer_cmd_valid;
+ assign io_output_PENABLE = state;
+ assign io_output_PWRITE = (bmbBuffer_cmd_payload_fragment_opcode == 1'b1);
+ assign io_output_PADDR = bmbBuffer_cmd_payload_fragment_address;
+ assign io_output_PWDATA = bmbBuffer_cmd_payload_fragment_data;
+ always @(*) begin
+ bmbBuffer_rsp_valid = 1'b0;
+ if(!when_BmbToApb3Bridge_l46) begin
+ if(io_output_PREADY) begin
+ bmbBuffer_rsp_valid = 1'b1;
+ end
+ end
+ end
+
+ assign bmbBuffer_rsp_payload_fragment_data = io_output_PRDATA;
+ assign when_BmbToApb3Bridge_l46 = (! state);
+ assign bmbBuffer_rsp_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign bmbBuffer_rsp_payload_last = 1'b1;
+ always @(*) begin
+ bmbBuffer_rsp_payload_fragment_opcode = 1'b0;
+ if(io_output_PSLVERROR) begin
+ bmbBuffer_rsp_payload_fragment_opcode = 1'b1;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ bmbBuffer_rsp_rValid <= 1'b0;
+ state <= 1'b0;
+ end else begin
+ if(bmbBuffer_rsp_ready) begin
+ bmbBuffer_rsp_rValid <= bmbBuffer_rsp_valid;
+ end
+ if(when_BmbToApb3Bridge_l46) begin
+ state <= bmbBuffer_cmd_valid;
+ end else begin
+ if(io_output_PREADY) begin
+ state <= 1'b0;
+ end
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(bmbBuffer_rsp_ready) begin
+ bmbBuffer_rsp_rData_last <= bmbBuffer_rsp_payload_last;
+ bmbBuffer_rsp_rData_fragment_opcode <= bmbBuffer_rsp_payload_fragment_opcode;
+ bmbBuffer_rsp_rData_fragment_data <= bmbBuffer_rsp_payload_fragment_data;
+ bmbBuffer_rsp_rData_fragment_context <= bmbBuffer_rsp_payload_fragment_context;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbWatchdog_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_bus_cmd_valid,
+ output wire io_bus_cmd_ready,
+ input wire io_bus_cmd_payload_last,
+ input wire [0:0] io_bus_cmd_payload_fragment_opcode,
+ input wire [7:0] io_bus_cmd_payload_fragment_address,
+ input wire [1:0] io_bus_cmd_payload_fragment_length,
+ input wire [31:0] io_bus_cmd_payload_fragment_data,
+ input wire [2:0] io_bus_cmd_payload_fragment_context,
+ output wire io_bus_rsp_valid,
+ input wire io_bus_rsp_ready,
+ output wire io_bus_rsp_payload_last,
+ output wire [0:0] io_bus_rsp_payload_fragment_opcode,
+ output wire [31:0] io_bus_rsp_payload_fragment_data,
+ output wire [2:0] io_bus_rsp_payload_fragment_context,
+ output wire [1:0] io_panics,
+ input wire io_heartBeat,
+ input wire clk,
+ input wire reset
+);
+
+ wire wd_prescaler_io_clear;
+ wire wd_prescaler_io_overflow;
+ wire wd_counters_0_timer_io_full;
+ wire [15:0] wd_counters_0_timer_io_value;
+ wire wd_counters_1_timer_io_full;
+ wire [15:0] wd_counters_1_timer_io_value;
+ reg [1:0] wd_api_enables;
+ reg wd_api_heartbeat;
+ reg [1:0] wd_api_panics;
+ wire wd_counters_0_clear;
+ reg wd_counters_0_full;
+ wire wd_counters_1_clear;
+ reg wd_counters_1_full;
+ wire busCtrl_readErrorFlag;
+ wire busCtrl_writeErrorFlag;
+ wire busCtrl_readHaltTrigger;
+ wire busCtrl_writeHaltTrigger;
+ wire busCtrl_rsp_valid;
+ wire busCtrl_rsp_ready;
+ wire busCtrl_rsp_payload_last;
+ reg [0:0] busCtrl_rsp_payload_fragment_opcode;
+ reg [31:0] busCtrl_rsp_payload_fragment_data;
+ wire [2:0] busCtrl_rsp_payload_fragment_context;
+ wire _zz_busCtrl_rsp_ready;
+ reg _zz_busCtrl_rsp_ready_1;
+ wire _zz_io_bus_rsp_valid;
+ reg _zz_io_bus_rsp_valid_1;
+ reg _zz_io_bus_rsp_payload_last;
+ reg [0:0] _zz_io_bus_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_bus_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_bus_rsp_payload_fragment_context;
+ wire when_Stream_l375;
+ wire busCtrl_askWrite;
+ wire busCtrl_askRead;
+ wire io_bus_cmd_fire;
+ wire busCtrl_doWrite;
+ wire busCtrl_doRead;
+ wire when_BmbSlaveFactory_l33;
+ wire when_BmbSlaveFactory_l35;
+ reg driver_unlocked;
+ reg _zz_when_Watchdog_l42;
+ wire when_Watchdog_l42;
+ reg _zz_when_Watchdog_l43;
+ wire when_Watchdog_l43;
+ reg _zz_wd_api_heartbeat;
+ wire [1:0] _zz_when_Watchdog_l52;
+ reg _zz_when_Watchdog_l50;
+ wire when_Watchdog_l50;
+ wire when_Watchdog_l52;
+ wire when_Watchdog_l52_1;
+ reg _zz_when_Watchdog_l55;
+ wire when_Watchdog_l55;
+ wire when_Watchdog_l57;
+ wire when_Watchdog_l57_1;
+ reg [23:0] _zz_io_limit;
+ reg [15:0] _zz_io_limit_1;
+ reg [15:0] _zz_io_limit_2;
+
+ Axi4PeripheralPrescaler_be6ad777990c4e5089d0b11c63cc2698 wd_prescaler (
+ .io_clear (wd_prescaler_io_clear ), //i
+ .io_limit (_zz_io_limit[23:0] ), //i
+ .io_overflow (wd_prescaler_io_overflow), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralTimer_be6ad777990c4e5089d0b11c63cc2698 wd_counters_0_timer (
+ .io_tick (wd_prescaler_io_overflow ), //i
+ .io_clear (wd_counters_0_clear ), //i
+ .io_limit (_zz_io_limit_1[15:0] ), //i
+ .io_full (wd_counters_0_timer_io_full ), //o
+ .io_value (wd_counters_0_timer_io_value[15:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralTimer_be6ad777990c4e5089d0b11c63cc2698 wd_counters_1_timer (
+ .io_tick (wd_prescaler_io_overflow ), //i
+ .io_clear (wd_counters_1_clear ), //i
+ .io_limit (_zz_io_limit_2[15:0] ), //i
+ .io_full (wd_counters_1_timer_io_full ), //o
+ .io_value (wd_counters_1_timer_io_value[15:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign wd_prescaler_io_clear = (wd_api_heartbeat || (wd_api_enables == 2'b00));
+ assign wd_counters_0_clear = ((! wd_api_enables[0]) || wd_api_heartbeat);
+ always @(*) begin
+ wd_api_panics[0] = wd_counters_0_full;
+ wd_api_panics[1] = wd_counters_1_full;
+ end
+
+ assign wd_counters_1_clear = ((! wd_api_enables[1]) || wd_api_heartbeat);
+ assign busCtrl_readErrorFlag = 1'b0;
+ assign busCtrl_writeErrorFlag = 1'b0;
+ assign busCtrl_readHaltTrigger = 1'b0;
+ assign busCtrl_writeHaltTrigger = 1'b0;
+ assign _zz_busCtrl_rsp_ready = (! (busCtrl_readHaltTrigger || busCtrl_writeHaltTrigger));
+ assign busCtrl_rsp_ready = (_zz_busCtrl_rsp_ready_1 && _zz_busCtrl_rsp_ready);
+ always @(*) begin
+ _zz_busCtrl_rsp_ready_1 = io_bus_rsp_ready;
+ if(when_Stream_l375) begin
+ _zz_busCtrl_rsp_ready_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! _zz_io_bus_rsp_valid);
+ assign _zz_io_bus_rsp_valid = _zz_io_bus_rsp_valid_1;
+ assign io_bus_rsp_valid = _zz_io_bus_rsp_valid;
+ assign io_bus_rsp_payload_last = _zz_io_bus_rsp_payload_last;
+ assign io_bus_rsp_payload_fragment_opcode = _zz_io_bus_rsp_payload_fragment_opcode;
+ assign io_bus_rsp_payload_fragment_data = _zz_io_bus_rsp_payload_fragment_data;
+ assign io_bus_rsp_payload_fragment_context = _zz_io_bus_rsp_payload_fragment_context;
+ assign busCtrl_askWrite = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_askRead = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign io_bus_cmd_fire = (io_bus_cmd_valid && io_bus_cmd_ready);
+ assign busCtrl_doWrite = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_doRead = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign busCtrl_rsp_valid = io_bus_cmd_valid;
+ assign io_bus_cmd_ready = busCtrl_rsp_ready;
+ assign busCtrl_rsp_payload_last = 1'b1;
+ assign when_BmbSlaveFactory_l33 = (busCtrl_doWrite && busCtrl_writeErrorFlag);
+ always @(*) begin
+ if(when_BmbSlaveFactory_l33) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ if(when_BmbSlaveFactory_l35) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b0;
+ end
+ end
+ end
+
+ assign when_BmbSlaveFactory_l35 = (busCtrl_doRead && busCtrl_readErrorFlag);
+ always @(*) begin
+ busCtrl_rsp_payload_fragment_data = 32'h0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'hc0 : begin
+ busCtrl_rsp_payload_fragment_data[15 : 0] = wd_counters_0_timer_io_value;
+ end
+ 8'hc4 : begin
+ busCtrl_rsp_payload_fragment_data[15 : 0] = wd_counters_1_timer_io_value;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign busCtrl_rsp_payload_fragment_context = io_bus_cmd_payload_fragment_context;
+ always @(*) begin
+ _zz_when_Watchdog_l42 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h0 : begin
+ if(busCtrl_doWrite) begin
+ _zz_when_Watchdog_l42 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_Watchdog_l42 = (_zz_when_Watchdog_l42 && (io_bus_cmd_payload_fragment_data[31 : 0] == 32'h3c21b925));
+ always @(*) begin
+ _zz_when_Watchdog_l43 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h0 : begin
+ if(busCtrl_doWrite) begin
+ _zz_when_Watchdog_l43 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_Watchdog_l43 = (_zz_when_Watchdog_l43 && (io_bus_cmd_payload_fragment_data[31 : 0] == 32'h3c21b924));
+ always @(*) begin
+ _zz_wd_api_heartbeat = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h0 : begin
+ if(busCtrl_doWrite) begin
+ _zz_wd_api_heartbeat = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ wd_api_heartbeat = (_zz_wd_api_heartbeat && (io_bus_cmd_payload_fragment_data[31 : 0] == 32'had68e70d));
+ if(io_heartBeat) begin
+ wd_api_heartbeat = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ _zz_when_Watchdog_l50 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h04 : begin
+ if(busCtrl_doWrite) begin
+ _zz_when_Watchdog_l50 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_Watchdog_l50 = (_zz_when_Watchdog_l50 && driver_unlocked);
+ assign when_Watchdog_l52 = _zz_when_Watchdog_l52[0];
+ assign when_Watchdog_l52_1 = _zz_when_Watchdog_l52[1];
+ always @(*) begin
+ _zz_when_Watchdog_l55 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h08 : begin
+ if(busCtrl_doWrite) begin
+ _zz_when_Watchdog_l55 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_Watchdog_l55 = (_zz_when_Watchdog_l55 && driver_unlocked);
+ assign when_Watchdog_l57 = _zz_when_Watchdog_l52[0];
+ assign when_Watchdog_l57_1 = _zz_when_Watchdog_l52[1];
+ assign io_panics = wd_api_panics;
+ assign _zz_when_Watchdog_l52 = io_bus_cmd_payload_fragment_data[1 : 0];
+ always @(posedge clk) begin
+ if(reset) begin
+ wd_counters_0_full <= 1'b0;
+ wd_counters_1_full <= 1'b0;
+ _zz_io_bus_rsp_valid_1 <= 1'b0;
+ driver_unlocked <= 1'b1;
+ wd_api_enables <= 2'b00;
+ _zz_io_limit <= 24'h0;
+ _zz_io_limit_1 <= 16'h0;
+ _zz_io_limit_2 <= 16'h0;
+ end else begin
+ if(wd_counters_0_timer_io_full) begin
+ wd_counters_0_full <= 1'b1;
+ end
+ if(wd_counters_0_clear) begin
+ wd_counters_0_full <= 1'b0;
+ end
+ if(wd_counters_1_timer_io_full) begin
+ wd_counters_1_full <= 1'b1;
+ end
+ if(wd_counters_1_clear) begin
+ wd_counters_1_full <= 1'b0;
+ end
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_bus_rsp_valid_1 <= (busCtrl_rsp_valid && _zz_busCtrl_rsp_ready);
+ end
+ if(when_Watchdog_l42) begin
+ driver_unlocked <= 1'b1;
+ end
+ if(when_Watchdog_l43) begin
+ driver_unlocked <= 1'b0;
+ end
+ if(when_Watchdog_l50) begin
+ if(when_Watchdog_l52) begin
+ wd_api_enables[0] <= 1'b1;
+ end
+ if(when_Watchdog_l52_1) begin
+ wd_api_enables[1] <= 1'b1;
+ end
+ end
+ if(when_Watchdog_l55) begin
+ if(when_Watchdog_l57) begin
+ wd_api_enables[0] <= 1'b0;
+ end
+ if(when_Watchdog_l57_1) begin
+ wd_api_enables[1] <= 1'b0;
+ end
+ end
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ if(driver_unlocked) begin
+ _zz_io_limit <= io_bus_cmd_payload_fragment_data[23 : 0];
+ end
+ end
+ end
+ 8'h80 : begin
+ if(busCtrl_doWrite) begin
+ if(driver_unlocked) begin
+ _zz_io_limit_1 <= io_bus_cmd_payload_fragment_data[15 : 0];
+ end
+ end
+ end
+ 8'h84 : begin
+ if(busCtrl_doWrite) begin
+ if(driver_unlocked) begin
+ _zz_io_limit_2 <= io_bus_cmd_payload_fragment_data[15 : 0];
+ end
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_bus_rsp_payload_last <= busCtrl_rsp_payload_last;
+ _zz_io_bus_rsp_payload_fragment_opcode <= busCtrl_rsp_payload_fragment_opcode;
+ _zz_io_bus_rsp_payload_fragment_data <= busCtrl_rsp_payload_fragment_data;
+ _zz_io_bus_rsp_payload_fragment_context <= busCtrl_rsp_payload_fragment_context;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbGpio2_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire [3:0] io_gpio_read,
+ output reg [3:0] io_gpio_write,
+ output reg [3:0] io_gpio_writeEnable,
+ input wire io_bus_cmd_valid,
+ output wire io_bus_cmd_ready,
+ input wire io_bus_cmd_payload_last,
+ input wire [0:0] io_bus_cmd_payload_fragment_opcode,
+ input wire [7:0] io_bus_cmd_payload_fragment_address,
+ input wire [1:0] io_bus_cmd_payload_fragment_length,
+ input wire [31:0] io_bus_cmd_payload_fragment_data,
+ input wire [2:0] io_bus_cmd_payload_fragment_context,
+ output wire io_bus_rsp_valid,
+ input wire io_bus_rsp_ready,
+ output wire io_bus_rsp_payload_last,
+ output wire [0:0] io_bus_rsp_payload_fragment_opcode,
+ output wire [31:0] io_bus_rsp_payload_fragment_data,
+ output wire [2:0] io_bus_rsp_payload_fragment_context,
+ output reg [3:0] io_interrupt,
+ input wire clk,
+ input wire reset
+);
+
+ wire mapper_readErrorFlag;
+ wire mapper_writeErrorFlag;
+ wire mapper_readHaltTrigger;
+ wire mapper_writeHaltTrigger;
+ wire mapper_rsp_valid;
+ wire mapper_rsp_ready;
+ wire mapper_rsp_payload_last;
+ reg [0:0] mapper_rsp_payload_fragment_opcode;
+ reg [31:0] mapper_rsp_payload_fragment_data;
+ wire [2:0] mapper_rsp_payload_fragment_context;
+ wire _zz_mapper_rsp_ready;
+ reg _zz_mapper_rsp_ready_1;
+ wire _zz_io_bus_rsp_valid;
+ reg _zz_io_bus_rsp_valid_1;
+ reg _zz_io_bus_rsp_payload_last;
+ reg [0:0] _zz_io_bus_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_bus_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_bus_rsp_payload_fragment_context;
+ wire when_Stream_l375;
+ wire mapper_askWrite;
+ wire mapper_askRead;
+ wire io_bus_cmd_fire;
+ wire mapper_doWrite;
+ wire mapper_doRead;
+ wire when_BmbSlaveFactory_l33;
+ wire when_BmbSlaveFactory_l35;
+ reg [3:0] io_gpio_read_delay_1;
+ reg [3:0] syncronized;
+ reg [3:0] last;
+ reg _zz_io_gpio_write;
+ reg _zz_io_gpio_writeEnable;
+ reg _zz_io_gpio_write_1;
+ reg _zz_io_gpio_writeEnable_1;
+ reg _zz_io_gpio_write_2;
+ reg _zz_io_gpio_writeEnable_2;
+ reg _zz_io_gpio_write_3;
+ reg _zz_io_gpio_writeEnable_3;
+ reg [3:0] interrupt_enable_high;
+ reg [3:0] interrupt_enable_low;
+ reg [3:0] interrupt_enable_rise;
+ reg [3:0] interrupt_enable_fall;
+ wire [3:0] interrupt_valid;
+ reg _zz_mapper_rsp_payload_fragment_data;
+ reg _zz_mapper_rsp_payload_fragment_data_1;
+ reg _zz_mapper_rsp_payload_fragment_data_2;
+ reg _zz_mapper_rsp_payload_fragment_data_3;
+ reg _zz_mapper_rsp_payload_fragment_data_4;
+ reg _zz_mapper_rsp_payload_fragment_data_5;
+ reg _zz_mapper_rsp_payload_fragment_data_6;
+ reg _zz_mapper_rsp_payload_fragment_data_7;
+
+ assign mapper_readErrorFlag = 1'b0;
+ assign mapper_writeErrorFlag = 1'b0;
+ assign mapper_readHaltTrigger = 1'b0;
+ assign mapper_writeHaltTrigger = 1'b0;
+ assign _zz_mapper_rsp_ready = (! (mapper_readHaltTrigger || mapper_writeHaltTrigger));
+ assign mapper_rsp_ready = (_zz_mapper_rsp_ready_1 && _zz_mapper_rsp_ready);
+ always @(*) begin
+ _zz_mapper_rsp_ready_1 = io_bus_rsp_ready;
+ if(when_Stream_l375) begin
+ _zz_mapper_rsp_ready_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! _zz_io_bus_rsp_valid);
+ assign _zz_io_bus_rsp_valid = _zz_io_bus_rsp_valid_1;
+ assign io_bus_rsp_valid = _zz_io_bus_rsp_valid;
+ assign io_bus_rsp_payload_last = _zz_io_bus_rsp_payload_last;
+ assign io_bus_rsp_payload_fragment_opcode = _zz_io_bus_rsp_payload_fragment_opcode;
+ assign io_bus_rsp_payload_fragment_data = _zz_io_bus_rsp_payload_fragment_data;
+ assign io_bus_rsp_payload_fragment_context = _zz_io_bus_rsp_payload_fragment_context;
+ assign mapper_askWrite = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign mapper_askRead = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign io_bus_cmd_fire = (io_bus_cmd_valid && io_bus_cmd_ready);
+ assign mapper_doWrite = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign mapper_doRead = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign mapper_rsp_valid = io_bus_cmd_valid;
+ assign io_bus_cmd_ready = mapper_rsp_ready;
+ assign mapper_rsp_payload_last = 1'b1;
+ assign when_BmbSlaveFactory_l33 = (mapper_doWrite && mapper_writeErrorFlag);
+ always @(*) begin
+ if(when_BmbSlaveFactory_l33) begin
+ mapper_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ if(when_BmbSlaveFactory_l35) begin
+ mapper_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ mapper_rsp_payload_fragment_opcode = 1'b0;
+ end
+ end
+ end
+
+ assign when_BmbSlaveFactory_l35 = (mapper_doRead && mapper_readErrorFlag);
+ always @(*) begin
+ mapper_rsp_payload_fragment_data = 32'h0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h0 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = syncronized[0];
+ mapper_rsp_payload_fragment_data[1 : 1] = syncronized[1];
+ mapper_rsp_payload_fragment_data[2 : 2] = syncronized[2];
+ mapper_rsp_payload_fragment_data[3 : 3] = syncronized[3];
+ end
+ 8'h04 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_io_gpio_write;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_io_gpio_write_1;
+ mapper_rsp_payload_fragment_data[2 : 2] = _zz_io_gpio_write_2;
+ mapper_rsp_payload_fragment_data[3 : 3] = _zz_io_gpio_write_3;
+ end
+ 8'h08 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_io_gpio_writeEnable;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_io_gpio_writeEnable_1;
+ mapper_rsp_payload_fragment_data[2 : 2] = _zz_io_gpio_writeEnable_2;
+ mapper_rsp_payload_fragment_data[3 : 3] = _zz_io_gpio_writeEnable_3;
+ end
+ 8'h20 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_mapper_rsp_payload_fragment_data;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_mapper_rsp_payload_fragment_data_4;
+ end
+ 8'h24 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_mapper_rsp_payload_fragment_data_1;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_mapper_rsp_payload_fragment_data_5;
+ end
+ 8'h28 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_mapper_rsp_payload_fragment_data_2;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_mapper_rsp_payload_fragment_data_6;
+ end
+ 8'h2c : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_mapper_rsp_payload_fragment_data_3;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_mapper_rsp_payload_fragment_data_7;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign mapper_rsp_payload_fragment_context = io_bus_cmd_payload_fragment_context;
+ always @(*) begin
+ io_gpio_write[0] = _zz_io_gpio_write;
+ io_gpio_write[1] = _zz_io_gpio_write_1;
+ io_gpio_write[2] = _zz_io_gpio_write_2;
+ io_gpio_write[3] = _zz_io_gpio_write_3;
+ end
+
+ always @(*) begin
+ io_gpio_writeEnable[0] = _zz_io_gpio_writeEnable;
+ io_gpio_writeEnable[1] = _zz_io_gpio_writeEnable_1;
+ io_gpio_writeEnable[2] = _zz_io_gpio_writeEnable_2;
+ io_gpio_writeEnable[3] = _zz_io_gpio_writeEnable_3;
+ end
+
+ assign interrupt_valid = ((((interrupt_enable_high & syncronized) | (interrupt_enable_low & (~ syncronized))) | (interrupt_enable_rise & (syncronized & (~ last)))) | (interrupt_enable_fall & ((~ syncronized) & last)));
+ always @(*) begin
+ io_interrupt[0] = interrupt_valid[0];
+ io_interrupt[1] = interrupt_valid[1];
+ io_interrupt[2] = 1'b0;
+ io_interrupt[3] = 1'b0;
+ end
+
+ always @(*) begin
+ interrupt_enable_rise[0] = _zz_mapper_rsp_payload_fragment_data;
+ interrupt_enable_rise[1] = _zz_mapper_rsp_payload_fragment_data_4;
+ interrupt_enable_rise[2] = 1'b0;
+ interrupt_enable_rise[3] = 1'b0;
+ end
+
+ always @(*) begin
+ interrupt_enable_fall[0] = _zz_mapper_rsp_payload_fragment_data_1;
+ interrupt_enable_fall[1] = _zz_mapper_rsp_payload_fragment_data_5;
+ interrupt_enable_fall[2] = 1'b0;
+ interrupt_enable_fall[3] = 1'b0;
+ end
+
+ always @(*) begin
+ interrupt_enable_high[0] = _zz_mapper_rsp_payload_fragment_data_2;
+ interrupt_enable_high[1] = _zz_mapper_rsp_payload_fragment_data_6;
+ interrupt_enable_high[2] = 1'b0;
+ interrupt_enable_high[3] = 1'b0;
+ end
+
+ always @(*) begin
+ interrupt_enable_low[0] = _zz_mapper_rsp_payload_fragment_data_3;
+ interrupt_enable_low[1] = _zz_mapper_rsp_payload_fragment_data_7;
+ interrupt_enable_low[2] = 1'b0;
+ interrupt_enable_low[3] = 1'b0;
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ _zz_io_bus_rsp_valid_1 <= 1'b0;
+ _zz_io_gpio_writeEnable <= 1'b0;
+ _zz_io_gpio_writeEnable_1 <= 1'b0;
+ _zz_io_gpio_writeEnable_2 <= 1'b0;
+ _zz_io_gpio_writeEnable_3 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_1 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_2 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_3 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_4 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_5 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_6 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_7 <= 1'b0;
+ end else begin
+ if(_zz_mapper_rsp_ready_1) begin
+ _zz_io_bus_rsp_valid_1 <= (mapper_rsp_valid && _zz_mapper_rsp_ready);
+ end
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h08 : begin
+ if(mapper_doWrite) begin
+ _zz_io_gpio_writeEnable <= io_bus_cmd_payload_fragment_data[0];
+ _zz_io_gpio_writeEnable_1 <= io_bus_cmd_payload_fragment_data[1];
+ _zz_io_gpio_writeEnable_2 <= io_bus_cmd_payload_fragment_data[2];
+ _zz_io_gpio_writeEnable_3 <= io_bus_cmd_payload_fragment_data[3];
+ end
+ end
+ 8'h20 : begin
+ if(mapper_doWrite) begin
+ _zz_mapper_rsp_payload_fragment_data <= io_bus_cmd_payload_fragment_data[0];
+ _zz_mapper_rsp_payload_fragment_data_4 <= io_bus_cmd_payload_fragment_data[1];
+ end
+ end
+ 8'h24 : begin
+ if(mapper_doWrite) begin
+ _zz_mapper_rsp_payload_fragment_data_1 <= io_bus_cmd_payload_fragment_data[0];
+ _zz_mapper_rsp_payload_fragment_data_5 <= io_bus_cmd_payload_fragment_data[1];
+ end
+ end
+ 8'h28 : begin
+ if(mapper_doWrite) begin
+ _zz_mapper_rsp_payload_fragment_data_2 <= io_bus_cmd_payload_fragment_data[0];
+ _zz_mapper_rsp_payload_fragment_data_6 <= io_bus_cmd_payload_fragment_data[1];
+ end
+ end
+ 8'h2c : begin
+ if(mapper_doWrite) begin
+ _zz_mapper_rsp_payload_fragment_data_3 <= io_bus_cmd_payload_fragment_data[0];
+ _zz_mapper_rsp_payload_fragment_data_7 <= io_bus_cmd_payload_fragment_data[1];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_mapper_rsp_ready_1) begin
+ _zz_io_bus_rsp_payload_last <= mapper_rsp_payload_last;
+ _zz_io_bus_rsp_payload_fragment_opcode <= mapper_rsp_payload_fragment_opcode;
+ _zz_io_bus_rsp_payload_fragment_data <= mapper_rsp_payload_fragment_data;
+ _zz_io_bus_rsp_payload_fragment_context <= mapper_rsp_payload_fragment_context;
+ end
+ io_gpio_read_delay_1 <= io_gpio_read;
+ syncronized <= io_gpio_read_delay_1;
+ last <= syncronized;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h04 : begin
+ if(mapper_doWrite) begin
+ _zz_io_gpio_write <= io_bus_cmd_payload_fragment_data[0];
+ _zz_io_gpio_write_1 <= io_bus_cmd_payload_fragment_data[1];
+ _zz_io_gpio_write_2 <= io_bus_cmd_payload_fragment_data[2];
+ _zz_io_gpio_write_3 <= io_bus_cmd_payload_fragment_data[3];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbI2cCtrl_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_ctrl_cmd_valid,
+ output wire io_ctrl_cmd_ready,
+ input wire io_ctrl_cmd_payload_last,
+ input wire [0:0] io_ctrl_cmd_payload_fragment_opcode,
+ input wire [7:0] io_ctrl_cmd_payload_fragment_address,
+ input wire [1:0] io_ctrl_cmd_payload_fragment_length,
+ input wire [31:0] io_ctrl_cmd_payload_fragment_data,
+ input wire [2:0] io_ctrl_cmd_payload_fragment_context,
+ output wire io_ctrl_rsp_valid,
+ input wire io_ctrl_rsp_ready,
+ output wire io_ctrl_rsp_payload_last,
+ output wire [0:0] io_ctrl_rsp_payload_fragment_opcode,
+ output wire [31:0] io_ctrl_rsp_payload_fragment_data,
+ output wire [2:0] io_ctrl_rsp_payload_fragment_context,
+ output wire io_i2c_sda_write,
+ input wire io_i2c_sda_read,
+ output wire io_i2c_scl_write,
+ input wire io_i2c_scl_read,
+ output wire system_i2c_0_io_interrupt_source,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_BOOT = 4'd0;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE = 4'd1;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 = 4'd2;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 = 4'd3;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 = 4'd4;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW = 4'd5;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH = 4'd6;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART = 4'd7;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 = 4'd8;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 = 4'd9;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 = 4'd10;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF = 4'd11;
+ localparam Axi4PeripheralI2cSlaveCmdMode_NONE = 3'd0;
+ localparam Axi4PeripheralI2cSlaveCmdMode_START = 3'd1;
+ localparam Axi4PeripheralI2cSlaveCmdMode_RESTART = 3'd2;
+ localparam Axi4PeripheralI2cSlaveCmdMode_STOP = 3'd3;
+ localparam Axi4PeripheralI2cSlaveCmdMode_DROP = 3'd4;
+ localparam Axi4PeripheralI2cSlaveCmdMode_DRIVE = 3'd5;
+ localparam Axi4PeripheralI2cSlaveCmdMode_READ = 3'd6;
+
+ reg i2cCtrl_io_config_timeoutClear;
+ reg i2cCtrl_io_bus_rsp_valid;
+ reg i2cCtrl_io_bus_rsp_enable;
+ reg i2cCtrl_io_bus_rsp_data;
+ wire i2cCtrl_io_i2c_scl_write;
+ wire i2cCtrl_io_i2c_sda_write;
+ wire [2:0] i2cCtrl_io_bus_cmd_kind;
+ wire i2cCtrl_io_bus_cmd_data;
+ wire i2cCtrl_io_timeout;
+ wire i2cCtrl_io_internals_inFrame;
+ wire i2cCtrl_io_internals_sdaRead;
+ wire i2cCtrl_io_internals_sclRead;
+ wire [6:0] _zz_bridge_addressFilter_hits_0;
+ wire [6:0] _zz_bridge_addressFilter_hits_1;
+ wire [0:0] _zz_bridge_masterLogic_start;
+ wire [0:0] _zz_bridge_masterLogic_stop;
+ wire [0:0] _zz_bridge_masterLogic_drop;
+ wire [0:0] _zz_bridge_masterLogic_recover;
+ wire [11:0] _zz_bridge_masterLogic_timer_value;
+ wire [0:0] _zz_bridge_masterLogic_timer_value_1;
+ wire [0:0] _zz_bridge_masterLogic_fsm_dropped_start;
+ wire [0:0] _zz_bridge_masterLogic_fsm_dropped_stop;
+ wire [0:0] _zz_bridge_masterLogic_fsm_dropped_recover;
+ wire [2:0] _zz_io_bus_rsp_data;
+ wire [2:0] _zz_bridge_rxData_value;
+ wire [0:0] _zz_bridge_interruptCtrl_start_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_restart_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_end_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_drop_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_filterGen_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_clockGenExit_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_clockGenEnter_flag;
+ wire busCtrl_readErrorFlag;
+ wire busCtrl_writeErrorFlag;
+ wire busCtrl_readHaltTrigger;
+ wire busCtrl_writeHaltTrigger;
+ wire busCtrl_rsp_valid;
+ wire busCtrl_rsp_ready;
+ wire busCtrl_rsp_payload_last;
+ reg [0:0] busCtrl_rsp_payload_fragment_opcode;
+ reg [31:0] busCtrl_rsp_payload_fragment_data;
+ wire [2:0] busCtrl_rsp_payload_fragment_context;
+ wire _zz_busCtrl_rsp_ready;
+ reg _zz_busCtrl_rsp_ready_1;
+ wire _zz_io_ctrl_rsp_valid;
+ reg _zz_io_ctrl_rsp_valid_1;
+ reg _zz_io_ctrl_rsp_payload_last;
+ reg [0:0] _zz_io_ctrl_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_ctrl_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_ctrl_rsp_payload_fragment_context;
+ wire when_Stream_l375;
+ wire busCtrl_askWrite;
+ wire busCtrl_askRead;
+ wire io_ctrl_cmd_fire;
+ wire busCtrl_doWrite;
+ wire busCtrl_doRead;
+ wire when_BmbSlaveFactory_l33;
+ wire when_BmbSlaveFactory_l35;
+ wire bridge_busCtrlWithOffset_readErrorFlag;
+ wire bridge_busCtrlWithOffset_writeErrorFlag;
+ reg bridge_frameReset;
+ reg bridge_i2cBuffer_sda_write;
+ wire bridge_i2cBuffer_sda_read;
+ reg bridge_i2cBuffer_scl_write;
+ wire bridge_i2cBuffer_scl_read;
+ reg bridge_rxData_event;
+ reg bridge_rxData_listen;
+ reg bridge_rxData_valid;
+ reg [7:0] bridge_rxData_value;
+ reg when_I2cCtrl_l224;
+ reg bridge_rxAck_listen;
+ reg bridge_rxAck_valid;
+ reg bridge_rxAck_value;
+ reg when_I2cCtrl_l237;
+ reg bridge_txData_valid;
+ reg bridge_txData_repeat;
+ reg bridge_txData_enable;
+ reg [7:0] bridge_txData_value;
+ reg bridge_txData_forceDisable;
+ reg bridge_txData_disableOnDataConflict;
+ reg bridge_txAck_valid;
+ reg bridge_txAck_repeat;
+ reg bridge_txAck_enable;
+ reg bridge_txAck_value;
+ reg bridge_txAck_forceAck;
+ reg bridge_txAck_disableOnDataConflict;
+ reg bridge_addressFilter_addresses_0_enable;
+ reg [9:0] bridge_addressFilter_addresses_0_value;
+ reg bridge_addressFilter_addresses_0_is10Bit;
+ reg bridge_addressFilter_addresses_1_enable;
+ reg [9:0] bridge_addressFilter_addresses_1_value;
+ reg bridge_addressFilter_addresses_1_is10Bit;
+ reg [1:0] bridge_addressFilter_state;
+ reg [7:0] bridge_addressFilter_byte0;
+ reg [7:0] bridge_addressFilter_byte1;
+ wire bridge_addressFilter_byte0Is10Bit;
+ wire bridge_addressFilter_hits_0;
+ wire bridge_addressFilter_hits_1;
+ wire when_I2cCtrl_l306;
+ wire _zz_when_I2cCtrl_l310;
+ reg _zz_when_I2cCtrl_l310_1;
+ wire when_I2cCtrl_l310;
+ reg bridge_masterLogic_start;
+ reg when_BusSlaveFactory_l377;
+ wire when_BusSlaveFactory_l379;
+ reg bridge_masterLogic_stop;
+ reg when_BusSlaveFactory_l377_1;
+ wire when_BusSlaveFactory_l379_1;
+ reg bridge_masterLogic_drop;
+ reg when_BusSlaveFactory_l377_2;
+ wire when_BusSlaveFactory_l379_2;
+ reg bridge_masterLogic_recover;
+ reg when_BusSlaveFactory_l377_3;
+ wire when_BusSlaveFactory_l379_3;
+ reg [11:0] bridge_masterLogic_timer_value;
+ reg [11:0] bridge_masterLogic_timer_tLow;
+ reg [11:0] bridge_masterLogic_timer_tHigh;
+ reg [11:0] bridge_masterLogic_timer_tBuf;
+ wire bridge_masterLogic_timer_done;
+ wire bridge_masterLogic_txReady;
+ wire bridge_masterLogic_fsm_wantExit;
+ reg bridge_masterLogic_fsm_wantStart;
+ wire bridge_masterLogic_fsm_wantKill;
+ reg bridge_masterLogic_fsm_dropped_start;
+ reg bridge_masterLogic_fsm_dropped_stop;
+ reg bridge_masterLogic_fsm_dropped_recover;
+ reg bridge_masterLogic_fsm_dropped_trigger;
+ reg bridge_masterLogic_fsm_inFrameLate;
+ wire when_I2cCtrl_l363;
+ wire when_I2cCtrl_l363_1;
+ wire bridge_masterLogic_fsm_outOfSync;
+ wire bridge_masterLogic_fsm_isBusy;
+ reg when_BusSlaveFactory_l341;
+ wire when_BusSlaveFactory_l347;
+ reg when_BusSlaveFactory_l341_1;
+ wire when_BusSlaveFactory_l347_1;
+ reg when_BusSlaveFactory_l341_2;
+ wire when_BusSlaveFactory_l347_2;
+ reg [2:0] bridge_dataCounter;
+ reg bridge_inAckState;
+ reg bridge_wasntAck;
+ wire when_I2cCtrl_l523;
+ wire when_I2cCtrl_l546;
+ wire when_I2cCtrl_l566;
+ wire when_I2cCtrl_l570;
+ wire when_I2cCtrl_l574;
+ wire when_I2cCtrl_l578;
+ wire when_I2cCtrl_l588;
+ wire when_I2cCtrl_l601;
+ reg bridge_interruptCtrl_rxDataEnable;
+ reg bridge_interruptCtrl_rxAckEnable;
+ reg bridge_interruptCtrl_txDataEnable;
+ reg bridge_interruptCtrl_txAckEnable;
+ reg bridge_interruptCtrl_interrupt;
+ wire when_I2cCtrl_l634;
+ reg bridge_interruptCtrl_start_enable;
+ reg bridge_interruptCtrl_start_flag;
+ wire when_I2cCtrl_l634_1;
+ reg when_BusSlaveFactory_l341_3;
+ wire when_BusSlaveFactory_l347_3;
+ wire when_I2cCtrl_l634_2;
+ reg bridge_interruptCtrl_restart_enable;
+ reg bridge_interruptCtrl_restart_flag;
+ wire when_I2cCtrl_l634_3;
+ reg when_BusSlaveFactory_l341_4;
+ wire when_BusSlaveFactory_l347_4;
+ wire when_I2cCtrl_l634_4;
+ reg bridge_interruptCtrl_end_enable;
+ reg bridge_interruptCtrl_end_flag;
+ wire when_I2cCtrl_l634_5;
+ reg when_BusSlaveFactory_l341_5;
+ wire when_BusSlaveFactory_l347_5;
+ wire when_I2cCtrl_l634_6;
+ reg bridge_interruptCtrl_drop_enable;
+ reg bridge_interruptCtrl_drop_flag;
+ wire when_I2cCtrl_l634_7;
+ reg when_BusSlaveFactory_l341_6;
+ wire when_BusSlaveFactory_l347_6;
+ wire _zz_when_I2cCtrl_l634;
+ reg _zz_when_I2cCtrl_l634_1;
+ wire when_I2cCtrl_l634_8;
+ reg bridge_interruptCtrl_filterGen_enable;
+ reg bridge_interruptCtrl_filterGen_flag;
+ wire when_I2cCtrl_l634_9;
+ reg when_BusSlaveFactory_l341_7;
+ wire when_BusSlaveFactory_l347_7;
+ reg bridge_masterLogic_fsm_isBusy_regNext;
+ wire when_I2cCtrl_l634_10;
+ reg bridge_interruptCtrl_clockGenExit_enable;
+ reg bridge_interruptCtrl_clockGenExit_flag;
+ wire when_I2cCtrl_l634_11;
+ reg when_BusSlaveFactory_l341_8;
+ wire when_BusSlaveFactory_l347_8;
+ reg bridge_masterLogic_fsm_isBusy_regNext_1;
+ wire when_I2cCtrl_l634_12;
+ reg bridge_interruptCtrl_clockGenEnter_enable;
+ reg bridge_interruptCtrl_clockGenEnter_flag;
+ wire when_I2cCtrl_l634_13;
+ reg when_BusSlaveFactory_l341_9;
+ wire when_BusSlaveFactory_l347_9;
+ reg [9:0] _zz_io_config_samplingClockDivider;
+ reg [19:0] _zz_io_config_timeout;
+ reg [5:0] _zz_io_config_tsuData;
+ reg bridge_timeoutClear;
+ wire when_I2cCtrl_l659;
+ reg [3:0] bridge_masterLogic_fsm_stateReg;
+ reg [3:0] bridge_masterLogic_fsm_stateNext;
+ reg i2cCtrl_io_internals_inFrame_regNext;
+ wire when_I2cCtrl_l367;
+ wire when_I2cCtrl_l369;
+ wire when_I2cCtrl_l380;
+ wire when_I2cCtrl_l392;
+ wire when_I2cCtrl_l418;
+ wire when_I2cCtrl_l422;
+ wire when_I2cCtrl_l442;
+ wire when_I2cCtrl_l450;
+ wire when_I2cCtrl_l474;
+ wire when_StateMachine_l253;
+ wire when_StateMachine_l253_1;
+ wire when_StateMachine_l253_2;
+ wire when_StateMachine_l253_3;
+ wire when_StateMachine_l253_4;
+ wire when_StateMachine_l253_5;
+ wire when_I2cCtrl_l350;
+ reg bridge_slaveOverride_sda;
+ reg bridge_slaveOverride_scl;
+ wire when_I2cCtrl_l673;
+ wire when_I2cCtrl_l674;
+ reg bridge_i2cBuffer_scl_write_regNext;
+ reg bridge_i2cBuffer_sda_write_regNext;
+ `ifndef SYNTHESIS
+ reg [55:0] bridge_masterLogic_fsm_stateReg_string;
+ reg [55:0] bridge_masterLogic_fsm_stateNext_string;
+ `endif
+
+
+ assign _zz_bridge_addressFilter_hits_0 = (bridge_addressFilter_byte0 >>> 1'd1);
+ assign _zz_bridge_addressFilter_hits_1 = (bridge_addressFilter_byte0 >>> 1'd1);
+ assign _zz_bridge_masterLogic_start = 1'b1;
+ assign _zz_bridge_masterLogic_stop = 1'b1;
+ assign _zz_bridge_masterLogic_drop = 1'b1;
+ assign _zz_bridge_masterLogic_recover = 1'b1;
+ assign _zz_bridge_masterLogic_timer_value_1 = (! bridge_masterLogic_timer_done);
+ assign _zz_bridge_masterLogic_timer_value = {11'd0, _zz_bridge_masterLogic_timer_value_1};
+ assign _zz_bridge_masterLogic_fsm_dropped_start = 1'b0;
+ assign _zz_bridge_masterLogic_fsm_dropped_stop = 1'b0;
+ assign _zz_bridge_masterLogic_fsm_dropped_recover = 1'b0;
+ assign _zz_io_bus_rsp_data = (3'b111 - bridge_dataCounter);
+ assign _zz_bridge_rxData_value = (3'b111 - bridge_dataCounter);
+ assign _zz_bridge_interruptCtrl_start_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_restart_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_end_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_drop_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_filterGen_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_clockGenExit_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_clockGenEnter_flag = 1'b0;
+ Axi4PeripheralI2cSlave_be6ad777990c4e5089d0b11c63cc2698 i2cCtrl (
+ .io_i2c_sda_write (i2cCtrl_io_i2c_sda_write ), //o
+ .io_i2c_sda_read (bridge_i2cBuffer_sda_read ), //i
+ .io_i2c_scl_write (i2cCtrl_io_i2c_scl_write ), //o
+ .io_i2c_scl_read (bridge_i2cBuffer_scl_read ), //i
+ .io_config_samplingClockDivider (_zz_io_config_samplingClockDivider[9:0]), //i
+ .io_config_timeout (_zz_io_config_timeout[19:0] ), //i
+ .io_config_tsuData (_zz_io_config_tsuData[5:0] ), //i
+ .io_config_timeoutClear (i2cCtrl_io_config_timeoutClear ), //i
+ .io_bus_cmd_kind (i2cCtrl_io_bus_cmd_kind[2:0] ), //o
+ .io_bus_cmd_data (i2cCtrl_io_bus_cmd_data ), //o
+ .io_bus_rsp_valid (i2cCtrl_io_bus_rsp_valid ), //i
+ .io_bus_rsp_enable (i2cCtrl_io_bus_rsp_enable ), //i
+ .io_bus_rsp_data (i2cCtrl_io_bus_rsp_data ), //i
+ .io_timeout (i2cCtrl_io_timeout ), //o
+ .io_internals_inFrame (i2cCtrl_io_internals_inFrame ), //o
+ .io_internals_sdaRead (i2cCtrl_io_internals_sdaRead ), //o
+ .io_internals_sclRead (i2cCtrl_io_internals_sclRead ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ initial begin
+ `ifndef SYNTHESIS
+ _zz_io_config_timeout = {$urandom};
+ _zz_io_config_tsuData = {$urandom};
+ `endif
+ end
+
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_BOOT : bridge_masterLogic_fsm_stateReg_string = "BOOT ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : bridge_masterLogic_fsm_stateReg_string = "IDLE ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : bridge_masterLogic_fsm_stateReg_string = "START1 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : bridge_masterLogic_fsm_stateReg_string = "START2 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : bridge_masterLogic_fsm_stateReg_string = "START3 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : bridge_masterLogic_fsm_stateReg_string = "LOW ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : bridge_masterLogic_fsm_stateReg_string = "HIGH ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : bridge_masterLogic_fsm_stateReg_string = "RESTART";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : bridge_masterLogic_fsm_stateReg_string = "STOP1 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : bridge_masterLogic_fsm_stateReg_string = "STOP2 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : bridge_masterLogic_fsm_stateReg_string = "STOP3 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : bridge_masterLogic_fsm_stateReg_string = "TBUF ";
+ default : bridge_masterLogic_fsm_stateReg_string = "???????";
+ endcase
+ end
+ always @(*) begin
+ case(bridge_masterLogic_fsm_stateNext)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_BOOT : bridge_masterLogic_fsm_stateNext_string = "BOOT ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : bridge_masterLogic_fsm_stateNext_string = "IDLE ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : bridge_masterLogic_fsm_stateNext_string = "START1 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : bridge_masterLogic_fsm_stateNext_string = "START2 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : bridge_masterLogic_fsm_stateNext_string = "START3 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : bridge_masterLogic_fsm_stateNext_string = "LOW ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : bridge_masterLogic_fsm_stateNext_string = "HIGH ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : bridge_masterLogic_fsm_stateNext_string = "RESTART";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : bridge_masterLogic_fsm_stateNext_string = "STOP1 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : bridge_masterLogic_fsm_stateNext_string = "STOP2 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : bridge_masterLogic_fsm_stateNext_string = "STOP3 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : bridge_masterLogic_fsm_stateNext_string = "TBUF ";
+ default : bridge_masterLogic_fsm_stateNext_string = "???????";
+ endcase
+ end
+ `endif
+
+ assign busCtrl_readErrorFlag = 1'b0;
+ assign busCtrl_writeErrorFlag = 1'b0;
+ assign busCtrl_readHaltTrigger = 1'b0;
+ assign busCtrl_writeHaltTrigger = 1'b0;
+ assign _zz_busCtrl_rsp_ready = (! (busCtrl_readHaltTrigger || busCtrl_writeHaltTrigger));
+ assign busCtrl_rsp_ready = (_zz_busCtrl_rsp_ready_1 && _zz_busCtrl_rsp_ready);
+ always @(*) begin
+ _zz_busCtrl_rsp_ready_1 = io_ctrl_rsp_ready;
+ if(when_Stream_l375) begin
+ _zz_busCtrl_rsp_ready_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! _zz_io_ctrl_rsp_valid);
+ assign _zz_io_ctrl_rsp_valid = _zz_io_ctrl_rsp_valid_1;
+ assign io_ctrl_rsp_valid = _zz_io_ctrl_rsp_valid;
+ assign io_ctrl_rsp_payload_last = _zz_io_ctrl_rsp_payload_last;
+ assign io_ctrl_rsp_payload_fragment_opcode = _zz_io_ctrl_rsp_payload_fragment_opcode;
+ assign io_ctrl_rsp_payload_fragment_data = _zz_io_ctrl_rsp_payload_fragment_data;
+ assign io_ctrl_rsp_payload_fragment_context = _zz_io_ctrl_rsp_payload_fragment_context;
+ assign busCtrl_askWrite = (io_ctrl_cmd_valid && (io_ctrl_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_askRead = (io_ctrl_cmd_valid && (io_ctrl_cmd_payload_fragment_opcode == 1'b0));
+ assign io_ctrl_cmd_fire = (io_ctrl_cmd_valid && io_ctrl_cmd_ready);
+ assign busCtrl_doWrite = (io_ctrl_cmd_fire && (io_ctrl_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_doRead = (io_ctrl_cmd_fire && (io_ctrl_cmd_payload_fragment_opcode == 1'b0));
+ assign busCtrl_rsp_valid = io_ctrl_cmd_valid;
+ assign io_ctrl_cmd_ready = busCtrl_rsp_ready;
+ assign busCtrl_rsp_payload_last = 1'b1;
+ assign when_BmbSlaveFactory_l33 = (busCtrl_doWrite && busCtrl_writeErrorFlag);
+ always @(*) begin
+ if(when_BmbSlaveFactory_l33) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ if(when_BmbSlaveFactory_l35) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b0;
+ end
+ end
+ end
+
+ assign when_BmbSlaveFactory_l35 = (busCtrl_doRead && busCtrl_readErrorFlag);
+ always @(*) begin
+ busCtrl_rsp_payload_fragment_data = 32'h0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h08 : begin
+ busCtrl_rsp_payload_fragment_data[8 : 8] = bridge_rxData_valid;
+ busCtrl_rsp_payload_fragment_data[7 : 0] = bridge_rxData_value;
+ end
+ 8'h0c : begin
+ busCtrl_rsp_payload_fragment_data[8 : 8] = bridge_rxAck_valid;
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_rxAck_value;
+ end
+ 8'h0 : begin
+ busCtrl_rsp_payload_fragment_data[8 : 8] = bridge_txData_valid;
+ busCtrl_rsp_payload_fragment_data[9 : 9] = bridge_txData_enable;
+ end
+ 8'h04 : begin
+ busCtrl_rsp_payload_fragment_data[8 : 8] = bridge_txAck_valid;
+ busCtrl_rsp_payload_fragment_data[9 : 9] = bridge_txAck_enable;
+ end
+ 8'h80 : begin
+ busCtrl_rsp_payload_fragment_data[1 : 0] = {bridge_addressFilter_hits_1,bridge_addressFilter_hits_0};
+ end
+ 8'h84 : begin
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_addressFilter_byte0[0];
+ end
+ 8'h40 : begin
+ busCtrl_rsp_payload_fragment_data[4 : 4] = bridge_masterLogic_start;
+ busCtrl_rsp_payload_fragment_data[5 : 5] = bridge_masterLogic_stop;
+ busCtrl_rsp_payload_fragment_data[6 : 6] = bridge_masterLogic_drop;
+ busCtrl_rsp_payload_fragment_data[7 : 7] = bridge_masterLogic_recover;
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_masterLogic_fsm_isBusy;
+ busCtrl_rsp_payload_fragment_data[9 : 9] = bridge_masterLogic_fsm_dropped_start;
+ busCtrl_rsp_payload_fragment_data[10 : 10] = bridge_masterLogic_fsm_dropped_stop;
+ busCtrl_rsp_payload_fragment_data[11 : 11] = bridge_masterLogic_fsm_dropped_recover;
+ end
+ 8'h20 : begin
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_interruptCtrl_rxDataEnable;
+ busCtrl_rsp_payload_fragment_data[1 : 1] = bridge_interruptCtrl_rxAckEnable;
+ busCtrl_rsp_payload_fragment_data[2 : 2] = bridge_interruptCtrl_txDataEnable;
+ busCtrl_rsp_payload_fragment_data[3 : 3] = bridge_interruptCtrl_txAckEnable;
+ busCtrl_rsp_payload_fragment_data[4 : 4] = bridge_interruptCtrl_start_enable;
+ busCtrl_rsp_payload_fragment_data[5 : 5] = bridge_interruptCtrl_restart_enable;
+ busCtrl_rsp_payload_fragment_data[6 : 6] = bridge_interruptCtrl_end_enable;
+ busCtrl_rsp_payload_fragment_data[7 : 7] = bridge_interruptCtrl_drop_enable;
+ busCtrl_rsp_payload_fragment_data[17 : 17] = bridge_interruptCtrl_filterGen_enable;
+ busCtrl_rsp_payload_fragment_data[15 : 15] = bridge_interruptCtrl_clockGenExit_enable;
+ busCtrl_rsp_payload_fragment_data[16 : 16] = bridge_interruptCtrl_clockGenEnter_enable;
+ end
+ 8'h24 : begin
+ busCtrl_rsp_payload_fragment_data[4 : 4] = bridge_interruptCtrl_start_flag;
+ busCtrl_rsp_payload_fragment_data[5 : 5] = bridge_interruptCtrl_restart_flag;
+ busCtrl_rsp_payload_fragment_data[6 : 6] = bridge_interruptCtrl_end_flag;
+ busCtrl_rsp_payload_fragment_data[7 : 7] = bridge_interruptCtrl_drop_flag;
+ busCtrl_rsp_payload_fragment_data[17 : 17] = bridge_interruptCtrl_filterGen_flag;
+ busCtrl_rsp_payload_fragment_data[15 : 15] = bridge_interruptCtrl_clockGenExit_flag;
+ busCtrl_rsp_payload_fragment_data[16 : 16] = bridge_interruptCtrl_clockGenEnter_flag;
+ end
+ 8'h44 : begin
+ busCtrl_rsp_payload_fragment_data[0 : 0] = i2cCtrl_io_internals_inFrame;
+ busCtrl_rsp_payload_fragment_data[1 : 1] = i2cCtrl_io_internals_sdaRead;
+ busCtrl_rsp_payload_fragment_data[2 : 2] = i2cCtrl_io_internals_sclRead;
+ end
+ 8'h48 : begin
+ busCtrl_rsp_payload_fragment_data[1 : 1] = bridge_slaveOverride_sda;
+ busCtrl_rsp_payload_fragment_data[2 : 2] = bridge_slaveOverride_scl;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign busCtrl_rsp_payload_fragment_context = io_ctrl_cmd_payload_fragment_context;
+ assign bridge_busCtrlWithOffset_readErrorFlag = 1'b0;
+ assign bridge_busCtrlWithOffset_writeErrorFlag = 1'b0;
+ always @(*) begin
+ bridge_frameReset = 1'b0;
+ case(i2cCtrl_io_bus_cmd_kind)
+ Axi4PeripheralI2cSlaveCmdMode_START : begin
+ bridge_frameReset = 1'b1;
+ end
+ Axi4PeripheralI2cSlaveCmdMode_RESTART : begin
+ bridge_frameReset = 1'b1;
+ end
+ Axi4PeripheralI2cSlaveCmdMode_STOP : begin
+ bridge_frameReset = 1'b1;
+ end
+ Axi4PeripheralI2cSlaveCmdMode_DROP : begin
+ bridge_frameReset = 1'b1;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ bridge_i2cBuffer_sda_write = i2cCtrl_io_i2c_sda_write;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ bridge_i2cBuffer_sda_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ bridge_i2cBuffer_sda_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ bridge_i2cBuffer_sda_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ bridge_i2cBuffer_sda_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ end
+ endcase
+ if(when_I2cCtrl_l673) begin
+ bridge_i2cBuffer_sda_write = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ bridge_i2cBuffer_scl_write = i2cCtrl_io_i2c_scl_write;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ if(bridge_masterLogic_timer_done) begin
+ if(when_I2cCtrl_l418) begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end else begin
+ if(when_I2cCtrl_l422) begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end
+ end
+ end else begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ end
+ endcase
+ if(when_I2cCtrl_l674) begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ when_I2cCtrl_l224 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h08 : begin
+ if(busCtrl_doRead) begin
+ when_I2cCtrl_l224 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ when_I2cCtrl_l237 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h0c : begin
+ if(busCtrl_doRead) begin
+ when_I2cCtrl_l237 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ bridge_txData_forceDisable = 1'b0;
+ if(when_I2cCtrl_l601) begin
+ bridge_txData_forceDisable = 1'b0;
+ end
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ if(bridge_masterLogic_timer_done) begin
+ if(when_I2cCtrl_l418) begin
+ bridge_txData_forceDisable = 1'b1;
+ end else begin
+ if(when_I2cCtrl_l422) begin
+ bridge_txData_forceDisable = 1'b1;
+ end
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ bridge_txAck_forceAck = 1'b0;
+ if(when_I2cCtrl_l306) begin
+ bridge_txAck_forceAck = 1'b1;
+ end
+ end
+
+ assign bridge_addressFilter_byte0Is10Bit = (bridge_addressFilter_byte0[7 : 3] == 5'h1e);
+ assign bridge_addressFilter_hits_0 = (bridge_addressFilter_addresses_0_enable && ((! bridge_addressFilter_addresses_0_is10Bit) ? ((_zz_bridge_addressFilter_hits_0 == bridge_addressFilter_addresses_0_value[6 : 0]) && (bridge_addressFilter_state != 2'b00)) : (({bridge_addressFilter_byte0[2 : 1],bridge_addressFilter_byte1} == bridge_addressFilter_addresses_0_value) && (bridge_addressFilter_state == 2'b10))));
+ assign bridge_addressFilter_hits_1 = (bridge_addressFilter_addresses_1_enable && ((! bridge_addressFilter_addresses_1_is10Bit) ? ((_zz_bridge_addressFilter_hits_1 == bridge_addressFilter_addresses_1_value[6 : 0]) && (bridge_addressFilter_state != 2'b00)) : (({bridge_addressFilter_byte0[2 : 1],bridge_addressFilter_byte1} == bridge_addressFilter_addresses_1_value) && (bridge_addressFilter_state == 2'b10))));
+ assign when_I2cCtrl_l306 = ((bridge_addressFilter_byte0Is10Bit && (bridge_addressFilter_state == 2'b01)) && (|{((bridge_addressFilter_addresses_1_enable && bridge_addressFilter_addresses_1_is10Bit) && (bridge_addressFilter_byte0[2 : 1] == bridge_addressFilter_addresses_1_value[9 : 8])),((bridge_addressFilter_addresses_0_enable && bridge_addressFilter_addresses_0_is10Bit) && (bridge_addressFilter_byte0[2 : 1] == bridge_addressFilter_addresses_0_value[9 : 8]))}));
+ assign _zz_when_I2cCtrl_l310 = (|{bridge_addressFilter_hits_1,bridge_addressFilter_hits_0});
+ assign when_I2cCtrl_l310 = (_zz_when_I2cCtrl_l310 && (! _zz_when_I2cCtrl_l310_1));
+ always @(*) begin
+ when_BusSlaveFactory_l377 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l377 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379 = io_ctrl_cmd_payload_fragment_data[4];
+ always @(*) begin
+ when_BusSlaveFactory_l377_1 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l377_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_1 = io_ctrl_cmd_payload_fragment_data[5];
+ always @(*) begin
+ when_BusSlaveFactory_l377_2 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l377_2 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_2 = io_ctrl_cmd_payload_fragment_data[6];
+ always @(*) begin
+ when_BusSlaveFactory_l377_3 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l377_3 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_3 = io_ctrl_cmd_payload_fragment_data[7];
+ assign bridge_masterLogic_timer_done = (bridge_masterLogic_timer_value == 12'h0);
+ assign bridge_masterLogic_fsm_wantExit = 1'b0;
+ always @(*) begin
+ bridge_masterLogic_fsm_wantStart = 1'b0;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ bridge_masterLogic_fsm_wantStart = 1'b1;
+ end
+ endcase
+ end
+
+ assign bridge_masterLogic_fsm_wantKill = 1'b0;
+ always @(*) begin
+ bridge_masterLogic_fsm_dropped_trigger = 1'b0;
+ if(when_I2cCtrl_l350) begin
+ bridge_masterLogic_fsm_dropped_trigger = 1'b1;
+ end
+ end
+
+ assign when_I2cCtrl_l363 = (! i2cCtrl_io_internals_sclRead);
+ assign when_I2cCtrl_l363_1 = (! i2cCtrl_io_internals_inFrame);
+ assign bridge_masterLogic_fsm_outOfSync = ((! i2cCtrl_io_internals_inFrame) && ((! i2cCtrl_io_internals_sdaRead) || (! i2cCtrl_io_internals_sclRead)));
+ assign bridge_masterLogic_fsm_isBusy = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE)) && (! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF)));
+ always @(*) begin
+ when_BusSlaveFactory_l341 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347 = io_ctrl_cmd_payload_fragment_data[9];
+ always @(*) begin
+ when_BusSlaveFactory_l341_1 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_1 = io_ctrl_cmd_payload_fragment_data[10];
+ always @(*) begin
+ when_BusSlaveFactory_l341_2 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_2 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_2 = io_ctrl_cmd_payload_fragment_data[11];
+ assign bridge_masterLogic_txReady = (bridge_inAckState ? bridge_txAck_valid : bridge_txData_valid);
+ assign when_I2cCtrl_l523 = (! bridge_inAckState);
+ always @(*) begin
+ if(when_I2cCtrl_l523) begin
+ i2cCtrl_io_bus_rsp_valid = ((bridge_txData_valid && (! (bridge_rxData_valid && bridge_rxData_listen))) && (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DRIVE));
+ if(bridge_txData_forceDisable) begin
+ i2cCtrl_io_bus_rsp_valid = 1'b1;
+ end
+ end else begin
+ i2cCtrl_io_bus_rsp_valid = ((bridge_txAck_valid && (! (bridge_rxAck_valid && bridge_rxAck_listen))) && (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DRIVE));
+ if(bridge_txAck_forceAck) begin
+ i2cCtrl_io_bus_rsp_valid = 1'b1;
+ end
+ end
+ if(when_I2cCtrl_l546) begin
+ i2cCtrl_io_bus_rsp_valid = (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DRIVE);
+ end
+ end
+
+ always @(*) begin
+ if(when_I2cCtrl_l523) begin
+ i2cCtrl_io_bus_rsp_enable = bridge_txData_enable;
+ if(bridge_txData_forceDisable) begin
+ i2cCtrl_io_bus_rsp_enable = 1'b0;
+ end
+ end else begin
+ i2cCtrl_io_bus_rsp_enable = bridge_txAck_enable;
+ if(bridge_txAck_forceAck) begin
+ i2cCtrl_io_bus_rsp_enable = 1'b1;
+ end
+ end
+ if(when_I2cCtrl_l546) begin
+ i2cCtrl_io_bus_rsp_enable = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_I2cCtrl_l523) begin
+ i2cCtrl_io_bus_rsp_data = bridge_txData_value[_zz_io_bus_rsp_data];
+ end else begin
+ i2cCtrl_io_bus_rsp_data = bridge_txAck_value;
+ if(bridge_txAck_forceAck) begin
+ i2cCtrl_io_bus_rsp_data = 1'b0;
+ end
+ end
+ end
+
+ assign when_I2cCtrl_l546 = (bridge_wasntAck && (! bridge_masterLogic_fsm_isBusy));
+ assign when_I2cCtrl_l566 = (! bridge_inAckState);
+ assign when_I2cCtrl_l570 = (i2cCtrl_io_bus_rsp_data != i2cCtrl_io_bus_cmd_data);
+ assign when_I2cCtrl_l574 = (bridge_dataCounter == 3'b111);
+ assign when_I2cCtrl_l578 = (bridge_txData_valid && (! bridge_txData_repeat));
+ assign when_I2cCtrl_l588 = (bridge_txAck_valid && (! bridge_txAck_repeat));
+ assign when_I2cCtrl_l601 = ((i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_STOP) || (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DROP));
+ always @(*) begin
+ bridge_interruptCtrl_interrupt = ((((bridge_interruptCtrl_rxDataEnable && bridge_rxData_valid) || (bridge_interruptCtrl_rxAckEnable && bridge_rxAck_valid)) || (bridge_interruptCtrl_txDataEnable && (! bridge_txData_valid))) || (bridge_interruptCtrl_txAckEnable && (! bridge_txAck_valid)));
+ if(bridge_interruptCtrl_start_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_restart_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_end_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_drop_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_filterGen_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_clockGenExit_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_clockGenEnter_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ end
+
+ assign when_I2cCtrl_l634 = (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_START);
+ assign when_I2cCtrl_l634_1 = (! bridge_interruptCtrl_start_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_3 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_3 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_3 = io_ctrl_cmd_payload_fragment_data[4];
+ assign when_I2cCtrl_l634_2 = (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_RESTART);
+ assign when_I2cCtrl_l634_3 = (! bridge_interruptCtrl_restart_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_4 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_4 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_4 = io_ctrl_cmd_payload_fragment_data[5];
+ assign when_I2cCtrl_l634_4 = (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_STOP);
+ assign when_I2cCtrl_l634_5 = (! bridge_interruptCtrl_end_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_5 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_5 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_5 = io_ctrl_cmd_payload_fragment_data[6];
+ assign when_I2cCtrl_l634_6 = ((i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DROP) || bridge_masterLogic_fsm_dropped_trigger);
+ assign when_I2cCtrl_l634_7 = (! bridge_interruptCtrl_drop_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_6 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_6 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_6 = io_ctrl_cmd_payload_fragment_data[7];
+ assign _zz_when_I2cCtrl_l634 = (|{bridge_addressFilter_hits_1,bridge_addressFilter_hits_0});
+ assign when_I2cCtrl_l634_8 = (_zz_when_I2cCtrl_l634 && (! _zz_when_I2cCtrl_l634_1));
+ assign when_I2cCtrl_l634_9 = (! bridge_interruptCtrl_filterGen_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_7 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_7 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_7 = io_ctrl_cmd_payload_fragment_data[17];
+ assign when_I2cCtrl_l634_10 = ((! bridge_masterLogic_fsm_isBusy) && bridge_masterLogic_fsm_isBusy_regNext);
+ assign when_I2cCtrl_l634_11 = (! bridge_interruptCtrl_clockGenExit_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_8 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_8 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_8 = io_ctrl_cmd_payload_fragment_data[15];
+ assign when_I2cCtrl_l634_12 = (bridge_masterLogic_fsm_isBusy && (! bridge_masterLogic_fsm_isBusy_regNext_1));
+ assign when_I2cCtrl_l634_13 = (! bridge_interruptCtrl_clockGenEnter_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_9 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_9 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_9 = io_ctrl_cmd_payload_fragment_data[16];
+ always @(*) begin
+ i2cCtrl_io_config_timeoutClear = bridge_timeoutClear;
+ if(when_I2cCtrl_l659) begin
+ i2cCtrl_io_config_timeoutClear = 1'b1;
+ end
+ end
+
+ assign when_I2cCtrl_l659 = ((! i2cCtrl_io_internals_inFrame) && (! bridge_masterLogic_fsm_isBusy));
+ always @(*) begin
+ bridge_masterLogic_fsm_stateNext = bridge_masterLogic_fsm_stateReg;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ if(when_I2cCtrl_l367) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF;
+ end else begin
+ if(when_I2cCtrl_l369) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1;
+ end else begin
+ if(bridge_masterLogic_recover) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW;
+ end
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ if(when_I2cCtrl_l380) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ if(when_I2cCtrl_l392) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ if(bridge_masterLogic_timer_done) begin
+ if(when_I2cCtrl_l418) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1;
+ end else begin
+ if(when_I2cCtrl_l422) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART;
+ end else begin
+ if(i2cCtrl_io_internals_sclRead) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH;
+ end
+ end
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ if(when_I2cCtrl_l442) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ if(!when_I2cCtrl_l450) begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1;
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ if(!when_I2cCtrl_l474) begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3;
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ if(i2cCtrl_io_internals_sdaRead) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE;
+ end
+ end
+ default : begin
+ end
+ endcase
+ if(when_I2cCtrl_l350) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF;
+ end
+ if(bridge_masterLogic_fsm_wantStart) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE;
+ end
+ if(bridge_masterLogic_fsm_wantKill) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_BOOT;
+ end
+ end
+
+ assign when_I2cCtrl_l367 = ((! i2cCtrl_io_internals_inFrame) && i2cCtrl_io_internals_inFrame_regNext);
+ assign when_I2cCtrl_l369 = (bridge_masterLogic_start && (! bridge_masterLogic_fsm_inFrameLate));
+ assign when_I2cCtrl_l380 = (! bridge_masterLogic_fsm_outOfSync);
+ assign when_I2cCtrl_l392 = (bridge_masterLogic_timer_done || (! i2cCtrl_io_internals_sclRead));
+ assign when_I2cCtrl_l418 = ((bridge_masterLogic_stop && (! bridge_inAckState)) || (bridge_masterLogic_recover && i2cCtrl_io_internals_sdaRead));
+ assign when_I2cCtrl_l422 = (bridge_masterLogic_start && (! bridge_inAckState));
+ assign when_I2cCtrl_l442 = (bridge_masterLogic_timer_done || (! i2cCtrl_io_internals_sclRead));
+ assign when_I2cCtrl_l450 = (! i2cCtrl_io_internals_sclRead);
+ assign when_I2cCtrl_l474 = (! i2cCtrl_io_internals_sclRead);
+ assign when_StateMachine_l253 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2));
+ assign when_StateMachine_l253_1 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3));
+ assign when_StateMachine_l253_2 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW));
+ assign when_StateMachine_l253_3 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH));
+ assign when_StateMachine_l253_4 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1));
+ assign when_StateMachine_l253_5 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF));
+ assign when_I2cCtrl_l350 = (bridge_masterLogic_drop || ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE)) && ((i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DROP) || i2cCtrl_io_timeout)));
+ assign when_I2cCtrl_l673 = (! bridge_slaveOverride_sda);
+ assign when_I2cCtrl_l674 = (! bridge_slaveOverride_scl);
+ assign io_i2c_scl_write = bridge_i2cBuffer_scl_write_regNext;
+ assign io_i2c_sda_write = bridge_i2cBuffer_sda_write_regNext;
+ assign bridge_i2cBuffer_scl_read = io_i2c_scl_read;
+ assign bridge_i2cBuffer_sda_read = io_i2c_sda_read;
+ assign system_i2c_0_io_interrupt_source = bridge_interruptCtrl_interrupt;
+ always @(posedge clk) begin
+ if(reset) begin
+ _zz_io_ctrl_rsp_valid_1 <= 1'b0;
+ bridge_rxData_event <= 1'b0;
+ bridge_rxData_listen <= 1'b0;
+ bridge_rxData_valid <= 1'b0;
+ bridge_rxAck_listen <= 1'b0;
+ bridge_rxAck_valid <= 1'b0;
+ bridge_txData_valid <= 1'b1;
+ bridge_txData_repeat <= 1'b1;
+ bridge_txData_enable <= 1'b0;
+ bridge_txAck_valid <= 1'b1;
+ bridge_txAck_repeat <= 1'b1;
+ bridge_txAck_enable <= 1'b0;
+ bridge_addressFilter_addresses_0_enable <= 1'b0;
+ bridge_addressFilter_addresses_1_enable <= 1'b0;
+ bridge_addressFilter_state <= 2'b00;
+ bridge_masterLogic_start <= 1'b0;
+ bridge_masterLogic_stop <= 1'b0;
+ bridge_masterLogic_drop <= 1'b0;
+ bridge_masterLogic_recover <= 1'b0;
+ bridge_masterLogic_fsm_dropped_start <= 1'b0;
+ bridge_masterLogic_fsm_dropped_stop <= 1'b0;
+ bridge_masterLogic_fsm_dropped_recover <= 1'b0;
+ bridge_dataCounter <= 3'b000;
+ bridge_inAckState <= 1'b0;
+ bridge_wasntAck <= 1'b0;
+ bridge_interruptCtrl_rxDataEnable <= 1'b0;
+ bridge_interruptCtrl_rxAckEnable <= 1'b0;
+ bridge_interruptCtrl_txDataEnable <= 1'b0;
+ bridge_interruptCtrl_txAckEnable <= 1'b0;
+ bridge_interruptCtrl_start_enable <= 1'b0;
+ bridge_interruptCtrl_start_flag <= 1'b0;
+ bridge_interruptCtrl_restart_enable <= 1'b0;
+ bridge_interruptCtrl_restart_flag <= 1'b0;
+ bridge_interruptCtrl_end_enable <= 1'b0;
+ bridge_interruptCtrl_end_flag <= 1'b0;
+ bridge_interruptCtrl_drop_enable <= 1'b0;
+ bridge_interruptCtrl_drop_flag <= 1'b0;
+ bridge_interruptCtrl_filterGen_enable <= 1'b0;
+ bridge_interruptCtrl_filterGen_flag <= 1'b0;
+ bridge_interruptCtrl_clockGenExit_enable <= 1'b0;
+ bridge_interruptCtrl_clockGenExit_flag <= 1'b0;
+ bridge_interruptCtrl_clockGenEnter_enable <= 1'b0;
+ bridge_interruptCtrl_clockGenEnter_flag <= 1'b0;
+ _zz_io_config_samplingClockDivider <= 10'h0;
+ bridge_masterLogic_fsm_stateReg <= Axi4Peripheralbridge_masterLogic_fsm_enumDef_BOOT;
+ bridge_slaveOverride_sda <= 1'b1;
+ bridge_slaveOverride_scl <= 1'b1;
+ bridge_i2cBuffer_scl_write_regNext <= 1'b1;
+ bridge_i2cBuffer_sda_write_regNext <= 1'b1;
+ end else begin
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_ctrl_rsp_valid_1 <= (busCtrl_rsp_valid && _zz_busCtrl_rsp_ready);
+ end
+ bridge_rxData_event <= 1'b0;
+ if(when_I2cCtrl_l224) begin
+ bridge_rxData_valid <= 1'b0;
+ end
+ if(when_I2cCtrl_l237) begin
+ bridge_rxAck_valid <= 1'b0;
+ end
+ if(bridge_rxData_event) begin
+ case(bridge_addressFilter_state)
+ 2'b00 : begin
+ bridge_addressFilter_state <= 2'b01;
+ end
+ 2'b01 : begin
+ bridge_addressFilter_state <= 2'b10;
+ end
+ default : begin
+ end
+ endcase
+ end
+ if(bridge_frameReset) begin
+ bridge_addressFilter_state <= 2'b00;
+ end
+ if(when_I2cCtrl_l310) begin
+ bridge_txAck_valid <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l377) begin
+ if(when_BusSlaveFactory_l379) begin
+ bridge_masterLogic_start <= _zz_bridge_masterLogic_start[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_1) begin
+ if(when_BusSlaveFactory_l379_1) begin
+ bridge_masterLogic_stop <= _zz_bridge_masterLogic_stop[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_2) begin
+ if(when_BusSlaveFactory_l379_2) begin
+ bridge_masterLogic_drop <= _zz_bridge_masterLogic_drop[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_3) begin
+ if(when_BusSlaveFactory_l379_3) begin
+ bridge_masterLogic_recover <= _zz_bridge_masterLogic_recover[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341) begin
+ if(when_BusSlaveFactory_l347) begin
+ bridge_masterLogic_fsm_dropped_start <= _zz_bridge_masterLogic_fsm_dropped_start[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_1) begin
+ if(when_BusSlaveFactory_l347_1) begin
+ bridge_masterLogic_fsm_dropped_stop <= _zz_bridge_masterLogic_fsm_dropped_stop[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_2) begin
+ if(when_BusSlaveFactory_l347_2) begin
+ bridge_masterLogic_fsm_dropped_recover <= _zz_bridge_masterLogic_fsm_dropped_recover[0];
+ end
+ end
+ case(i2cCtrl_io_bus_cmd_kind)
+ Axi4PeripheralI2cSlaveCmdMode_READ : begin
+ if(when_I2cCtrl_l566) begin
+ bridge_dataCounter <= (bridge_dataCounter + 3'b001);
+ if(when_I2cCtrl_l570) begin
+ if(bridge_txData_disableOnDataConflict) begin
+ bridge_txData_enable <= 1'b0;
+ end
+ if(bridge_txAck_disableOnDataConflict) begin
+ bridge_txAck_enable <= 1'b0;
+ end
+ end
+ if(when_I2cCtrl_l574) begin
+ if(bridge_rxData_listen) begin
+ bridge_rxData_valid <= 1'b1;
+ end
+ bridge_rxData_event <= 1'b1;
+ bridge_inAckState <= 1'b1;
+ if(when_I2cCtrl_l578) begin
+ bridge_txData_valid <= 1'b0;
+ end
+ end
+ end else begin
+ if(bridge_rxAck_listen) begin
+ bridge_rxAck_valid <= 1'b1;
+ end
+ bridge_inAckState <= 1'b0;
+ bridge_wasntAck <= i2cCtrl_io_bus_cmd_data;
+ if(when_I2cCtrl_l588) begin
+ bridge_txAck_valid <= 1'b0;
+ end
+ end
+ end
+ default : begin
+ end
+ endcase
+ if(bridge_frameReset) begin
+ bridge_inAckState <= 1'b0;
+ bridge_dataCounter <= 3'b000;
+ bridge_wasntAck <= 1'b0;
+ end
+ if(when_I2cCtrl_l601) begin
+ bridge_txData_valid <= 1'b1;
+ bridge_txData_enable <= 1'b0;
+ bridge_txData_repeat <= 1'b1;
+ bridge_txAck_valid <= 1'b1;
+ bridge_txAck_enable <= 1'b0;
+ bridge_txAck_repeat <= 1'b1;
+ bridge_rxData_listen <= 1'b0;
+ bridge_rxAck_listen <= 1'b0;
+ end
+ if(when_I2cCtrl_l634) begin
+ bridge_interruptCtrl_start_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_1) begin
+ bridge_interruptCtrl_start_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_3) begin
+ if(when_BusSlaveFactory_l347_3) begin
+ bridge_interruptCtrl_start_flag <= _zz_bridge_interruptCtrl_start_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_2) begin
+ bridge_interruptCtrl_restart_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_3) begin
+ bridge_interruptCtrl_restart_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_4) begin
+ if(when_BusSlaveFactory_l347_4) begin
+ bridge_interruptCtrl_restart_flag <= _zz_bridge_interruptCtrl_restart_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_4) begin
+ bridge_interruptCtrl_end_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_5) begin
+ bridge_interruptCtrl_end_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_5) begin
+ if(when_BusSlaveFactory_l347_5) begin
+ bridge_interruptCtrl_end_flag <= _zz_bridge_interruptCtrl_end_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_6) begin
+ bridge_interruptCtrl_drop_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_7) begin
+ bridge_interruptCtrl_drop_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_6) begin
+ if(when_BusSlaveFactory_l347_6) begin
+ bridge_interruptCtrl_drop_flag <= _zz_bridge_interruptCtrl_drop_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_8) begin
+ bridge_interruptCtrl_filterGen_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_9) begin
+ bridge_interruptCtrl_filterGen_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_7) begin
+ if(when_BusSlaveFactory_l347_7) begin
+ bridge_interruptCtrl_filterGen_flag <= _zz_bridge_interruptCtrl_filterGen_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_10) begin
+ bridge_interruptCtrl_clockGenExit_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_11) begin
+ bridge_interruptCtrl_clockGenExit_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_8) begin
+ if(when_BusSlaveFactory_l347_8) begin
+ bridge_interruptCtrl_clockGenExit_flag <= _zz_bridge_interruptCtrl_clockGenExit_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_12) begin
+ bridge_interruptCtrl_clockGenEnter_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_13) begin
+ bridge_interruptCtrl_clockGenEnter_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_9) begin
+ if(when_BusSlaveFactory_l347_9) begin
+ bridge_interruptCtrl_clockGenEnter_flag <= _zz_bridge_interruptCtrl_clockGenEnter_flag[0];
+ end
+ end
+ bridge_masterLogic_fsm_stateReg <= bridge_masterLogic_fsm_stateNext;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ if(!when_I2cCtrl_l367) begin
+ if(when_I2cCtrl_l369) begin
+ bridge_txData_valid <= 1'b0;
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_start <= 1'b0;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ if(i2cCtrl_io_internals_sdaRead) begin
+ bridge_masterLogic_stop <= 1'b0;
+ bridge_masterLogic_recover <= 1'b0;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ end
+ endcase
+ if(when_I2cCtrl_l350) begin
+ bridge_masterLogic_start <= 1'b0;
+ bridge_masterLogic_stop <= 1'b0;
+ bridge_masterLogic_drop <= 1'b0;
+ bridge_masterLogic_recover <= 1'b0;
+ if(bridge_masterLogic_start) begin
+ bridge_masterLogic_fsm_dropped_start <= 1'b1;
+ end
+ if(bridge_masterLogic_stop) begin
+ bridge_masterLogic_fsm_dropped_stop <= 1'b1;
+ end
+ end
+ bridge_i2cBuffer_scl_write_regNext <= bridge_i2cBuffer_scl_write;
+ bridge_i2cBuffer_sda_write_regNext <= bridge_i2cBuffer_sda_write;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h08 : begin
+ if(busCtrl_doWrite) begin
+ bridge_rxData_listen <= io_ctrl_cmd_payload_fragment_data[9];
+ end
+ end
+ 8'h0c : begin
+ if(busCtrl_doWrite) begin
+ bridge_rxAck_listen <= io_ctrl_cmd_payload_fragment_data[9];
+ end
+ end
+ 8'h0 : begin
+ if(busCtrl_doWrite) begin
+ bridge_txData_repeat <= io_ctrl_cmd_payload_fragment_data[10];
+ bridge_txData_valid <= io_ctrl_cmd_payload_fragment_data[8];
+ bridge_txData_enable <= io_ctrl_cmd_payload_fragment_data[9];
+ end
+ end
+ 8'h04 : begin
+ if(busCtrl_doWrite) begin
+ bridge_txAck_repeat <= io_ctrl_cmd_payload_fragment_data[10];
+ bridge_txAck_valid <= io_ctrl_cmd_payload_fragment_data[8];
+ bridge_txAck_enable <= io_ctrl_cmd_payload_fragment_data[9];
+ end
+ end
+ 8'h88 : begin
+ if(busCtrl_doWrite) begin
+ bridge_addressFilter_addresses_0_enable <= io_ctrl_cmd_payload_fragment_data[15];
+ end
+ end
+ 8'h8c : begin
+ if(busCtrl_doWrite) begin
+ bridge_addressFilter_addresses_1_enable <= io_ctrl_cmd_payload_fragment_data[15];
+ end
+ end
+ 8'h20 : begin
+ if(busCtrl_doWrite) begin
+ bridge_interruptCtrl_rxDataEnable <= io_ctrl_cmd_payload_fragment_data[0];
+ bridge_interruptCtrl_rxAckEnable <= io_ctrl_cmd_payload_fragment_data[1];
+ bridge_interruptCtrl_txDataEnable <= io_ctrl_cmd_payload_fragment_data[2];
+ bridge_interruptCtrl_txAckEnable <= io_ctrl_cmd_payload_fragment_data[3];
+ bridge_interruptCtrl_start_enable <= io_ctrl_cmd_payload_fragment_data[4];
+ bridge_interruptCtrl_restart_enable <= io_ctrl_cmd_payload_fragment_data[5];
+ bridge_interruptCtrl_end_enable <= io_ctrl_cmd_payload_fragment_data[6];
+ bridge_interruptCtrl_drop_enable <= io_ctrl_cmd_payload_fragment_data[7];
+ bridge_interruptCtrl_filterGen_enable <= io_ctrl_cmd_payload_fragment_data[17];
+ bridge_interruptCtrl_clockGenExit_enable <= io_ctrl_cmd_payload_fragment_data[15];
+ bridge_interruptCtrl_clockGenEnter_enable <= io_ctrl_cmd_payload_fragment_data[16];
+ end
+ end
+ 8'h28 : begin
+ if(busCtrl_doWrite) begin
+ _zz_io_config_samplingClockDivider <= io_ctrl_cmd_payload_fragment_data[9 : 0];
+ end
+ end
+ 8'h48 : begin
+ if(busCtrl_doWrite) begin
+ bridge_slaveOverride_sda <= io_ctrl_cmd_payload_fragment_data[1];
+ bridge_slaveOverride_scl <= io_ctrl_cmd_payload_fragment_data[2];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_ctrl_rsp_payload_last <= busCtrl_rsp_payload_last;
+ _zz_io_ctrl_rsp_payload_fragment_opcode <= busCtrl_rsp_payload_fragment_opcode;
+ _zz_io_ctrl_rsp_payload_fragment_data <= busCtrl_rsp_payload_fragment_data;
+ _zz_io_ctrl_rsp_payload_fragment_context <= busCtrl_rsp_payload_fragment_context;
+ end
+ if(bridge_rxData_event) begin
+ case(bridge_addressFilter_state)
+ 2'b00 : begin
+ bridge_addressFilter_byte0 <= bridge_rxData_value;
+ end
+ 2'b01 : begin
+ bridge_addressFilter_byte1 <= bridge_rxData_value;
+ end
+ default : begin
+ end
+ endcase
+ end
+ _zz_when_I2cCtrl_l310_1 <= _zz_when_I2cCtrl_l310;
+ bridge_masterLogic_timer_value <= (bridge_masterLogic_timer_value - _zz_bridge_masterLogic_timer_value);
+ if(when_I2cCtrl_l363) begin
+ bridge_masterLogic_fsm_inFrameLate <= 1'b1;
+ end
+ if(when_I2cCtrl_l363_1) begin
+ bridge_masterLogic_fsm_inFrameLate <= 1'b0;
+ end
+ case(i2cCtrl_io_bus_cmd_kind)
+ Axi4PeripheralI2cSlaveCmdMode_READ : begin
+ if(when_I2cCtrl_l566) begin
+ bridge_rxData_value[_zz_bridge_rxData_value] <= i2cCtrl_io_bus_cmd_data;
+ end else begin
+ bridge_rxAck_value <= i2cCtrl_io_bus_cmd_data;
+ end
+ end
+ default : begin
+ end
+ endcase
+ if(when_I2cCtrl_l601) begin
+ bridge_txData_disableOnDataConflict <= 1'b0;
+ bridge_txAck_disableOnDataConflict <= 1'b0;
+ end
+ _zz_when_I2cCtrl_l634_1 <= _zz_when_I2cCtrl_l634;
+ bridge_masterLogic_fsm_isBusy_regNext <= bridge_masterLogic_fsm_isBusy;
+ bridge_masterLogic_fsm_isBusy_regNext_1 <= bridge_masterLogic_fsm_isBusy;
+ bridge_timeoutClear <= 1'b0;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ if(when_I2cCtrl_l450) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tHigh;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ if(when_I2cCtrl_l474) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tHigh;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ end
+ endcase
+ if(when_StateMachine_l253) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tHigh;
+ end
+ if(when_StateMachine_l253_1) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tLow;
+ end
+ if(when_StateMachine_l253_2) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tLow;
+ end
+ if(when_StateMachine_l253_3) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tHigh;
+ end
+ if(when_StateMachine_l253_4) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tHigh;
+ end
+ if(when_StateMachine_l253_5) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tBuf;
+ end
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h0 : begin
+ if(busCtrl_doWrite) begin
+ bridge_txData_value <= io_ctrl_cmd_payload_fragment_data[7 : 0];
+ bridge_txData_disableOnDataConflict <= io_ctrl_cmd_payload_fragment_data[11];
+ end
+ end
+ 8'h04 : begin
+ if(busCtrl_doWrite) begin
+ bridge_txAck_value <= io_ctrl_cmd_payload_fragment_data[0];
+ bridge_txAck_disableOnDataConflict <= io_ctrl_cmd_payload_fragment_data[11];
+ end
+ end
+ 8'h88 : begin
+ if(busCtrl_doWrite) begin
+ bridge_addressFilter_addresses_0_value <= io_ctrl_cmd_payload_fragment_data[9 : 0];
+ bridge_addressFilter_addresses_0_is10Bit <= io_ctrl_cmd_payload_fragment_data[14];
+ end
+ end
+ 8'h8c : begin
+ if(busCtrl_doWrite) begin
+ bridge_addressFilter_addresses_1_value <= io_ctrl_cmd_payload_fragment_data[9 : 0];
+ bridge_addressFilter_addresses_1_is10Bit <= io_ctrl_cmd_payload_fragment_data[14];
+ end
+ end
+ 8'h50 : begin
+ if(busCtrl_doWrite) begin
+ bridge_masterLogic_timer_tLow <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 8'h54 : begin
+ if(busCtrl_doWrite) begin
+ bridge_masterLogic_timer_tHigh <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 8'h58 : begin
+ if(busCtrl_doWrite) begin
+ bridge_masterLogic_timer_tBuf <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 8'h2c : begin
+ if(busCtrl_doWrite) begin
+ _zz_io_config_timeout <= io_ctrl_cmd_payload_fragment_data[19 : 0];
+ bridge_timeoutClear <= 1'b1;
+ end
+ end
+ 8'h30 : begin
+ if(busCtrl_doWrite) begin
+ _zz_io_config_tsuData <= io_ctrl_cmd_payload_fragment_data[5 : 0];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ i2cCtrl_io_internals_inFrame_regNext <= 1'b0;
+ end else begin
+ i2cCtrl_io_internals_inFrame_regNext <= i2cCtrl_io_internals_inFrame;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbSpiXdrMasterCtrl_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_ctrl_cmd_valid,
+ output wire io_ctrl_cmd_ready,
+ input wire io_ctrl_cmd_payload_last,
+ input wire [0:0] io_ctrl_cmd_payload_fragment_opcode,
+ input wire [11:0] io_ctrl_cmd_payload_fragment_address,
+ input wire [1:0] io_ctrl_cmd_payload_fragment_length,
+ input wire [31:0] io_ctrl_cmd_payload_fragment_data,
+ input wire [2:0] io_ctrl_cmd_payload_fragment_context,
+ output wire io_ctrl_rsp_valid,
+ input wire io_ctrl_rsp_ready,
+ output wire io_ctrl_rsp_payload_last,
+ output wire [0:0] io_ctrl_rsp_payload_fragment_opcode,
+ output wire [31:0] io_ctrl_rsp_payload_fragment_data,
+ output wire [2:0] io_ctrl_rsp_payload_fragment_context,
+ output wire [0:0] io_spi_sclk_write,
+ output wire io_spi_data_0_writeEnable,
+ input wire [0:0] io_spi_data_0_read,
+ output wire [0:0] io_spi_data_0_write,
+ output wire io_spi_data_1_writeEnable,
+ input wire [0:0] io_spi_data_1_read,
+ output wire [0:0] io_spi_data_1_write,
+ output wire io_spi_data_2_writeEnable,
+ input wire [0:0] io_spi_data_2_read,
+ output wire [0:0] io_spi_data_2_write,
+ output wire io_spi_data_3_writeEnable,
+ input wire [0:0] io_spi_data_3_read,
+ output wire [0:0] io_spi_data_3_write,
+ output wire [3:0] io_spi_ss,
+ output wire system_spi_0_io_interrupt_source,
+ input wire clk,
+ input wire reset
+);
+
+ wire ctrl_io_rsp_queueWithOccupancy_io_pop_ready;
+ wire ctrl_io_cmd_ready;
+ wire ctrl_io_rsp_valid;
+ wire [7:0] ctrl_io_rsp_payload_data;
+ wire [0:0] ctrl_io_spi_sclk_write;
+ wire [3:0] ctrl_io_spi_ss;
+ wire [0:0] ctrl_io_spi_data_0_write;
+ wire ctrl_io_spi_data_0_writeEnable;
+ wire [0:0] ctrl_io_spi_data_1_write;
+ wire ctrl_io_spi_data_1_writeEnable;
+ wire [0:0] ctrl_io_spi_data_2_write;
+ wire ctrl_io_spi_data_2_writeEnable;
+ wire [0:0] ctrl_io_spi_data_3_write;
+ wire ctrl_io_spi_data_3_writeEnable;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_push_ready;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_valid;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_kind;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_read;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_write;
+ wire [7:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_data;
+ wire [8:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_occupancy;
+ wire [8:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_availability;
+ wire ctrl_io_rsp_queueWithOccupancy_io_push_ready;
+ wire ctrl_io_rsp_queueWithOccupancy_io_pop_valid;
+ wire [7:0] ctrl_io_rsp_queueWithOccupancy_io_pop_payload_data;
+ wire [8:0] ctrl_io_rsp_queueWithOccupancy_io_occupancy;
+ wire [8:0] ctrl_io_rsp_queueWithOccupancy_io_availability;
+ wire factory_readErrorFlag;
+ wire factory_writeErrorFlag;
+ wire factory_readHaltTrigger;
+ wire factory_writeHaltTrigger;
+ wire factory_rsp_valid;
+ wire factory_rsp_ready;
+ wire factory_rsp_payload_last;
+ reg [0:0] factory_rsp_payload_fragment_opcode;
+ reg [31:0] factory_rsp_payload_fragment_data;
+ wire [2:0] factory_rsp_payload_fragment_context;
+ wire _zz_factory_rsp_ready;
+ reg _zz_factory_rsp_ready_1;
+ wire _zz_io_ctrl_rsp_valid;
+ reg _zz_io_ctrl_rsp_valid_1;
+ reg _zz_io_ctrl_rsp_payload_last;
+ reg [0:0] _zz_io_ctrl_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_ctrl_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_ctrl_rsp_payload_fragment_context;
+ wire when_Stream_l375;
+ wire factory_askWrite;
+ wire factory_askRead;
+ wire io_ctrl_cmd_fire;
+ wire factory_doWrite;
+ wire factory_doRead;
+ wire when_BmbSlaveFactory_l33;
+ wire when_BmbSlaveFactory_l35;
+ wire [31:0] mapping_cmdLogic_writeData;
+ reg mapping_cmdLogic_doRegular;
+ reg mapping_cmdLogic_doWriteLarge;
+ reg mapping_cmdLogic_doReadWriteLarge;
+ wire mapping_cmdLogic_streamUnbuffered_valid;
+ wire mapping_cmdLogic_streamUnbuffered_ready;
+ wire mapping_cmdLogic_streamUnbuffered_payload_kind;
+ wire mapping_cmdLogic_streamUnbuffered_payload_read;
+ wire mapping_cmdLogic_streamUnbuffered_payload_write;
+ wire [7:0] mapping_cmdLogic_streamUnbuffered_payload_data;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_valid;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_kind;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_read;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_write;
+ wire [7:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_data;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_kind;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_read;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_write;
+ reg [7:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_data;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_valid;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_ready;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_kind;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_read;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_write;
+ wire [7:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_data;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rValid;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_kind;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_read;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_write;
+ reg [7:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_data;
+ wire when_Stream_l375_1;
+ wire ctrl_io_rsp_toStream_valid;
+ wire ctrl_io_rsp_toStream_ready;
+ wire [7:0] ctrl_io_rsp_toStream_payload_data;
+ reg _zz_io_pop_ready;
+ reg _zz_io_pop_ready_1;
+ reg mapping_interruptCtrl_cmdIntEnable;
+ reg mapping_interruptCtrl_rspIntEnable;
+ wire mapping_interruptCtrl_cmdInt;
+ wire mapping_interruptCtrl_rspInt;
+ wire mapping_interruptCtrl_interrupt;
+ reg _zz_io_config_kind_cpol;
+ reg _zz_io_config_kind_cpha;
+ reg [1:0] _zz_io_config_mod;
+ reg [11:0] _zz_io_config_sclkToggle;
+ reg [11:0] _zz_io_config_ss_setup;
+ reg [11:0] _zz_io_config_ss_hold;
+ reg [11:0] _zz_io_config_ss_disable;
+ reg [3:0] _zz_io_config_ss_activeHigh;
+ wire [1:0] _zz_io_config_kind_cpol_1;
+
+ Axi4PeripheralTopLevel_be6ad777990c4e5089d0b11c63cc2698 ctrl (
+ .io_config_kind_cpol (_zz_io_config_kind_cpol ), //i
+ .io_config_kind_cpha (_zz_io_config_kind_cpha ), //i
+ .io_config_sclkToggle (_zz_io_config_sclkToggle[11:0] ), //i
+ .io_config_mod (_zz_io_config_mod[1:0] ), //i
+ .io_config_ss_activeHigh (_zz_io_config_ss_activeHigh[3:0] ), //i
+ .io_config_ss_setup (_zz_io_config_ss_setup[11:0] ), //i
+ .io_config_ss_hold (_zz_io_config_ss_hold[11:0] ), //i
+ .io_config_ss_disable (_zz_io_config_ss_disable[11:0] ), //i
+ .io_cmd_valid (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_valid ), //i
+ .io_cmd_ready (ctrl_io_cmd_ready ), //o
+ .io_cmd_payload_kind (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_kind ), //i
+ .io_cmd_payload_read (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_read ), //i
+ .io_cmd_payload_write (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_write ), //i
+ .io_cmd_payload_data (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_data[7:0]), //i
+ .io_rsp_valid (ctrl_io_rsp_valid ), //o
+ .io_rsp_payload_data (ctrl_io_rsp_payload_data[7:0] ), //o
+ .io_spi_sclk_write (ctrl_io_spi_sclk_write ), //o
+ .io_spi_data_0_writeEnable (ctrl_io_spi_data_0_writeEnable ), //o
+ .io_spi_data_0_read (io_spi_data_0_read ), //i
+ .io_spi_data_0_write (ctrl_io_spi_data_0_write ), //o
+ .io_spi_data_1_writeEnable (ctrl_io_spi_data_1_writeEnable ), //o
+ .io_spi_data_1_read (io_spi_data_1_read ), //i
+ .io_spi_data_1_write (ctrl_io_spi_data_1_write ), //o
+ .io_spi_data_2_writeEnable (ctrl_io_spi_data_2_writeEnable ), //o
+ .io_spi_data_2_read (io_spi_data_2_read ), //i
+ .io_spi_data_2_write (ctrl_io_spi_data_2_write ), //o
+ .io_spi_data_3_writeEnable (ctrl_io_spi_data_3_writeEnable ), //o
+ .io_spi_data_3_read (io_spi_data_3_read ), //i
+ .io_spi_data_3_write (ctrl_io_spi_data_3_write ), //o
+ .io_spi_ss (ctrl_io_spi_ss[3:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralStreamFifo_2_be6ad777990c4e5089d0b11c63cc2698 mapping_cmdLogic_streamUnbuffered_queueWithAvailability (
+ .io_push_valid (mapping_cmdLogic_streamUnbuffered_valid ), //i
+ .io_push_ready (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_push_ready ), //o
+ .io_push_payload_kind (mapping_cmdLogic_streamUnbuffered_payload_kind ), //i
+ .io_push_payload_read (mapping_cmdLogic_streamUnbuffered_payload_read ), //i
+ .io_push_payload_write (mapping_cmdLogic_streamUnbuffered_payload_write ), //i
+ .io_push_payload_data (mapping_cmdLogic_streamUnbuffered_payload_data[7:0] ), //i
+ .io_pop_valid (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_valid ), //o
+ .io_pop_ready (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN ), //i
+ .io_pop_payload_kind (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_kind ), //o
+ .io_pop_payload_read (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_read ), //o
+ .io_pop_payload_write (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_write ), //o
+ .io_pop_payload_data (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_data[7:0]), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_occupancy[8:0] ), //o
+ .io_availability (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_availability[8:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralStreamFifo_3_be6ad777990c4e5089d0b11c63cc2698 ctrl_io_rsp_queueWithOccupancy (
+ .io_push_valid (ctrl_io_rsp_toStream_valid ), //i
+ .io_push_ready (ctrl_io_rsp_queueWithOccupancy_io_push_ready ), //o
+ .io_push_payload_data (ctrl_io_rsp_toStream_payload_data[7:0] ), //i
+ .io_pop_valid (ctrl_io_rsp_queueWithOccupancy_io_pop_valid ), //o
+ .io_pop_ready (ctrl_io_rsp_queueWithOccupancy_io_pop_ready ), //i
+ .io_pop_payload_data (ctrl_io_rsp_queueWithOccupancy_io_pop_payload_data[7:0]), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (ctrl_io_rsp_queueWithOccupancy_io_occupancy[8:0] ), //o
+ .io_availability (ctrl_io_rsp_queueWithOccupancy_io_availability[8:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign factory_readErrorFlag = 1'b0;
+ assign factory_writeErrorFlag = 1'b0;
+ assign factory_readHaltTrigger = 1'b0;
+ assign factory_writeHaltTrigger = 1'b0;
+ assign _zz_factory_rsp_ready = (! (factory_readHaltTrigger || factory_writeHaltTrigger));
+ assign factory_rsp_ready = (_zz_factory_rsp_ready_1 && _zz_factory_rsp_ready);
+ always @(*) begin
+ _zz_factory_rsp_ready_1 = io_ctrl_rsp_ready;
+ if(when_Stream_l375) begin
+ _zz_factory_rsp_ready_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! _zz_io_ctrl_rsp_valid);
+ assign _zz_io_ctrl_rsp_valid = _zz_io_ctrl_rsp_valid_1;
+ assign io_ctrl_rsp_valid = _zz_io_ctrl_rsp_valid;
+ assign io_ctrl_rsp_payload_last = _zz_io_ctrl_rsp_payload_last;
+ assign io_ctrl_rsp_payload_fragment_opcode = _zz_io_ctrl_rsp_payload_fragment_opcode;
+ assign io_ctrl_rsp_payload_fragment_data = _zz_io_ctrl_rsp_payload_fragment_data;
+ assign io_ctrl_rsp_payload_fragment_context = _zz_io_ctrl_rsp_payload_fragment_context;
+ assign factory_askWrite = (io_ctrl_cmd_valid && (io_ctrl_cmd_payload_fragment_opcode == 1'b1));
+ assign factory_askRead = (io_ctrl_cmd_valid && (io_ctrl_cmd_payload_fragment_opcode == 1'b0));
+ assign io_ctrl_cmd_fire = (io_ctrl_cmd_valid && io_ctrl_cmd_ready);
+ assign factory_doWrite = (io_ctrl_cmd_fire && (io_ctrl_cmd_payload_fragment_opcode == 1'b1));
+ assign factory_doRead = (io_ctrl_cmd_fire && (io_ctrl_cmd_payload_fragment_opcode == 1'b0));
+ assign factory_rsp_valid = io_ctrl_cmd_valid;
+ assign io_ctrl_cmd_ready = factory_rsp_ready;
+ assign factory_rsp_payload_last = 1'b1;
+ assign when_BmbSlaveFactory_l33 = (factory_doWrite && factory_writeErrorFlag);
+ always @(*) begin
+ if(when_BmbSlaveFactory_l33) begin
+ factory_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ if(when_BmbSlaveFactory_l35) begin
+ factory_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ factory_rsp_payload_fragment_opcode = 1'b0;
+ end
+ end
+ end
+
+ assign when_BmbSlaveFactory_l35 = (factory_doRead && factory_readErrorFlag);
+ always @(*) begin
+ factory_rsp_payload_fragment_data = 32'h0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h0 : begin
+ factory_rsp_payload_fragment_data[31 : 31] = (! ctrl_io_rsp_queueWithOccupancy_io_pop_valid);
+ factory_rsp_payload_fragment_data[7 : 0] = ctrl_io_rsp_queueWithOccupancy_io_pop_payload_data;
+ end
+ 12'h004 : begin
+ factory_rsp_payload_fragment_data[8 : 0] = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_availability;
+ factory_rsp_payload_fragment_data[24 : 16] = ctrl_io_rsp_queueWithOccupancy_io_occupancy;
+ end
+ 12'h00c : begin
+ factory_rsp_payload_fragment_data[16 : 16] = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_valid;
+ factory_rsp_payload_fragment_data[0 : 0] = mapping_interruptCtrl_cmdIntEnable;
+ factory_rsp_payload_fragment_data[1 : 1] = mapping_interruptCtrl_rspIntEnable;
+ factory_rsp_payload_fragment_data[8 : 8] = mapping_interruptCtrl_cmdInt;
+ factory_rsp_payload_fragment_data[9 : 9] = mapping_interruptCtrl_rspInt;
+ end
+ 12'h058 : begin
+ factory_rsp_payload_fragment_data[7 : 0] = ctrl_io_rsp_queueWithOccupancy_io_pop_payload_data;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign factory_rsp_payload_fragment_context = io_ctrl_cmd_payload_fragment_context;
+ always @(*) begin
+ mapping_cmdLogic_doRegular = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h0 : begin
+ if(factory_doWrite) begin
+ mapping_cmdLogic_doRegular = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ mapping_cmdLogic_doWriteLarge = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h050 : begin
+ if(factory_doWrite) begin
+ mapping_cmdLogic_doWriteLarge = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ mapping_cmdLogic_doReadWriteLarge = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h054 : begin
+ if(factory_doWrite) begin
+ mapping_cmdLogic_doReadWriteLarge = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign mapping_cmdLogic_streamUnbuffered_valid = ((mapping_cmdLogic_doRegular || mapping_cmdLogic_doWriteLarge) || mapping_cmdLogic_doReadWriteLarge);
+ assign mapping_cmdLogic_streamUnbuffered_payload_write = (((mapping_cmdLogic_doRegular && mapping_cmdLogic_writeData[8]) || mapping_cmdLogic_doWriteLarge) || mapping_cmdLogic_doReadWriteLarge);
+ assign mapping_cmdLogic_streamUnbuffered_payload_read = ((mapping_cmdLogic_doRegular && mapping_cmdLogic_writeData[9]) || mapping_cmdLogic_doReadWriteLarge);
+ assign mapping_cmdLogic_streamUnbuffered_payload_kind = (mapping_cmdLogic_doRegular && mapping_cmdLogic_writeData[11]);
+ assign mapping_cmdLogic_streamUnbuffered_payload_data = mapping_cmdLogic_writeData[7:0];
+ assign mapping_cmdLogic_streamUnbuffered_ready = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_push_ready;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_valid = (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_valid || (! mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN));
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_kind = (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN ? mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_kind : mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_kind);
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_read = (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN ? mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_read : mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_read);
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_write = (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN ? mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_write : mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_write);
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_data = (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN ? mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_data : mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_data);
+ always @(*) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_ready;
+ if(when_Stream_l375_1) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_1 = (! mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_valid);
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_valid = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rValid;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_kind = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_kind;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_read = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_read;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_write = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_write;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_data = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_data;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_ready = ctrl_io_cmd_ready;
+ assign ctrl_io_rsp_toStream_valid = ctrl_io_rsp_valid;
+ assign ctrl_io_rsp_toStream_payload_data = ctrl_io_rsp_payload_data;
+ assign ctrl_io_rsp_toStream_ready = ctrl_io_rsp_queueWithOccupancy_io_push_ready;
+ always @(*) begin
+ _zz_io_pop_ready = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h0 : begin
+ if(factory_doRead) begin
+ _zz_io_pop_ready = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ _zz_io_pop_ready_1 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h058 : begin
+ if(factory_doRead) begin
+ _zz_io_pop_ready_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign ctrl_io_rsp_queueWithOccupancy_io_pop_ready = (_zz_io_pop_ready || _zz_io_pop_ready_1);
+ assign mapping_interruptCtrl_cmdInt = (mapping_interruptCtrl_cmdIntEnable && (! mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_valid));
+ assign mapping_interruptCtrl_rspInt = (mapping_interruptCtrl_rspIntEnable && ctrl_io_rsp_queueWithOccupancy_io_pop_valid);
+ assign mapping_interruptCtrl_interrupt = (mapping_interruptCtrl_rspInt || mapping_interruptCtrl_cmdInt);
+ assign io_spi_sclk_write = ctrl_io_spi_sclk_write;
+ assign io_spi_data_0_writeEnable = ctrl_io_spi_data_0_writeEnable;
+ assign io_spi_data_0_write = ctrl_io_spi_data_0_write;
+ assign io_spi_data_1_writeEnable = ctrl_io_spi_data_1_writeEnable;
+ assign io_spi_data_1_write = ctrl_io_spi_data_1_write;
+ assign io_spi_data_2_writeEnable = ctrl_io_spi_data_2_writeEnable;
+ assign io_spi_data_2_write = ctrl_io_spi_data_2_write;
+ assign io_spi_data_3_writeEnable = ctrl_io_spi_data_3_writeEnable;
+ assign io_spi_data_3_write = ctrl_io_spi_data_3_write;
+ assign io_spi_ss = ctrl_io_spi_ss;
+ assign system_spi_0_io_interrupt_source = mapping_interruptCtrl_interrupt;
+ assign mapping_cmdLogic_writeData = io_ctrl_cmd_payload_fragment_data[31 : 0];
+ assign _zz_io_config_kind_cpol_1 = io_ctrl_cmd_payload_fragment_data[1 : 0];
+ always @(posedge clk) begin
+ if(reset) begin
+ _zz_io_ctrl_rsp_valid_1 <= 1'b0;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN <= 1'b1;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rValid <= 1'b0;
+ mapping_interruptCtrl_cmdIntEnable <= 1'b0;
+ mapping_interruptCtrl_rspIntEnable <= 1'b0;
+ _zz_io_config_ss_activeHigh <= 4'b0000;
+ end else begin
+ if(_zz_factory_rsp_ready_1) begin
+ _zz_io_ctrl_rsp_valid_1 <= (factory_rsp_valid && _zz_factory_rsp_ready);
+ end
+ if(mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_valid) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN <= 1'b0;
+ end
+ if(mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN <= 1'b1;
+ end
+ if(mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rValid <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_valid;
+ end
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h00c : begin
+ if(factory_doWrite) begin
+ mapping_interruptCtrl_cmdIntEnable <= io_ctrl_cmd_payload_fragment_data[0];
+ mapping_interruptCtrl_rspIntEnable <= io_ctrl_cmd_payload_fragment_data[1];
+ end
+ end
+ 12'h030 : begin
+ if(factory_doWrite) begin
+ _zz_io_config_ss_activeHigh <= io_ctrl_cmd_payload_fragment_data[3 : 0];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_factory_rsp_ready_1) begin
+ _zz_io_ctrl_rsp_payload_last <= factory_rsp_payload_last;
+ _zz_io_ctrl_rsp_payload_fragment_opcode <= factory_rsp_payload_fragment_opcode;
+ _zz_io_ctrl_rsp_payload_fragment_data <= factory_rsp_payload_fragment_data;
+ _zz_io_ctrl_rsp_payload_fragment_context <= factory_rsp_payload_fragment_context;
+ end
+ if(mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_kind <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_kind;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_read <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_read;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_write <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_write;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_data <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_data;
+ end
+ if(mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_kind <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_kind;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_read <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_read;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_write <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_write;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_data <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_data;
+ end
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h008 : begin
+ if(factory_doWrite) begin
+ _zz_io_config_kind_cpol <= _zz_io_config_kind_cpol_1[0];
+ _zz_io_config_kind_cpha <= _zz_io_config_kind_cpol_1[1];
+ _zz_io_config_mod <= io_ctrl_cmd_payload_fragment_data[5 : 4];
+ end
+ end
+ 12'h020 : begin
+ if(factory_doWrite) begin
+ _zz_io_config_sclkToggle <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 12'h024 : begin
+ if(factory_doWrite) begin
+ _zz_io_config_ss_setup <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 12'h028 : begin
+ if(factory_doWrite) begin
+ _zz_io_config_ss_hold <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 12'h02c : begin
+ if(factory_doWrite) begin
+ _zz_io_config_ss_disable <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbUartCtrl_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_bus_cmd_valid,
+ output wire io_bus_cmd_ready,
+ input wire io_bus_cmd_payload_last,
+ input wire [0:0] io_bus_cmd_payload_fragment_opcode,
+ input wire [5:0] io_bus_cmd_payload_fragment_address,
+ input wire [1:0] io_bus_cmd_payload_fragment_length,
+ input wire [31:0] io_bus_cmd_payload_fragment_data,
+ input wire [2:0] io_bus_cmd_payload_fragment_context,
+ output wire io_bus_rsp_valid,
+ input wire io_bus_rsp_ready,
+ output wire io_bus_rsp_payload_last,
+ output wire [0:0] io_bus_rsp_payload_fragment_opcode,
+ output wire [31:0] io_bus_rsp_payload_fragment_data,
+ output wire [2:0] io_bus_rsp_payload_fragment_context,
+ output wire io_uart_txd,
+ input wire io_uart_rxd,
+ output wire system_uart_0_io_interrupt_source,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4PeripheralUartStopType_ONE = 1'd0;
+ localparam Axi4PeripheralUartStopType_TWO = 1'd1;
+ localparam Axi4PeripheralUartParityType_NONE = 2'd0;
+ localparam Axi4PeripheralUartParityType_EVEN = 2'd1;
+ localparam Axi4PeripheralUartParityType_ODD = 2'd2;
+
+ reg uartCtrl_io_read_queueWithOccupancy_io_pop_ready;
+ wire uartCtrl_io_write_ready;
+ wire uartCtrl_io_read_valid;
+ wire [7:0] uartCtrl_io_read_payload;
+ wire uartCtrl_io_uart_txd;
+ wire uartCtrl_io_readError;
+ wire uartCtrl_io_readBreak;
+ wire bridge_write_streamUnbuffered_queueWithOccupancy_io_push_ready;
+ wire bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_valid;
+ wire [7:0] bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_payload;
+ wire [7:0] bridge_write_streamUnbuffered_queueWithOccupancy_io_occupancy;
+ wire [7:0] bridge_write_streamUnbuffered_queueWithOccupancy_io_availability;
+ wire uartCtrl_io_read_queueWithOccupancy_io_push_ready;
+ wire uartCtrl_io_read_queueWithOccupancy_io_pop_valid;
+ wire [7:0] uartCtrl_io_read_queueWithOccupancy_io_pop_payload;
+ wire [7:0] uartCtrl_io_read_queueWithOccupancy_io_occupancy;
+ wire [7:0] uartCtrl_io_read_queueWithOccupancy_io_availability;
+ wire [0:0] _zz_bridge_misc_readError;
+ wire [0:0] _zz_bridge_misc_readOverflowError;
+ wire [0:0] _zz_bridge_misc_breakDetected;
+ wire [0:0] _zz_bridge_misc_doBreak;
+ wire [0:0] _zz_bridge_misc_doBreak_1;
+ wire [7:0] _zz_busCtrl_rsp_payload_fragment_data;
+ wire busCtrl_readErrorFlag;
+ wire busCtrl_writeErrorFlag;
+ wire busCtrl_readHaltTrigger;
+ wire busCtrl_writeHaltTrigger;
+ wire busCtrl_rsp_valid;
+ wire busCtrl_rsp_ready;
+ wire busCtrl_rsp_payload_last;
+ reg [0:0] busCtrl_rsp_payload_fragment_opcode;
+ reg [31:0] busCtrl_rsp_payload_fragment_data;
+ wire [2:0] busCtrl_rsp_payload_fragment_context;
+ wire _zz_busCtrl_rsp_ready;
+ reg _zz_busCtrl_rsp_ready_1;
+ wire _zz_io_bus_rsp_valid;
+ reg _zz_io_bus_rsp_valid_1;
+ reg _zz_io_bus_rsp_payload_last;
+ reg [0:0] _zz_io_bus_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_bus_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_bus_rsp_payload_fragment_context;
+ wire when_Stream_l375;
+ wire busCtrl_askWrite;
+ wire busCtrl_askRead;
+ wire io_bus_cmd_fire;
+ wire busCtrl_doWrite;
+ wire busCtrl_doRead;
+ wire when_BmbSlaveFactory_l33;
+ wire when_BmbSlaveFactory_l35;
+ wire bridge_busCtrlWrapped_readErrorFlag;
+ wire bridge_busCtrlWrapped_writeErrorFlag;
+ reg [2:0] bridge_uartConfigReg_frame_dataLength;
+ reg [0:0] bridge_uartConfigReg_frame_stop;
+ reg [1:0] bridge_uartConfigReg_frame_parity;
+ reg [19:0] bridge_uartConfigReg_clockDivider;
+ reg _zz_bridge_write_streamUnbuffered_valid;
+ wire bridge_write_streamUnbuffered_valid;
+ wire bridge_write_streamUnbuffered_ready;
+ wire [7:0] bridge_write_streamUnbuffered_payload;
+ reg bridge_read_streamBreaked_valid;
+ reg bridge_read_streamBreaked_ready;
+ wire [7:0] bridge_read_streamBreaked_payload;
+ reg bridge_interruptCtrl_writeIntEnable;
+ reg bridge_interruptCtrl_readIntEnable;
+ wire bridge_interruptCtrl_readInt;
+ wire bridge_interruptCtrl_writeInt;
+ wire bridge_interruptCtrl_interrupt;
+ reg bridge_misc_readError;
+ reg when_BusSlaveFactory_l341;
+ wire when_BusSlaveFactory_l347;
+ reg bridge_misc_readOverflowError;
+ reg when_BusSlaveFactory_l341_1;
+ wire when_BusSlaveFactory_l347_1;
+ wire uartCtrl_io_read_isStall;
+ reg bridge_misc_breakDetected;
+ reg uartCtrl_io_readBreak_regNext;
+ wire when_UartCtrl_l155;
+ reg when_BusSlaveFactory_l341_2;
+ wire when_BusSlaveFactory_l347_2;
+ reg bridge_misc_doBreak;
+ reg when_BusSlaveFactory_l377;
+ wire when_BusSlaveFactory_l379;
+ reg when_BusSlaveFactory_l341_3;
+ wire when_BusSlaveFactory_l347_3;
+ wire [1:0] _zz_bridge_uartConfigReg_frame_parity;
+ wire [0:0] _zz_bridge_uartConfigReg_frame_stop;
+ wire when_BmbSlaveFactory_l77;
+ `ifndef SYNTHESIS
+ reg [23:0] bridge_uartConfigReg_frame_stop_string;
+ reg [31:0] bridge_uartConfigReg_frame_parity_string;
+ reg [31:0] _zz_bridge_uartConfigReg_frame_parity_string;
+ reg [23:0] _zz_bridge_uartConfigReg_frame_stop_string;
+ `endif
+
+
+ assign _zz_bridge_misc_readError = 1'b0;
+ assign _zz_bridge_misc_readOverflowError = 1'b0;
+ assign _zz_bridge_misc_breakDetected = 1'b0;
+ assign _zz_bridge_misc_doBreak = 1'b1;
+ assign _zz_bridge_misc_doBreak_1 = 1'b0;
+ assign _zz_busCtrl_rsp_payload_fragment_data = (8'h80 - bridge_write_streamUnbuffered_queueWithOccupancy_io_occupancy);
+ Axi4PeripheralUartCtrl_be6ad777990c4e5089d0b11c63cc2698 uartCtrl (
+ .io_config_frame_dataLength (bridge_uartConfigReg_frame_dataLength[2:0] ), //i
+ .io_config_frame_stop (bridge_uartConfigReg_frame_stop ), //i
+ .io_config_frame_parity (bridge_uartConfigReg_frame_parity[1:0] ), //i
+ .io_config_clockDivider (bridge_uartConfigReg_clockDivider[19:0] ), //i
+ .io_write_valid (bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_valid ), //i
+ .io_write_ready (uartCtrl_io_write_ready ), //o
+ .io_write_payload (bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_payload[7:0]), //i
+ .io_read_valid (uartCtrl_io_read_valid ), //o
+ .io_read_ready (uartCtrl_io_read_queueWithOccupancy_io_push_ready ), //i
+ .io_read_payload (uartCtrl_io_read_payload[7:0] ), //o
+ .io_uart_txd (uartCtrl_io_uart_txd ), //o
+ .io_uart_rxd (io_uart_rxd ), //i
+ .io_readError (uartCtrl_io_readError ), //o
+ .io_writeBreak (bridge_misc_doBreak ), //i
+ .io_readBreak (uartCtrl_io_readBreak ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralStreamFifo_be6ad777990c4e5089d0b11c63cc2698 bridge_write_streamUnbuffered_queueWithOccupancy (
+ .io_push_valid (bridge_write_streamUnbuffered_valid ), //i
+ .io_push_ready (bridge_write_streamUnbuffered_queueWithOccupancy_io_push_ready ), //o
+ .io_push_payload (bridge_write_streamUnbuffered_payload[7:0] ), //i
+ .io_pop_valid (bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_valid ), //o
+ .io_pop_ready (uartCtrl_io_write_ready ), //i
+ .io_pop_payload (bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_payload[7:0] ), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (bridge_write_streamUnbuffered_queueWithOccupancy_io_occupancy[7:0] ), //o
+ .io_availability (bridge_write_streamUnbuffered_queueWithOccupancy_io_availability[7:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralStreamFifo_be6ad777990c4e5089d0b11c63cc2698 uartCtrl_io_read_queueWithOccupancy (
+ .io_push_valid (uartCtrl_io_read_valid ), //i
+ .io_push_ready (uartCtrl_io_read_queueWithOccupancy_io_push_ready ), //o
+ .io_push_payload (uartCtrl_io_read_payload[7:0] ), //i
+ .io_pop_valid (uartCtrl_io_read_queueWithOccupancy_io_pop_valid ), //o
+ .io_pop_ready (uartCtrl_io_read_queueWithOccupancy_io_pop_ready ), //i
+ .io_pop_payload (uartCtrl_io_read_queueWithOccupancy_io_pop_payload[7:0] ), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (uartCtrl_io_read_queueWithOccupancy_io_occupancy[7:0] ), //o
+ .io_availability (uartCtrl_io_read_queueWithOccupancy_io_availability[7:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(bridge_uartConfigReg_frame_stop)
+ Axi4PeripheralUartStopType_ONE : bridge_uartConfigReg_frame_stop_string = "ONE";
+ Axi4PeripheralUartStopType_TWO : bridge_uartConfigReg_frame_stop_string = "TWO";
+ default : bridge_uartConfigReg_frame_stop_string = "???";
+ endcase
+ end
+ always @(*) begin
+ case(bridge_uartConfigReg_frame_parity)
+ Axi4PeripheralUartParityType_NONE : bridge_uartConfigReg_frame_parity_string = "NONE";
+ Axi4PeripheralUartParityType_EVEN : bridge_uartConfigReg_frame_parity_string = "EVEN";
+ Axi4PeripheralUartParityType_ODD : bridge_uartConfigReg_frame_parity_string = "ODD ";
+ default : bridge_uartConfigReg_frame_parity_string = "????";
+ endcase
+ end
+ always @(*) begin
+ case(_zz_bridge_uartConfigReg_frame_parity)
+ Axi4PeripheralUartParityType_NONE : _zz_bridge_uartConfigReg_frame_parity_string = "NONE";
+ Axi4PeripheralUartParityType_EVEN : _zz_bridge_uartConfigReg_frame_parity_string = "EVEN";
+ Axi4PeripheralUartParityType_ODD : _zz_bridge_uartConfigReg_frame_parity_string = "ODD ";
+ default : _zz_bridge_uartConfigReg_frame_parity_string = "????";
+ endcase
+ end
+ always @(*) begin
+ case(_zz_bridge_uartConfigReg_frame_stop)
+ Axi4PeripheralUartStopType_ONE : _zz_bridge_uartConfigReg_frame_stop_string = "ONE";
+ Axi4PeripheralUartStopType_TWO : _zz_bridge_uartConfigReg_frame_stop_string = "TWO";
+ default : _zz_bridge_uartConfigReg_frame_stop_string = "???";
+ endcase
+ end
+ `endif
+
+ assign io_uart_txd = uartCtrl_io_uart_txd;
+ assign busCtrl_readErrorFlag = 1'b0;
+ assign busCtrl_writeErrorFlag = 1'b0;
+ assign busCtrl_readHaltTrigger = 1'b0;
+ assign busCtrl_writeHaltTrigger = 1'b0;
+ assign _zz_busCtrl_rsp_ready = (! (busCtrl_readHaltTrigger || busCtrl_writeHaltTrigger));
+ assign busCtrl_rsp_ready = (_zz_busCtrl_rsp_ready_1 && _zz_busCtrl_rsp_ready);
+ always @(*) begin
+ _zz_busCtrl_rsp_ready_1 = io_bus_rsp_ready;
+ if(when_Stream_l375) begin
+ _zz_busCtrl_rsp_ready_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! _zz_io_bus_rsp_valid);
+ assign _zz_io_bus_rsp_valid = _zz_io_bus_rsp_valid_1;
+ assign io_bus_rsp_valid = _zz_io_bus_rsp_valid;
+ assign io_bus_rsp_payload_last = _zz_io_bus_rsp_payload_last;
+ assign io_bus_rsp_payload_fragment_opcode = _zz_io_bus_rsp_payload_fragment_opcode;
+ assign io_bus_rsp_payload_fragment_data = _zz_io_bus_rsp_payload_fragment_data;
+ assign io_bus_rsp_payload_fragment_context = _zz_io_bus_rsp_payload_fragment_context;
+ assign busCtrl_askWrite = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_askRead = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign io_bus_cmd_fire = (io_bus_cmd_valid && io_bus_cmd_ready);
+ assign busCtrl_doWrite = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_doRead = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign busCtrl_rsp_valid = io_bus_cmd_valid;
+ assign io_bus_cmd_ready = busCtrl_rsp_ready;
+ assign busCtrl_rsp_payload_last = 1'b1;
+ assign when_BmbSlaveFactory_l33 = (busCtrl_doWrite && busCtrl_writeErrorFlag);
+ always @(*) begin
+ if(when_BmbSlaveFactory_l33) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ if(when_BmbSlaveFactory_l35) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b0;
+ end
+ end
+ end
+
+ assign when_BmbSlaveFactory_l35 = (busCtrl_doRead && busCtrl_readErrorFlag);
+ always @(*) begin
+ busCtrl_rsp_payload_fragment_data = 32'h0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h0 : begin
+ busCtrl_rsp_payload_fragment_data[16 : 16] = (bridge_read_streamBreaked_valid ^ 1'b0);
+ busCtrl_rsp_payload_fragment_data[7 : 0] = bridge_read_streamBreaked_payload;
+ end
+ 6'h04 : begin
+ busCtrl_rsp_payload_fragment_data[23 : 16] = _zz_busCtrl_rsp_payload_fragment_data;
+ busCtrl_rsp_payload_fragment_data[15 : 15] = bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_valid;
+ busCtrl_rsp_payload_fragment_data[31 : 24] = uartCtrl_io_read_queueWithOccupancy_io_occupancy;
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_interruptCtrl_writeIntEnable;
+ busCtrl_rsp_payload_fragment_data[1 : 1] = bridge_interruptCtrl_readIntEnable;
+ busCtrl_rsp_payload_fragment_data[8 : 8] = bridge_interruptCtrl_writeInt;
+ busCtrl_rsp_payload_fragment_data[9 : 9] = bridge_interruptCtrl_readInt;
+ end
+ 6'h10 : begin
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_misc_readError;
+ busCtrl_rsp_payload_fragment_data[1 : 1] = bridge_misc_readOverflowError;
+ busCtrl_rsp_payload_fragment_data[8 : 8] = uartCtrl_io_readBreak;
+ busCtrl_rsp_payload_fragment_data[9 : 9] = bridge_misc_breakDetected;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign busCtrl_rsp_payload_fragment_context = io_bus_cmd_payload_fragment_context;
+ assign bridge_busCtrlWrapped_readErrorFlag = 1'b0;
+ assign bridge_busCtrlWrapped_writeErrorFlag = 1'b0;
+ always @(*) begin
+ _zz_bridge_write_streamUnbuffered_valid = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h0 : begin
+ if(busCtrl_doWrite) begin
+ _zz_bridge_write_streamUnbuffered_valid = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign bridge_write_streamUnbuffered_valid = _zz_bridge_write_streamUnbuffered_valid;
+ assign bridge_write_streamUnbuffered_payload = io_bus_cmd_payload_fragment_data[7 : 0];
+ assign bridge_write_streamUnbuffered_ready = bridge_write_streamUnbuffered_queueWithOccupancy_io_push_ready;
+ always @(*) begin
+ bridge_read_streamBreaked_valid = uartCtrl_io_read_queueWithOccupancy_io_pop_valid;
+ if(uartCtrl_io_readBreak) begin
+ bridge_read_streamBreaked_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ uartCtrl_io_read_queueWithOccupancy_io_pop_ready = bridge_read_streamBreaked_ready;
+ if(uartCtrl_io_readBreak) begin
+ uartCtrl_io_read_queueWithOccupancy_io_pop_ready = 1'b1;
+ end
+ end
+
+ assign bridge_read_streamBreaked_payload = uartCtrl_io_read_queueWithOccupancy_io_pop_payload;
+ always @(*) begin
+ bridge_read_streamBreaked_ready = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h0 : begin
+ if(busCtrl_doRead) begin
+ bridge_read_streamBreaked_ready = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign bridge_interruptCtrl_readInt = (bridge_interruptCtrl_readIntEnable && bridge_read_streamBreaked_valid);
+ assign bridge_interruptCtrl_writeInt = (bridge_interruptCtrl_writeIntEnable && (! bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_valid));
+ assign bridge_interruptCtrl_interrupt = (bridge_interruptCtrl_readInt || bridge_interruptCtrl_writeInt);
+ always @(*) begin
+ when_BusSlaveFactory_l341 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h10 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347 = io_bus_cmd_payload_fragment_data[0];
+ always @(*) begin
+ when_BusSlaveFactory_l341_1 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h10 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_1 = io_bus_cmd_payload_fragment_data[1];
+ assign uartCtrl_io_read_isStall = (uartCtrl_io_read_valid && (! uartCtrl_io_read_queueWithOccupancy_io_push_ready));
+ assign when_UartCtrl_l155 = (uartCtrl_io_readBreak && (! uartCtrl_io_readBreak_regNext));
+ always @(*) begin
+ when_BusSlaveFactory_l341_2 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h10 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_2 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_2 = io_bus_cmd_payload_fragment_data[9];
+ always @(*) begin
+ when_BusSlaveFactory_l377 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h10 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l377 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379 = io_bus_cmd_payload_fragment_data[10];
+ always @(*) begin
+ when_BusSlaveFactory_l341_3 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h10 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_3 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_3 = io_bus_cmd_payload_fragment_data[11];
+ assign system_uart_0_io_interrupt_source = bridge_interruptCtrl_interrupt;
+ assign _zz_bridge_uartConfigReg_frame_parity = io_bus_cmd_payload_fragment_data[9 : 8];
+ assign _zz_bridge_uartConfigReg_frame_stop = io_bus_cmd_payload_fragment_data[16 : 16];
+ assign when_BmbSlaveFactory_l77 = ((io_bus_cmd_payload_fragment_address & (~ 6'h03)) == 6'h08);
+ always @(posedge clk) begin
+ if(reset) begin
+ _zz_io_bus_rsp_valid_1 <= 1'b0;
+ bridge_uartConfigReg_clockDivider <= 20'h0;
+ bridge_uartConfigReg_clockDivider <= 20'h000d8;
+ bridge_uartConfigReg_frame_dataLength <= 3'b111;
+ bridge_uartConfigReg_frame_parity <= Axi4PeripheralUartParityType_NONE;
+ bridge_uartConfigReg_frame_stop <= Axi4PeripheralUartStopType_ONE;
+ bridge_interruptCtrl_writeIntEnable <= 1'b0;
+ bridge_interruptCtrl_readIntEnable <= 1'b0;
+ bridge_misc_readError <= 1'b0;
+ bridge_misc_readOverflowError <= 1'b0;
+ bridge_misc_breakDetected <= 1'b0;
+ bridge_misc_doBreak <= 1'b0;
+ end else begin
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_bus_rsp_valid_1 <= (busCtrl_rsp_valid && _zz_busCtrl_rsp_ready);
+ end
+ if(when_BusSlaveFactory_l341) begin
+ if(when_BusSlaveFactory_l347) begin
+ bridge_misc_readError <= _zz_bridge_misc_readError[0];
+ end
+ end
+ if(uartCtrl_io_readError) begin
+ bridge_misc_readError <= 1'b1;
+ end
+ if(when_BusSlaveFactory_l341_1) begin
+ if(when_BusSlaveFactory_l347_1) begin
+ bridge_misc_readOverflowError <= _zz_bridge_misc_readOverflowError[0];
+ end
+ end
+ if(uartCtrl_io_read_isStall) begin
+ bridge_misc_readOverflowError <= 1'b1;
+ end
+ if(when_UartCtrl_l155) begin
+ bridge_misc_breakDetected <= 1'b1;
+ end
+ if(when_BusSlaveFactory_l341_2) begin
+ if(when_BusSlaveFactory_l347_2) begin
+ bridge_misc_breakDetected <= _zz_bridge_misc_breakDetected[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377) begin
+ if(when_BusSlaveFactory_l379) begin
+ bridge_misc_doBreak <= _zz_bridge_misc_doBreak[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_3) begin
+ if(when_BusSlaveFactory_l347_3) begin
+ bridge_misc_doBreak <= _zz_bridge_misc_doBreak_1[0];
+ end
+ end
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h0c : begin
+ if(busCtrl_doWrite) begin
+ bridge_uartConfigReg_frame_dataLength <= io_bus_cmd_payload_fragment_data[2 : 0];
+ bridge_uartConfigReg_frame_parity <= _zz_bridge_uartConfigReg_frame_parity;
+ bridge_uartConfigReg_frame_stop <= _zz_bridge_uartConfigReg_frame_stop;
+ end
+ end
+ 6'h04 : begin
+ if(busCtrl_doWrite) begin
+ bridge_interruptCtrl_writeIntEnable <= io_bus_cmd_payload_fragment_data[0];
+ bridge_interruptCtrl_readIntEnable <= io_bus_cmd_payload_fragment_data[1];
+ end
+ end
+ default : begin
+ end
+ endcase
+ if(when_BmbSlaveFactory_l77) begin
+ if(busCtrl_doWrite) begin
+ bridge_uartConfigReg_clockDivider[19 : 0] <= io_bus_cmd_payload_fragment_data[19 : 0];
+ end
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_bus_rsp_payload_last <= busCtrl_rsp_payload_last;
+ _zz_io_bus_rsp_payload_fragment_opcode <= busCtrl_rsp_payload_fragment_opcode;
+ _zz_io_bus_rsp_payload_fragment_data <= busCtrl_rsp_payload_fragment_data;
+ _zz_io_bus_rsp_payload_fragment_context <= busCtrl_rsp_payload_fragment_context;
+ end
+ uartCtrl_io_readBreak_regNext <= uartCtrl_io_readBreak;
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbDecoder_1_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [23:0] io_input_cmd_payload_fragment_address,
+ input wire [1:0] io_input_cmd_payload_fragment_length,
+ input wire [31:0] io_input_cmd_payload_fragment_data,
+ input wire [3:0] io_input_cmd_payload_fragment_mask,
+ input wire [2:0] io_input_cmd_payload_fragment_context,
+ output reg io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output reg io_input_rsp_payload_last,
+ output reg [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [31:0] io_input_rsp_payload_fragment_data,
+ output reg [2:0] io_input_rsp_payload_fragment_context,
+ output reg io_outputs_0_cmd_valid,
+ input wire io_outputs_0_cmd_ready,
+ output wire io_outputs_0_cmd_payload_last,
+ output wire [0:0] io_outputs_0_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_0_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_0_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_0_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_0_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_0_cmd_payload_fragment_context,
+ input wire io_outputs_0_rsp_valid,
+ output wire io_outputs_0_rsp_ready,
+ input wire io_outputs_0_rsp_payload_last,
+ input wire [0:0] io_outputs_0_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_0_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_0_rsp_payload_fragment_context,
+ output reg io_outputs_1_cmd_valid,
+ input wire io_outputs_1_cmd_ready,
+ output wire io_outputs_1_cmd_payload_last,
+ output wire [0:0] io_outputs_1_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_1_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_1_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_1_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_1_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_1_cmd_payload_fragment_context,
+ input wire io_outputs_1_rsp_valid,
+ output wire io_outputs_1_rsp_ready,
+ input wire io_outputs_1_rsp_payload_last,
+ input wire [0:0] io_outputs_1_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_1_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_1_rsp_payload_fragment_context,
+ output reg io_outputs_2_cmd_valid,
+ input wire io_outputs_2_cmd_ready,
+ output wire io_outputs_2_cmd_payload_last,
+ output wire [0:0] io_outputs_2_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_2_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_2_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_2_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_2_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_2_cmd_payload_fragment_context,
+ input wire io_outputs_2_rsp_valid,
+ output wire io_outputs_2_rsp_ready,
+ input wire io_outputs_2_rsp_payload_last,
+ input wire [0:0] io_outputs_2_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_2_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_2_rsp_payload_fragment_context,
+ output reg io_outputs_3_cmd_valid,
+ input wire io_outputs_3_cmd_ready,
+ output wire io_outputs_3_cmd_payload_last,
+ output wire [0:0] io_outputs_3_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_3_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_3_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_3_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_3_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_3_cmd_payload_fragment_context,
+ input wire io_outputs_3_rsp_valid,
+ output wire io_outputs_3_rsp_ready,
+ input wire io_outputs_3_rsp_payload_last,
+ input wire [0:0] io_outputs_3_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_3_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_3_rsp_payload_fragment_context,
+ output reg io_outputs_4_cmd_valid,
+ input wire io_outputs_4_cmd_ready,
+ output wire io_outputs_4_cmd_payload_last,
+ output wire [0:0] io_outputs_4_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_4_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_4_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_4_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_4_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_4_cmd_payload_fragment_context,
+ input wire io_outputs_4_rsp_valid,
+ output wire io_outputs_4_rsp_ready,
+ input wire io_outputs_4_rsp_payload_last,
+ input wire [0:0] io_outputs_4_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_4_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_4_rsp_payload_fragment_context,
+ output reg io_outputs_5_cmd_valid,
+ input wire io_outputs_5_cmd_ready,
+ output wire io_outputs_5_cmd_payload_last,
+ output wire [0:0] io_outputs_5_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_5_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_5_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_5_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_5_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_5_cmd_payload_fragment_context,
+ input wire io_outputs_5_rsp_valid,
+ output wire io_outputs_5_rsp_ready,
+ input wire io_outputs_5_rsp_payload_last,
+ input wire [0:0] io_outputs_5_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_5_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_5_rsp_payload_fragment_context,
+ input wire clk,
+ input wire reset
+);
+
+ wire [6:0] _zz_logic_rspPendingCounter;
+ wire [6:0] _zz_logic_rspPendingCounter_1;
+ wire [0:0] _zz_logic_rspPendingCounter_2;
+ wire [6:0] _zz_logic_rspPendingCounter_3;
+ wire [0:0] _zz_logic_rspPendingCounter_4;
+ reg _zz_io_input_rsp_payload_last_4;
+ reg [0:0] _zz_io_input_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_input_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_input_rsp_payload_fragment_context;
+ wire logic_input_valid;
+ reg logic_input_ready;
+ wire logic_input_payload_last;
+ wire [0:0] logic_input_payload_fragment_opcode;
+ wire [23:0] logic_input_payload_fragment_address;
+ wire [1:0] logic_input_payload_fragment_length;
+ wire [31:0] logic_input_payload_fragment_data;
+ wire [3:0] logic_input_payload_fragment_mask;
+ wire [2:0] logic_input_payload_fragment_context;
+ wire logic_hitsS0_0;
+ wire logic_hitsS0_1;
+ wire logic_hitsS0_2;
+ wire logic_hitsS0_3;
+ wire logic_hitsS0_4;
+ wire logic_hitsS0_5;
+ wire logic_noHitS0;
+ wire _zz_io_outputs_0_cmd_payload_last;
+ wire _zz_io_outputs_1_cmd_payload_last;
+ wire _zz_io_outputs_2_cmd_payload_last;
+ wire _zz_io_outputs_3_cmd_payload_last;
+ wire _zz_io_outputs_4_cmd_payload_last;
+ wire _zz_io_outputs_5_cmd_payload_last;
+ reg [6:0] logic_rspPendingCounter;
+ wire logic_input_fire;
+ wire io_input_rsp_fire;
+ wire logic_cmdWait;
+ wire when_BmbDecoder_l56;
+ reg logic_rspHits_0;
+ reg logic_rspHits_1;
+ reg logic_rspHits_2;
+ reg logic_rspHits_3;
+ reg logic_rspHits_4;
+ reg logic_rspHits_5;
+ wire logic_rspPending;
+ wire logic_rspNoHitValid;
+ reg logic_rspNoHit_doIt;
+ wire when_BmbDecoder_l60;
+ wire when_BmbDecoder_l60_1;
+ reg logic_rspNoHit_singleBeatRsp;
+ reg [2:0] logic_rspNoHit_context;
+ wire _zz_io_input_rsp_payload_last;
+ wire _zz_io_input_rsp_payload_last_1;
+ wire _zz_io_input_rsp_payload_last_2;
+ wire [2:0] _zz_io_input_rsp_payload_last_3;
+
+ assign _zz_logic_rspPendingCounter = (logic_rspPendingCounter + _zz_logic_rspPendingCounter_1);
+ assign _zz_logic_rspPendingCounter_2 = (logic_input_fire && logic_input_payload_last);
+ assign _zz_logic_rspPendingCounter_1 = {6'd0, _zz_logic_rspPendingCounter_2};
+ assign _zz_logic_rspPendingCounter_4 = (io_input_rsp_fire && io_input_rsp_payload_last);
+ assign _zz_logic_rspPendingCounter_3 = {6'd0, _zz_logic_rspPendingCounter_4};
+ always @(*) begin
+ case(_zz_io_input_rsp_payload_last_3)
+ 3'b000 : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_0_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_0_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_0_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_0_rsp_payload_fragment_context;
+ end
+ 3'b001 : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_1_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_1_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_1_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_1_rsp_payload_fragment_context;
+ end
+ 3'b010 : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_2_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_2_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_2_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_2_rsp_payload_fragment_context;
+ end
+ 3'b011 : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_3_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_3_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_3_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_3_rsp_payload_fragment_context;
+ end
+ 3'b100 : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_4_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_4_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_4_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_4_rsp_payload_fragment_context;
+ end
+ default : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_5_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_5_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_5_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_5_rsp_payload_fragment_context;
+ end
+ endcase
+ end
+
+ assign logic_input_valid = io_input_cmd_valid;
+ assign io_input_cmd_ready = logic_input_ready;
+ assign logic_input_payload_last = io_input_cmd_payload_last;
+ assign logic_input_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign logic_input_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign logic_input_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign logic_input_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign logic_input_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign logic_input_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign logic_noHitS0 = (! (|{logic_hitsS0_5,{logic_hitsS0_4,{logic_hitsS0_3,{logic_hitsS0_2,{logic_hitsS0_1,logic_hitsS0_0}}}}}));
+ assign logic_hitsS0_0 = ((io_input_cmd_payload_fragment_address & (~ 24'h00003f)) == 24'h010000);
+ always @(*) begin
+ io_outputs_0_cmd_valid = (logic_input_valid && logic_hitsS0_0);
+ if(logic_cmdWait) begin
+ io_outputs_0_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_0_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_0_cmd_payload_last = _zz_io_outputs_0_cmd_payload_last;
+ assign io_outputs_0_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_0_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_0_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_0_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_0_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_0_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ assign logic_hitsS0_1 = ((io_input_cmd_payload_fragment_address & (~ 24'h000fff)) == 24'h030000);
+ always @(*) begin
+ io_outputs_1_cmd_valid = (logic_input_valid && logic_hitsS0_1);
+ if(logic_cmdWait) begin
+ io_outputs_1_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_1_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_1_cmd_payload_last = _zz_io_outputs_1_cmd_payload_last;
+ assign io_outputs_1_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_1_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_1_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_1_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_1_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_1_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ assign logic_hitsS0_2 = ((io_input_cmd_payload_fragment_address & (~ 24'h0000ff)) == 24'h020000);
+ always @(*) begin
+ io_outputs_2_cmd_valid = (logic_input_valid && logic_hitsS0_2);
+ if(logic_cmdWait) begin
+ io_outputs_2_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_2_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_2_cmd_payload_last = _zz_io_outputs_2_cmd_payload_last;
+ assign io_outputs_2_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_2_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_2_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_2_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_2_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_2_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ assign logic_hitsS0_3 = ((io_input_cmd_payload_fragment_address & (~ 24'h0000ff)) == 24'h040000);
+ always @(*) begin
+ io_outputs_3_cmd_valid = (logic_input_valid && logic_hitsS0_3);
+ if(logic_cmdWait) begin
+ io_outputs_3_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_3_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_3_cmd_payload_last = _zz_io_outputs_3_cmd_payload_last;
+ assign io_outputs_3_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_3_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_3_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_3_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_3_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_3_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ assign logic_hitsS0_4 = ((io_input_cmd_payload_fragment_address & (~ 24'h0000ff)) == 24'h050000);
+ always @(*) begin
+ io_outputs_4_cmd_valid = (logic_input_valid && logic_hitsS0_4);
+ if(logic_cmdWait) begin
+ io_outputs_4_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_4_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_4_cmd_payload_last = _zz_io_outputs_4_cmd_payload_last;
+ assign io_outputs_4_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_4_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_4_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_4_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_4_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_4_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ assign logic_hitsS0_5 = ((io_input_cmd_payload_fragment_address & (~ 24'h00ffff)) == 24'h100000);
+ always @(*) begin
+ io_outputs_5_cmd_valid = (logic_input_valid && logic_hitsS0_5);
+ if(logic_cmdWait) begin
+ io_outputs_5_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_5_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_5_cmd_payload_last = _zz_io_outputs_5_cmd_payload_last;
+ assign io_outputs_5_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_5_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_5_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_5_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_5_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_5_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ always @(*) begin
+ logic_input_ready = ((|{(logic_hitsS0_5 && io_outputs_5_cmd_ready),{(logic_hitsS0_4 && io_outputs_4_cmd_ready),{(logic_hitsS0_3 && io_outputs_3_cmd_ready),{(logic_hitsS0_2 && io_outputs_2_cmd_ready),{(logic_hitsS0_1 && io_outputs_1_cmd_ready),(logic_hitsS0_0 && io_outputs_0_cmd_ready)}}}}}) || logic_noHitS0);
+ if(logic_cmdWait) begin
+ logic_input_ready = 1'b0;
+ end
+ end
+
+ assign logic_input_fire = (logic_input_valid && logic_input_ready);
+ assign io_input_rsp_fire = (io_input_rsp_valid && io_input_rsp_ready);
+ assign when_BmbDecoder_l56 = (logic_input_valid && (! logic_cmdWait));
+ assign logic_rspPending = (logic_rspPendingCounter != 7'h0);
+ assign logic_rspNoHitValid = (! (|{logic_rspHits_5,{logic_rspHits_4,{logic_rspHits_3,{logic_rspHits_2,{logic_rspHits_1,logic_rspHits_0}}}}}));
+ assign when_BmbDecoder_l60 = (io_input_rsp_fire && io_input_rsp_payload_last);
+ assign when_BmbDecoder_l60_1 = ((logic_input_fire && logic_noHitS0) && logic_input_payload_last);
+ always @(*) begin
+ io_input_rsp_valid = ((|{io_outputs_5_rsp_valid,{io_outputs_4_rsp_valid,{io_outputs_3_rsp_valid,{io_outputs_2_rsp_valid,{io_outputs_1_rsp_valid,io_outputs_0_rsp_valid}}}}}) || (logic_rspPending && logic_rspNoHitValid));
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_valid = 1'b1;
+ end
+ end
+
+ assign _zz_io_input_rsp_payload_last = ((logic_rspHits_1 || logic_rspHits_3) || logic_rspHits_5);
+ assign _zz_io_input_rsp_payload_last_1 = (logic_rspHits_2 || logic_rspHits_3);
+ assign _zz_io_input_rsp_payload_last_2 = (logic_rspHits_4 || logic_rspHits_5);
+ assign _zz_io_input_rsp_payload_last_3 = {_zz_io_input_rsp_payload_last_2,{_zz_io_input_rsp_payload_last_1,_zz_io_input_rsp_payload_last}};
+ always @(*) begin
+ io_input_rsp_payload_last = _zz_io_input_rsp_payload_last_4;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_last = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ io_input_rsp_payload_fragment_opcode = _zz_io_input_rsp_payload_fragment_opcode;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_fragment_opcode = 1'b1;
+ end
+ end
+
+ assign io_input_rsp_payload_fragment_data = _zz_io_input_rsp_payload_fragment_data;
+ always @(*) begin
+ io_input_rsp_payload_fragment_context = _zz_io_input_rsp_payload_fragment_context;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_fragment_context = logic_rspNoHit_context;
+ end
+ end
+
+ assign io_outputs_0_rsp_ready = io_input_rsp_ready;
+ assign io_outputs_1_rsp_ready = io_input_rsp_ready;
+ assign io_outputs_2_rsp_ready = io_input_rsp_ready;
+ assign io_outputs_3_rsp_ready = io_input_rsp_ready;
+ assign io_outputs_4_rsp_ready = io_input_rsp_ready;
+ assign io_outputs_5_rsp_ready = io_input_rsp_ready;
+ assign logic_cmdWait = ((logic_rspPending && (((((((logic_hitsS0_0 != logic_rspHits_0) || (logic_hitsS0_1 != logic_rspHits_1)) || (logic_hitsS0_2 != logic_rspHits_2)) || (logic_hitsS0_3 != logic_rspHits_3)) || (logic_hitsS0_4 != logic_rspHits_4)) || (logic_hitsS0_5 != logic_rspHits_5)) || logic_rspNoHitValid)) || (logic_rspPendingCounter == 7'h40));
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_rspPendingCounter <= 7'h0;
+ logic_rspNoHit_doIt <= 1'b0;
+ end else begin
+ logic_rspPendingCounter <= (_zz_logic_rspPendingCounter - _zz_logic_rspPendingCounter_3);
+ if(when_BmbDecoder_l60) begin
+ logic_rspNoHit_doIt <= 1'b0;
+ end
+ if(when_BmbDecoder_l60_1) begin
+ logic_rspNoHit_doIt <= 1'b1;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(when_BmbDecoder_l56) begin
+ logic_rspHits_0 <= logic_hitsS0_0;
+ logic_rspHits_1 <= logic_hitsS0_1;
+ logic_rspHits_2 <= logic_hitsS0_2;
+ logic_rspHits_3 <= logic_hitsS0_3;
+ logic_rspHits_4 <= logic_hitsS0_4;
+ logic_rspHits_5 <= logic_hitsS0_5;
+ end
+ if(logic_input_fire) begin
+ logic_rspNoHit_singleBeatRsp <= (logic_input_payload_fragment_opcode == 1'b1);
+ end
+ if(logic_input_fire) begin
+ logic_rspNoHit_context <= logic_input_payload_fragment_context;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbUnburstify_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_input_cmd_valid,
+ output reg io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_source,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [23:0] io_input_cmd_payload_fragment_address,
+ input wire [9:0] io_input_cmd_payload_fragment_length,
+ input wire [31:0] io_input_cmd_payload_fragment_data,
+ input wire [3:0] io_input_cmd_payload_fragment_mask,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_source,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [31:0] io_input_rsp_payload_fragment_data,
+ output reg io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output reg [0:0] io_output_cmd_payload_fragment_opcode,
+ output reg [23:0] io_output_cmd_payload_fragment_address,
+ output reg [1:0] io_output_cmd_payload_fragment_length,
+ output wire [31:0] io_output_cmd_payload_fragment_data,
+ output wire [3:0] io_output_cmd_payload_fragment_mask,
+ output wire [2:0] io_output_cmd_payload_fragment_context,
+ input wire io_output_rsp_valid,
+ output reg io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [31:0] io_output_rsp_payload_fragment_data,
+ input wire [2:0] io_output_rsp_payload_fragment_context,
+ input wire clk,
+ input wire reset
+);
+
+ wire [7:0] _zz_buffer_last;
+ wire [0:0] _zz_buffer_last_1;
+ wire [11:0] _zz_buffer_addressIncr;
+ wire doResult;
+ reg buffer_valid;
+ reg [0:0] buffer_opcode;
+ reg [0:0] buffer_source;
+ reg [23:0] buffer_address;
+ reg [7:0] buffer_beat;
+ wire buffer_last;
+ wire [23:0] buffer_addressIncr;
+ wire buffer_isWrite;
+ wire io_output_cmd_fire;
+ wire [7:0] cmdTransferBeatCount;
+ wire requireBuffer;
+ reg cmdContext_drop;
+ reg cmdContext_last;
+ reg [0:0] cmdContext_source;
+ wire rspContext_drop;
+ wire rspContext_last;
+ wire [0:0] rspContext_source;
+ wire [2:0] _zz_rspContext_drop;
+ wire when_Stream_l445;
+ reg io_output_rsp_thrown_valid;
+ wire io_output_rsp_thrown_ready;
+ wire io_output_rsp_thrown_payload_last;
+ wire [0:0] io_output_rsp_thrown_payload_fragment_opcode;
+ wire [31:0] io_output_rsp_thrown_payload_fragment_data;
+ wire [2:0] io_output_rsp_thrown_payload_fragment_context;
+
+ assign _zz_buffer_last_1 = 1'b1;
+ assign _zz_buffer_last = {7'd0, _zz_buffer_last_1};
+ assign _zz_buffer_addressIncr = (buffer_address[11 : 0] + 12'h004);
+ assign buffer_last = (buffer_beat == _zz_buffer_last);
+ assign buffer_addressIncr = {buffer_address[23 : 12],(_zz_buffer_addressIncr & (~ 12'h003))};
+ assign buffer_isWrite = (buffer_opcode == 1'b1);
+ assign io_output_cmd_fire = (io_output_cmd_valid && io_output_cmd_ready);
+ assign cmdTransferBeatCount = io_input_cmd_payload_fragment_length[9 : 2];
+ assign requireBuffer = (cmdTransferBeatCount != 8'h0);
+ assign io_output_cmd_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign io_output_cmd_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign io_output_cmd_payload_last = 1'b1;
+ assign io_output_cmd_payload_fragment_context = {cmdContext_source,{cmdContext_last,cmdContext_drop}};
+ always @(*) begin
+ if(buffer_valid) begin
+ io_output_cmd_payload_fragment_address = buffer_addressIncr;
+ end else begin
+ io_output_cmd_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ if(requireBuffer) begin
+ io_output_cmd_payload_fragment_address[1 : 0] = 2'b00;
+ end
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ io_output_cmd_payload_fragment_opcode = buffer_opcode;
+ end else begin
+ io_output_cmd_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ io_output_cmd_payload_fragment_length = 2'b11;
+ end else begin
+ if(requireBuffer) begin
+ io_output_cmd_payload_fragment_length = 2'b11;
+ end else begin
+ io_output_cmd_payload_fragment_length = io_input_cmd_payload_fragment_length[1:0];
+ end
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ cmdContext_source = buffer_source;
+ end else begin
+ cmdContext_source = io_input_cmd_payload_fragment_source;
+ end
+ end
+
+ always @(*) begin
+ io_input_cmd_ready = 1'b0;
+ if(buffer_valid) begin
+ io_input_cmd_ready = (buffer_isWrite && io_output_cmd_ready);
+ end else begin
+ io_input_cmd_ready = io_output_cmd_ready;
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ io_output_cmd_valid = (! (buffer_isWrite && (! io_input_cmd_valid)));
+ end else begin
+ io_output_cmd_valid = io_input_cmd_valid;
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ cmdContext_last = buffer_last;
+ end else begin
+ cmdContext_last = (! requireBuffer);
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ cmdContext_drop = buffer_isWrite;
+ end else begin
+ cmdContext_drop = (io_input_cmd_payload_fragment_opcode == 1'b1);
+ end
+ end
+
+ assign _zz_rspContext_drop = io_output_rsp_payload_fragment_context;
+ assign rspContext_drop = _zz_rspContext_drop[0];
+ assign rspContext_last = _zz_rspContext_drop[1];
+ assign rspContext_source = _zz_rspContext_drop[2 : 2];
+ assign when_Stream_l445 = (! (rspContext_last || (! rspContext_drop)));
+ always @(*) begin
+ io_output_rsp_thrown_valid = io_output_rsp_valid;
+ if(when_Stream_l445) begin
+ io_output_rsp_thrown_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ io_output_rsp_ready = io_output_rsp_thrown_ready;
+ if(when_Stream_l445) begin
+ io_output_rsp_ready = 1'b1;
+ end
+ end
+
+ assign io_output_rsp_thrown_payload_last = io_output_rsp_payload_last;
+ assign io_output_rsp_thrown_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_output_rsp_thrown_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ assign io_output_rsp_thrown_payload_fragment_context = io_output_rsp_payload_fragment_context;
+ assign io_input_rsp_valid = io_output_rsp_thrown_valid;
+ assign io_output_rsp_thrown_ready = io_input_rsp_ready;
+ assign io_input_rsp_payload_last = rspContext_last;
+ assign io_input_rsp_payload_fragment_source = rspContext_source;
+ assign io_input_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ always @(posedge clk) begin
+ if(reset) begin
+ buffer_valid <= 1'b0;
+ end else begin
+ if(io_output_cmd_fire) begin
+ if(buffer_last) begin
+ buffer_valid <= 1'b0;
+ end
+ end
+ if(!buffer_valid) begin
+ buffer_valid <= (requireBuffer && io_output_cmd_fire);
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_output_cmd_fire) begin
+ buffer_beat <= (buffer_beat - 8'h01);
+ buffer_address[11 : 0] <= buffer_addressIncr[11 : 0];
+ end
+ if(!buffer_valid) begin
+ buffer_opcode <= io_input_cmd_payload_fragment_opcode;
+ buffer_source <= io_input_cmd_payload_fragment_source;
+ buffer_address <= io_input_cmd_payload_fragment_address;
+ buffer_beat <= cmdTransferBeatCount;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbDecoder_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_source,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [23:0] io_input_cmd_payload_fragment_address,
+ input wire [9:0] io_input_cmd_payload_fragment_length,
+ input wire [31:0] io_input_cmd_payload_fragment_data,
+ input wire [3:0] io_input_cmd_payload_fragment_mask,
+ output reg io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output reg io_input_rsp_payload_last,
+ output reg [0:0] io_input_rsp_payload_fragment_source,
+ output reg [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [31:0] io_input_rsp_payload_fragment_data,
+ output reg io_outputs_0_cmd_valid,
+ input wire io_outputs_0_cmd_ready,
+ output wire io_outputs_0_cmd_payload_last,
+ output wire [0:0] io_outputs_0_cmd_payload_fragment_source,
+ output wire [0:0] io_outputs_0_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_0_cmd_payload_fragment_address,
+ output wire [9:0] io_outputs_0_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_0_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_0_cmd_payload_fragment_mask,
+ input wire io_outputs_0_rsp_valid,
+ output wire io_outputs_0_rsp_ready,
+ input wire io_outputs_0_rsp_payload_last,
+ input wire [0:0] io_outputs_0_rsp_payload_fragment_source,
+ input wire [0:0] io_outputs_0_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_0_rsp_payload_fragment_data,
+ input wire clk,
+ input wire reset
+);
+
+ wire [6:0] _zz_logic_rspPendingCounter;
+ wire [6:0] _zz_logic_rspPendingCounter_1;
+ wire [0:0] _zz_logic_rspPendingCounter_2;
+ wire [6:0] _zz_logic_rspPendingCounter_3;
+ wire [0:0] _zz_logic_rspPendingCounter_4;
+ wire logic_input_valid;
+ reg logic_input_ready;
+ wire logic_input_payload_last;
+ wire [0:0] logic_input_payload_fragment_source;
+ wire [0:0] logic_input_payload_fragment_opcode;
+ wire [23:0] logic_input_payload_fragment_address;
+ wire [9:0] logic_input_payload_fragment_length;
+ wire [31:0] logic_input_payload_fragment_data;
+ wire [3:0] logic_input_payload_fragment_mask;
+ wire logic_hitsS0_0;
+ wire logic_noHitS0;
+ wire _zz_io_outputs_0_cmd_payload_last;
+ reg [6:0] logic_rspPendingCounter;
+ wire logic_input_fire;
+ wire io_input_rsp_fire;
+ wire logic_cmdWait;
+ wire when_BmbDecoder_l56;
+ reg logic_rspHits_0;
+ wire logic_rspPending;
+ wire logic_rspNoHitValid;
+ reg logic_rspNoHit_doIt;
+ wire when_BmbDecoder_l60;
+ wire when_BmbDecoder_l60_1;
+ reg logic_rspNoHit_singleBeatRsp;
+ reg [0:0] logic_rspNoHit_source;
+ reg [7:0] logic_rspNoHit_counter;
+ wire when_BmbDecoder_l81;
+
+ assign _zz_logic_rspPendingCounter = (logic_rspPendingCounter + _zz_logic_rspPendingCounter_1);
+ assign _zz_logic_rspPendingCounter_2 = (logic_input_fire && logic_input_payload_last);
+ assign _zz_logic_rspPendingCounter_1 = {6'd0, _zz_logic_rspPendingCounter_2};
+ assign _zz_logic_rspPendingCounter_4 = (io_input_rsp_fire && io_input_rsp_payload_last);
+ assign _zz_logic_rspPendingCounter_3 = {6'd0, _zz_logic_rspPendingCounter_4};
+ assign logic_input_valid = io_input_cmd_valid;
+ assign io_input_cmd_ready = logic_input_ready;
+ assign logic_input_payload_last = io_input_cmd_payload_last;
+ assign logic_input_payload_fragment_source = io_input_cmd_payload_fragment_source;
+ assign logic_input_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign logic_input_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign logic_input_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign logic_input_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign logic_input_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign logic_noHitS0 = (! (|logic_hitsS0_0));
+ assign logic_hitsS0_0 = ((io_input_cmd_payload_fragment_address & (~ 24'hffffff)) == 24'h0);
+ always @(*) begin
+ io_outputs_0_cmd_valid = (logic_input_valid && logic_hitsS0_0);
+ if(logic_cmdWait) begin
+ io_outputs_0_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_0_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_0_cmd_payload_last = _zz_io_outputs_0_cmd_payload_last;
+ assign io_outputs_0_cmd_payload_fragment_source = logic_input_payload_fragment_source;
+ assign io_outputs_0_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_0_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_0_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_0_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_0_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ always @(*) begin
+ logic_input_ready = ((|(logic_hitsS0_0 && io_outputs_0_cmd_ready)) || logic_noHitS0);
+ if(logic_cmdWait) begin
+ logic_input_ready = 1'b0;
+ end
+ end
+
+ assign logic_input_fire = (logic_input_valid && logic_input_ready);
+ assign io_input_rsp_fire = (io_input_rsp_valid && io_input_rsp_ready);
+ assign when_BmbDecoder_l56 = (logic_input_valid && (! logic_cmdWait));
+ assign logic_rspPending = (logic_rspPendingCounter != 7'h0);
+ assign logic_rspNoHitValid = (! (|logic_rspHits_0));
+ assign when_BmbDecoder_l60 = (io_input_rsp_fire && io_input_rsp_payload_last);
+ assign when_BmbDecoder_l60_1 = ((logic_input_fire && logic_noHitS0) && logic_input_payload_last);
+ always @(*) begin
+ io_input_rsp_valid = ((|io_outputs_0_rsp_valid) || (logic_rspPending && logic_rspNoHitValid));
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_valid = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ io_input_rsp_payload_last = io_outputs_0_rsp_payload_last;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_last = 1'b0;
+ if(when_BmbDecoder_l81) begin
+ io_input_rsp_payload_last = 1'b1;
+ end
+ if(logic_rspNoHit_singleBeatRsp) begin
+ io_input_rsp_payload_last = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ io_input_rsp_payload_fragment_source = io_outputs_0_rsp_payload_fragment_source;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_fragment_source = logic_rspNoHit_source;
+ end
+ end
+
+ always @(*) begin
+ io_input_rsp_payload_fragment_opcode = io_outputs_0_rsp_payload_fragment_opcode;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_fragment_opcode = 1'b1;
+ end
+ end
+
+ assign io_input_rsp_payload_fragment_data = io_outputs_0_rsp_payload_fragment_data;
+ assign when_BmbDecoder_l81 = (logic_rspNoHit_counter == 8'h0);
+ assign io_outputs_0_rsp_ready = io_input_rsp_ready;
+ assign logic_cmdWait = ((logic_rspPending && ((logic_hitsS0_0 != logic_rspHits_0) || logic_rspNoHitValid)) || (logic_rspPendingCounter == 7'h40));
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_rspPendingCounter <= 7'h0;
+ logic_rspNoHit_doIt <= 1'b0;
+ end else begin
+ logic_rspPendingCounter <= (_zz_logic_rspPendingCounter - _zz_logic_rspPendingCounter_3);
+ if(when_BmbDecoder_l60) begin
+ logic_rspNoHit_doIt <= 1'b0;
+ end
+ if(when_BmbDecoder_l60_1) begin
+ logic_rspNoHit_doIt <= 1'b1;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(when_BmbDecoder_l56) begin
+ logic_rspHits_0 <= logic_hitsS0_0;
+ end
+ if(logic_input_fire) begin
+ logic_rspNoHit_singleBeatRsp <= (logic_input_payload_fragment_opcode == 1'b1);
+ end
+ if(logic_input_fire) begin
+ logic_rspNoHit_source <= logic_input_payload_fragment_source;
+ end
+ if(logic_input_fire) begin
+ logic_rspNoHit_counter <= logic_input_payload_fragment_length[9 : 2];
+ end
+ if(logic_rspNoHit_doIt) begin
+ if(io_input_rsp_fire) begin
+ logic_rspNoHit_counter <= (logic_rspNoHit_counter - 8'h01);
+ end
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralAxi4SharedToBmb_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_axi_arw_valid,
+ output wire io_axi_arw_ready,
+ input wire [23:0] io_axi_arw_payload_addr,
+ input wire [7:0] io_axi_arw_payload_len,
+ input wire [2:0] io_axi_arw_payload_size,
+ input wire [3:0] io_axi_arw_payload_cache,
+ input wire [2:0] io_axi_arw_payload_prot,
+ input wire io_axi_arw_payload_write,
+ input wire io_axi_w_valid,
+ output wire io_axi_w_ready,
+ input wire [31:0] io_axi_w_payload_data,
+ input wire [3:0] io_axi_w_payload_strb,
+ input wire io_axi_w_payload_last,
+ output wire io_axi_b_valid,
+ input wire io_axi_b_ready,
+ output reg [1:0] io_axi_b_payload_resp,
+ output wire io_axi_r_valid,
+ input wire io_axi_r_ready,
+ output wire [31:0] io_axi_r_payload_data,
+ output reg [1:0] io_axi_r_payload_resp,
+ output wire io_axi_r_payload_last,
+ output wire io_bmb_cmd_valid,
+ input wire io_bmb_cmd_ready,
+ output wire io_bmb_cmd_payload_last,
+ output wire [0:0] io_bmb_cmd_payload_fragment_source,
+ output wire [0:0] io_bmb_cmd_payload_fragment_opcode,
+ output wire [23:0] io_bmb_cmd_payload_fragment_address,
+ output wire [9:0] io_bmb_cmd_payload_fragment_length,
+ output wire [31:0] io_bmb_cmd_payload_fragment_data,
+ output wire [3:0] io_bmb_cmd_payload_fragment_mask,
+ input wire io_bmb_rsp_valid,
+ output wire io_bmb_rsp_ready,
+ input wire io_bmb_rsp_payload_last,
+ input wire [0:0] io_bmb_rsp_payload_fragment_source,
+ input wire [0:0] io_bmb_rsp_payload_fragment_opcode,
+ input wire [31:0] io_bmb_rsp_payload_fragment_data
+);
+
+ wire [9:0] _zz_io_bmb_cmd_payload_fragment_length;
+ wire hazard;
+ wire io_bmb_cmd_fire;
+ wire rspIsWrite;
+ wire when_Axi4SharedToBmb_l42;
+ wire when_Axi4SharedToBmb_l49;
+
+ assign _zz_io_bmb_cmd_payload_fragment_length = ({2'd0,io_axi_arw_payload_len} <<< 2'd2);
+ assign hazard = (io_axi_arw_payload_write && (! io_axi_w_valid));
+ assign io_bmb_cmd_valid = (io_axi_arw_valid && (! hazard));
+ assign io_bmb_cmd_payload_fragment_source = io_axi_arw_payload_write;
+ assign io_bmb_cmd_payload_fragment_opcode = io_axi_arw_payload_write;
+ assign io_bmb_cmd_payload_fragment_address = io_axi_arw_payload_addr;
+ assign io_bmb_cmd_payload_fragment_length = (_zz_io_bmb_cmd_payload_fragment_length | 10'h003);
+ assign io_bmb_cmd_payload_fragment_data = io_axi_w_payload_data;
+ assign io_bmb_cmd_payload_fragment_mask = io_axi_w_payload_strb;
+ assign io_bmb_cmd_payload_last = ((! io_axi_arw_payload_write) || io_axi_w_payload_last);
+ assign io_bmb_cmd_fire = (io_bmb_cmd_valid && io_bmb_cmd_ready);
+ assign io_axi_arw_ready = (io_bmb_cmd_fire && io_bmb_cmd_payload_last);
+ assign io_axi_w_ready = (io_bmb_cmd_fire && (io_bmb_cmd_payload_fragment_opcode == 1'b1));
+ assign rspIsWrite = io_bmb_rsp_payload_fragment_source[0];
+ assign io_axi_b_valid = (io_bmb_rsp_valid && rspIsWrite);
+ always @(*) begin
+ io_axi_b_payload_resp = 2'b00;
+ if(when_Axi4SharedToBmb_l42) begin
+ io_axi_b_payload_resp = 2'b11;
+ end
+ end
+
+ assign when_Axi4SharedToBmb_l42 = (io_bmb_rsp_payload_fragment_opcode == 1'b1);
+ assign io_axi_r_valid = (io_bmb_rsp_valid && (! rspIsWrite));
+ assign io_axi_r_payload_data = io_bmb_rsp_payload_fragment_data;
+ assign io_axi_r_payload_last = io_bmb_rsp_payload_last;
+ always @(*) begin
+ io_axi_r_payload_resp = 2'b00;
+ if(when_Axi4SharedToBmb_l49) begin
+ io_axi_r_payload_resp = 2'b11;
+ end
+ end
+
+ assign when_Axi4SharedToBmb_l49 = (io_bmb_rsp_payload_fragment_opcode == 1'b1);
+ assign io_bmb_rsp_ready = (rspIsWrite ? io_axi_b_ready : io_axi_r_ready);
+
+endmodule
+
+module Axi4PeripheralStreamArbiter_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_inputs_0_valid,
+ output wire io_inputs_0_ready,
+ input wire [23:0] io_inputs_0_payload_addr,
+ input wire [7:0] io_inputs_0_payload_len,
+ input wire [2:0] io_inputs_0_payload_size,
+ input wire [3:0] io_inputs_0_payload_cache,
+ input wire [2:0] io_inputs_0_payload_prot,
+ input wire io_inputs_1_valid,
+ output wire io_inputs_1_ready,
+ input wire [23:0] io_inputs_1_payload_addr,
+ input wire [7:0] io_inputs_1_payload_len,
+ input wire [2:0] io_inputs_1_payload_size,
+ input wire [3:0] io_inputs_1_payload_cache,
+ input wire [2:0] io_inputs_1_payload_prot,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire [23:0] io_output_payload_addr,
+ output wire [7:0] io_output_payload_len,
+ output wire [2:0] io_output_payload_size,
+ output wire [3:0] io_output_payload_cache,
+ output wire [2:0] io_output_payload_prot,
+ output wire [0:0] io_chosen,
+ output wire [1:0] io_chosenOH,
+ input wire clk,
+ input wire reset
+);
+
+ wire [3:0] _zz__zz_maskProposal_0_2;
+ wire [3:0] _zz__zz_maskProposal_0_2_1;
+ wire [1:0] _zz__zz_maskProposal_0_2_2;
+ reg locked;
+ wire maskProposal_0;
+ wire maskProposal_1;
+ reg maskLocked_0;
+ reg maskLocked_1;
+ wire maskRouted_0;
+ wire maskRouted_1;
+ wire [1:0] _zz_maskProposal_0;
+ wire [3:0] _zz_maskProposal_0_1;
+ wire [3:0] _zz_maskProposal_0_2;
+ wire [1:0] _zz_maskProposal_0_3;
+ wire io_output_fire;
+ wire _zz_io_chosen;
+
+ assign _zz__zz_maskProposal_0_2 = (_zz_maskProposal_0_1 - _zz__zz_maskProposal_0_2_1);
+ assign _zz__zz_maskProposal_0_2_2 = {maskLocked_0,maskLocked_1};
+ assign _zz__zz_maskProposal_0_2_1 = {2'd0, _zz__zz_maskProposal_0_2_2};
+ assign maskRouted_0 = (locked ? maskLocked_0 : maskProposal_0);
+ assign maskRouted_1 = (locked ? maskLocked_1 : maskProposal_1);
+ assign _zz_maskProposal_0 = {io_inputs_1_valid,io_inputs_0_valid};
+ assign _zz_maskProposal_0_1 = {_zz_maskProposal_0,_zz_maskProposal_0};
+ assign _zz_maskProposal_0_2 = (_zz_maskProposal_0_1 & (~ _zz__zz_maskProposal_0_2));
+ assign _zz_maskProposal_0_3 = (_zz_maskProposal_0_2[3 : 2] | _zz_maskProposal_0_2[1 : 0]);
+ assign maskProposal_0 = _zz_maskProposal_0_3[0];
+ assign maskProposal_1 = _zz_maskProposal_0_3[1];
+ assign io_output_fire = (io_output_valid && io_output_ready);
+ assign io_output_valid = ((io_inputs_0_valid && maskRouted_0) || (io_inputs_1_valid && maskRouted_1));
+ assign io_output_payload_addr = (maskRouted_0 ? io_inputs_0_payload_addr : io_inputs_1_payload_addr);
+ assign io_output_payload_len = (maskRouted_0 ? io_inputs_0_payload_len : io_inputs_1_payload_len);
+ assign io_output_payload_size = (maskRouted_0 ? io_inputs_0_payload_size : io_inputs_1_payload_size);
+ assign io_output_payload_cache = (maskRouted_0 ? io_inputs_0_payload_cache : io_inputs_1_payload_cache);
+ assign io_output_payload_prot = (maskRouted_0 ? io_inputs_0_payload_prot : io_inputs_1_payload_prot);
+ assign io_inputs_0_ready = (maskRouted_0 && io_output_ready);
+ assign io_inputs_1_ready = (maskRouted_1 && io_output_ready);
+ assign io_chosenOH = {maskRouted_1,maskRouted_0};
+ assign _zz_io_chosen = io_chosenOH[1];
+ assign io_chosen = _zz_io_chosen;
+ always @(posedge clk) begin
+ if(reset) begin
+ locked <= 1'b0;
+ maskLocked_0 <= 1'b0;
+ maskLocked_1 <= 1'b1;
+ end else begin
+ if(io_output_valid) begin
+ maskLocked_0 <= maskRouted_0;
+ maskLocked_1 <= maskRouted_1;
+ end
+ if(io_output_valid) begin
+ locked <= 1'b1;
+ end
+ if(io_output_fire) begin
+ locked <= 1'b0;
+ end
+ end
+ end
+
+
+endmodule
+
+//Axi4PeripheralTimer_1 replaced by Axi4PeripheralTimer_be6ad777990c4e5089d0b11c63cc2698
+
+module Axi4PeripheralTimer_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_tick,
+ input wire io_clear,
+ input wire [15:0] io_limit,
+ output wire io_full,
+ output wire [15:0] io_value,
+ input wire clk,
+ input wire reset
+);
+
+ wire [15:0] _zz_counter;
+ wire [0:0] _zz_counter_1;
+ reg [15:0] counter;
+ wire limitHit;
+ reg inhibitFull;
+
+ assign _zz_counter_1 = (! limitHit);
+ assign _zz_counter = {15'd0, _zz_counter_1};
+ assign limitHit = (counter == io_limit);
+ assign io_full = ((limitHit && io_tick) && (! inhibitFull));
+ assign io_value = counter;
+ always @(posedge clk) begin
+ if(reset) begin
+ inhibitFull <= 1'b0;
+ end else begin
+ if(io_tick) begin
+ inhibitFull <= limitHit;
+ end
+ if(io_clear) begin
+ inhibitFull <= 1'b0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_tick) begin
+ counter <= (counter + _zz_counter);
+ end
+ if(io_clear) begin
+ counter <= 16'h0;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralPrescaler_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_clear,
+ input wire [23:0] io_limit,
+ output wire io_overflow,
+ input wire clk,
+ input wire reset
+);
+
+ reg [23:0] counter;
+ wire when_Prescaler_l17;
+
+ assign when_Prescaler_l17 = (io_clear || io_overflow);
+ assign io_overflow = (counter == io_limit);
+ always @(posedge clk) begin
+ counter <= (counter + 24'h000001);
+ if(when_Prescaler_l17) begin
+ counter <= 24'h0;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralI2cSlave_be6ad777990c4e5089d0b11c63cc2698 (
+ output wire io_i2c_sda_write,
+ input wire io_i2c_sda_read,
+ output wire io_i2c_scl_write,
+ input wire io_i2c_scl_read,
+ input wire [9:0] io_config_samplingClockDivider,
+ input wire [19:0] io_config_timeout,
+ input wire [5:0] io_config_tsuData,
+ input wire io_config_timeoutClear,
+ output reg [2:0] io_bus_cmd_kind,
+ output wire io_bus_cmd_data,
+ input wire io_bus_rsp_valid,
+ input wire io_bus_rsp_enable,
+ input wire io_bus_rsp_data,
+ output wire io_timeout,
+ output wire io_internals_inFrame,
+ output wire io_internals_sdaRead,
+ output wire io_internals_sclRead,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4PeripheralI2cSlaveCmdMode_NONE = 3'd0;
+ localparam Axi4PeripheralI2cSlaveCmdMode_START = 3'd1;
+ localparam Axi4PeripheralI2cSlaveCmdMode_RESTART = 3'd2;
+ localparam Axi4PeripheralI2cSlaveCmdMode_STOP = 3'd3;
+ localparam Axi4PeripheralI2cSlaveCmdMode_DROP = 3'd4;
+ localparam Axi4PeripheralI2cSlaveCmdMode_DRIVE = 3'd5;
+ localparam Axi4PeripheralI2cSlaveCmdMode_READ = 3'd6;
+
+ wire io_i2c_scl_read_buffercc_io_dataOut;
+ wire io_i2c_sda_read_buffercc_io_dataOut;
+ reg [9:0] filter_timer_counter;
+ wire filter_timer_tick;
+ wire filter_sampler_sclSync;
+ wire filter_sampler_sdaSync;
+ wire filter_sampler_sclSamples_0;
+ wire filter_sampler_sclSamples_1;
+ wire filter_sampler_sclSamples_2;
+ wire _zz_filter_sampler_sclSamples_0;
+ reg _zz_filter_sampler_sclSamples_1;
+ reg _zz_filter_sampler_sclSamples_2;
+ wire filter_sampler_sdaSamples_0;
+ wire filter_sampler_sdaSamples_1;
+ wire filter_sampler_sdaSamples_2;
+ wire _zz_filter_sampler_sdaSamples_0;
+ reg _zz_filter_sampler_sdaSamples_1;
+ reg _zz_filter_sampler_sdaSamples_2;
+ reg filter_sda;
+ reg filter_scl;
+ wire when_Misc_l82;
+ wire when_Misc_l85;
+ wire sclEdge_rise;
+ wire sclEdge_fall;
+ wire sclEdge_toggle;
+ reg filter_scl_regNext;
+ wire sdaEdge_rise;
+ wire sdaEdge_fall;
+ wire sdaEdge_toggle;
+ reg filter_sda_regNext;
+ wire detector_start;
+ wire detector_stop;
+ reg [5:0] tsuData_counter;
+ wire tsuData_done;
+ reg tsuData_reset;
+ wire when_I2CSlave_l191;
+ reg ctrl_inFrame;
+ reg ctrl_inFrameData;
+ reg ctrl_sdaWrite;
+ reg ctrl_sclWrite;
+ wire ctrl_rspBufferIn_valid;
+ reg ctrl_rspBufferIn_ready;
+ wire ctrl_rspBufferIn_payload_enable;
+ wire ctrl_rspBufferIn_payload_data;
+ wire ctrl_rspBuffer_valid;
+ reg ctrl_rspBuffer_ready;
+ wire ctrl_rspBuffer_payload_enable;
+ wire ctrl_rspBuffer_payload_data;
+ reg ctrl_rspBufferIn_rValid;
+ reg ctrl_rspBufferIn_rData_enable;
+ reg ctrl_rspBufferIn_rData_data;
+ wire when_Stream_l375;
+ wire ctrl_rspAhead_valid;
+ wire ctrl_rspAhead_payload_enable;
+ wire ctrl_rspAhead_payload_data;
+ wire when_I2CSlave_l241;
+ wire when_I2CSlave_l245;
+ wire when_I2CSlave_l251;
+ wire [2:0] _zz_io_bus_cmd_kind;
+ reg timeout_enabled;
+ reg [19:0] timeout_counter;
+ wire timeout_tick;
+ wire when_I2CSlave_l270;
+ wire when_I2CSlave_l276;
+ wire [2:0] _zz_io_bus_cmd_kind_1;
+ `ifndef SYNTHESIS
+ reg [55:0] io_bus_cmd_kind_string;
+ reg [55:0] _zz_io_bus_cmd_kind_string;
+ reg [55:0] _zz_io_bus_cmd_kind_1_string;
+ `endif
+
+
+ (* keep_hierarchy = "TRUE" *) Axi4PeripheralBufferCC_1_be6ad777990c4e5089d0b11c63cc2698 io_i2c_scl_read_buffercc (
+ .io_dataIn (io_i2c_scl_read ), //i
+ .io_dataOut (io_i2c_scl_read_buffercc_io_dataOut), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ (* keep_hierarchy = "TRUE" *) Axi4PeripheralBufferCC_1_be6ad777990c4e5089d0b11c63cc2698 io_i2c_sda_read_buffercc (
+ .io_dataIn (io_i2c_sda_read ), //i
+ .io_dataOut (io_i2c_sda_read_buffercc_io_dataOut), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(io_bus_cmd_kind)
+ Axi4PeripheralI2cSlaveCmdMode_NONE : io_bus_cmd_kind_string = "NONE ";
+ Axi4PeripheralI2cSlaveCmdMode_START : io_bus_cmd_kind_string = "START ";
+ Axi4PeripheralI2cSlaveCmdMode_RESTART : io_bus_cmd_kind_string = "RESTART";
+ Axi4PeripheralI2cSlaveCmdMode_STOP : io_bus_cmd_kind_string = "STOP ";
+ Axi4PeripheralI2cSlaveCmdMode_DROP : io_bus_cmd_kind_string = "DROP ";
+ Axi4PeripheralI2cSlaveCmdMode_DRIVE : io_bus_cmd_kind_string = "DRIVE ";
+ Axi4PeripheralI2cSlaveCmdMode_READ : io_bus_cmd_kind_string = "READ ";
+ default : io_bus_cmd_kind_string = "???????";
+ endcase
+ end
+ always @(*) begin
+ case(_zz_io_bus_cmd_kind)
+ Axi4PeripheralI2cSlaveCmdMode_NONE : _zz_io_bus_cmd_kind_string = "NONE ";
+ Axi4PeripheralI2cSlaveCmdMode_START : _zz_io_bus_cmd_kind_string = "START ";
+ Axi4PeripheralI2cSlaveCmdMode_RESTART : _zz_io_bus_cmd_kind_string = "RESTART";
+ Axi4PeripheralI2cSlaveCmdMode_STOP : _zz_io_bus_cmd_kind_string = "STOP ";
+ Axi4PeripheralI2cSlaveCmdMode_DROP : _zz_io_bus_cmd_kind_string = "DROP ";
+ Axi4PeripheralI2cSlaveCmdMode_DRIVE : _zz_io_bus_cmd_kind_string = "DRIVE ";
+ Axi4PeripheralI2cSlaveCmdMode_READ : _zz_io_bus_cmd_kind_string = "READ ";
+ default : _zz_io_bus_cmd_kind_string = "???????";
+ endcase
+ end
+ always @(*) begin
+ case(_zz_io_bus_cmd_kind_1)
+ Axi4PeripheralI2cSlaveCmdMode_NONE : _zz_io_bus_cmd_kind_1_string = "NONE ";
+ Axi4PeripheralI2cSlaveCmdMode_START : _zz_io_bus_cmd_kind_1_string = "START ";
+ Axi4PeripheralI2cSlaveCmdMode_RESTART : _zz_io_bus_cmd_kind_1_string = "RESTART";
+ Axi4PeripheralI2cSlaveCmdMode_STOP : _zz_io_bus_cmd_kind_1_string = "STOP ";
+ Axi4PeripheralI2cSlaveCmdMode_DROP : _zz_io_bus_cmd_kind_1_string = "DROP ";
+ Axi4PeripheralI2cSlaveCmdMode_DRIVE : _zz_io_bus_cmd_kind_1_string = "DRIVE ";
+ Axi4PeripheralI2cSlaveCmdMode_READ : _zz_io_bus_cmd_kind_1_string = "READ ";
+ default : _zz_io_bus_cmd_kind_1_string = "???????";
+ endcase
+ end
+ `endif
+
+ assign filter_timer_tick = (filter_timer_counter == 10'h0);
+ assign filter_sampler_sclSync = io_i2c_scl_read_buffercc_io_dataOut;
+ assign filter_sampler_sdaSync = io_i2c_sda_read_buffercc_io_dataOut;
+ assign _zz_filter_sampler_sclSamples_0 = filter_sampler_sclSync;
+ assign filter_sampler_sclSamples_0 = _zz_filter_sampler_sclSamples_0;
+ assign filter_sampler_sclSamples_1 = _zz_filter_sampler_sclSamples_1;
+ assign filter_sampler_sclSamples_2 = _zz_filter_sampler_sclSamples_2;
+ assign _zz_filter_sampler_sdaSamples_0 = filter_sampler_sdaSync;
+ assign filter_sampler_sdaSamples_0 = _zz_filter_sampler_sdaSamples_0;
+ assign filter_sampler_sdaSamples_1 = _zz_filter_sampler_sdaSamples_1;
+ assign filter_sampler_sdaSamples_2 = _zz_filter_sampler_sdaSamples_2;
+ assign when_Misc_l82 = (&{(filter_sampler_sdaSamples_2 != filter_sda),{(filter_sampler_sdaSamples_1 != filter_sda),(filter_sampler_sdaSamples_0 != filter_sda)}});
+ assign when_Misc_l85 = (&{(filter_sampler_sclSamples_2 != filter_scl),{(filter_sampler_sclSamples_1 != filter_scl),(filter_sampler_sclSamples_0 != filter_scl)}});
+ assign sclEdge_rise = ((! filter_scl_regNext) && filter_scl);
+ assign sclEdge_fall = (filter_scl_regNext && (! filter_scl));
+ assign sclEdge_toggle = (filter_scl_regNext != filter_scl);
+ assign sdaEdge_rise = ((! filter_sda_regNext) && filter_sda);
+ assign sdaEdge_fall = (filter_sda_regNext && (! filter_sda));
+ assign sdaEdge_toggle = (filter_sda_regNext != filter_sda);
+ assign detector_start = (filter_scl && sdaEdge_fall);
+ assign detector_stop = (filter_scl && sdaEdge_rise);
+ assign tsuData_done = (tsuData_counter == 6'h0);
+ always @(*) begin
+ tsuData_reset = 1'b0;
+ if(ctrl_inFrameData) begin
+ tsuData_reset = (! ctrl_rspAhead_valid);
+ end
+ end
+
+ assign when_I2CSlave_l191 = (! tsuData_done);
+ always @(*) begin
+ ctrl_sdaWrite = 1'b1;
+ if(ctrl_inFrameData) begin
+ if(when_I2CSlave_l251) begin
+ ctrl_sdaWrite = ctrl_rspAhead_payload_data;
+ end
+ end
+ end
+
+ always @(*) begin
+ ctrl_sclWrite = 1'b1;
+ if(ctrl_inFrameData) begin
+ if(when_I2CSlave_l245) begin
+ ctrl_sclWrite = 1'b0;
+ end
+ end
+ end
+
+ always @(*) begin
+ ctrl_rspBufferIn_ready = ctrl_rspBuffer_ready;
+ if(when_Stream_l375) begin
+ ctrl_rspBufferIn_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! ctrl_rspBuffer_valid);
+ assign ctrl_rspBuffer_valid = ctrl_rspBufferIn_rValid;
+ assign ctrl_rspBuffer_payload_enable = ctrl_rspBufferIn_rData_enable;
+ assign ctrl_rspBuffer_payload_data = ctrl_rspBufferIn_rData_data;
+ assign ctrl_rspAhead_valid = (ctrl_rspBuffer_valid ? ctrl_rspBuffer_valid : ctrl_rspBufferIn_valid);
+ assign ctrl_rspAhead_payload_enable = (ctrl_rspBuffer_valid ? ctrl_rspBuffer_payload_enable : ctrl_rspBufferIn_payload_enable);
+ assign ctrl_rspAhead_payload_data = (ctrl_rspBuffer_valid ? ctrl_rspBuffer_payload_data : ctrl_rspBufferIn_payload_data);
+ assign ctrl_rspBufferIn_valid = io_bus_rsp_valid;
+ assign ctrl_rspBufferIn_payload_enable = io_bus_rsp_enable;
+ assign ctrl_rspBufferIn_payload_data = io_bus_rsp_data;
+ always @(*) begin
+ ctrl_rspBuffer_ready = 1'b0;
+ if(ctrl_inFrame) begin
+ if(sclEdge_fall) begin
+ ctrl_rspBuffer_ready = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ io_bus_cmd_kind = Axi4PeripheralI2cSlaveCmdMode_NONE;
+ if(ctrl_inFrame) begin
+ if(sclEdge_rise) begin
+ io_bus_cmd_kind = Axi4PeripheralI2cSlaveCmdMode_READ;
+ end
+ end
+ if(ctrl_inFrameData) begin
+ if(when_I2CSlave_l241) begin
+ io_bus_cmd_kind = Axi4PeripheralI2cSlaveCmdMode_DRIVE;
+ end
+ end
+ if(detector_start) begin
+ io_bus_cmd_kind = _zz_io_bus_cmd_kind;
+ end
+ if(when_I2CSlave_l276) begin
+ if(ctrl_inFrame) begin
+ io_bus_cmd_kind = _zz_io_bus_cmd_kind_1;
+ end
+ end
+ end
+
+ assign io_bus_cmd_data = filter_sda;
+ assign when_I2CSlave_l241 = ((! ctrl_rspBuffer_valid) || ctrl_rspBuffer_ready);
+ assign when_I2CSlave_l245 = ((! ctrl_rspAhead_valid) || (ctrl_rspAhead_payload_enable && (! tsuData_done)));
+ assign when_I2CSlave_l251 = (ctrl_rspAhead_valid && ctrl_rspAhead_payload_enable);
+ assign _zz_io_bus_cmd_kind = (ctrl_inFrame ? Axi4PeripheralI2cSlaveCmdMode_RESTART : Axi4PeripheralI2cSlaveCmdMode_START);
+ assign timeout_tick = (timeout_enabled && (timeout_counter == 20'h0));
+ assign when_I2CSlave_l270 = (((timeout_tick || sclEdge_toggle) || (((! ctrl_inFrame) && filter_scl) && filter_sda)) || io_config_timeoutClear);
+ assign io_timeout = timeout_tick;
+ assign when_I2CSlave_l276 = (detector_stop || timeout_tick);
+ assign _zz_io_bus_cmd_kind_1 = (timeout_tick ? Axi4PeripheralI2cSlaveCmdMode_DROP : Axi4PeripheralI2cSlaveCmdMode_STOP);
+ assign io_internals_inFrame = ctrl_inFrame;
+ assign io_internals_sdaRead = filter_sda;
+ assign io_internals_sclRead = filter_scl;
+ assign io_i2c_scl_write = ctrl_sclWrite;
+ assign io_i2c_sda_write = ctrl_sdaWrite;
+ always @(posedge clk) begin
+ if(reset) begin
+ filter_timer_counter <= 10'h0;
+ _zz_filter_sampler_sclSamples_1 <= 1'b1;
+ _zz_filter_sampler_sclSamples_2 <= 1'b1;
+ _zz_filter_sampler_sdaSamples_1 <= 1'b1;
+ _zz_filter_sampler_sdaSamples_2 <= 1'b1;
+ filter_sda <= 1'b1;
+ filter_scl <= 1'b1;
+ filter_scl_regNext <= 1'b1;
+ filter_sda_regNext <= 1'b1;
+ tsuData_counter <= 6'h0;
+ ctrl_inFrame <= 1'b0;
+ ctrl_inFrameData <= 1'b0;
+ ctrl_rspBufferIn_rValid <= 1'b0;
+ timeout_counter <= 20'h0;
+ end else begin
+ filter_timer_counter <= (filter_timer_counter - 10'h001);
+ if(filter_timer_tick) begin
+ filter_timer_counter <= io_config_samplingClockDivider;
+ end
+ if(filter_timer_tick) begin
+ _zz_filter_sampler_sclSamples_1 <= _zz_filter_sampler_sclSamples_0;
+ end
+ if(filter_timer_tick) begin
+ _zz_filter_sampler_sclSamples_2 <= _zz_filter_sampler_sclSamples_1;
+ end
+ if(filter_timer_tick) begin
+ _zz_filter_sampler_sdaSamples_1 <= _zz_filter_sampler_sdaSamples_0;
+ end
+ if(filter_timer_tick) begin
+ _zz_filter_sampler_sdaSamples_2 <= _zz_filter_sampler_sdaSamples_1;
+ end
+ if(filter_timer_tick) begin
+ if(when_Misc_l82) begin
+ filter_sda <= filter_sampler_sdaSamples_2;
+ end
+ if(when_Misc_l85) begin
+ filter_scl <= filter_sampler_sclSamples_2;
+ end
+ end
+ filter_scl_regNext <= filter_scl;
+ filter_sda_regNext <= filter_sda;
+ if(when_I2CSlave_l191) begin
+ tsuData_counter <= (tsuData_counter - 6'h01);
+ end
+ if(tsuData_reset) begin
+ tsuData_counter <= io_config_tsuData;
+ end
+ if(ctrl_rspBufferIn_ready) begin
+ ctrl_rspBufferIn_rValid <= ctrl_rspBufferIn_valid;
+ end
+ if(ctrl_inFrame) begin
+ if(sclEdge_fall) begin
+ ctrl_inFrameData <= 1'b1;
+ end
+ end
+ if(detector_start) begin
+ ctrl_inFrame <= 1'b1;
+ ctrl_inFrameData <= 1'b0;
+ end
+ timeout_counter <= (timeout_counter - 20'h00001);
+ if(when_I2CSlave_l270) begin
+ timeout_counter <= io_config_timeout;
+ end
+ if(when_I2CSlave_l276) begin
+ ctrl_inFrame <= 1'b0;
+ ctrl_inFrameData <= 1'b0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(ctrl_rspBufferIn_ready) begin
+ ctrl_rspBufferIn_rData_enable <= ctrl_rspBufferIn_payload_enable;
+ ctrl_rspBufferIn_rData_data <= ctrl_rspBufferIn_payload_data;
+ end
+ timeout_enabled <= (io_config_timeout != 20'h0);
+ end
+
+
+endmodule
+
+module Axi4PeripheralStreamFifo_3_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [7:0] io_push_payload_data,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [7:0] io_pop_payload_data,
+ input wire io_flush,
+ output wire [8:0] io_occupancy,
+ output wire [8:0] io_availability,
+ input wire clk,
+ input wire reset
+);
+
+ reg [7:0] logic_ram_spinal_port1;
+ reg _zz_1;
+ wire logic_ptr_doPush;
+ wire logic_ptr_doPop;
+ wire logic_ptr_full;
+ wire logic_ptr_empty;
+ reg [8:0] logic_ptr_push;
+ reg [8:0] logic_ptr_pop;
+ wire [8:0] logic_ptr_occupancy;
+ wire [8:0] logic_ptr_popOnIo;
+ wire when_Stream_l1248;
+ reg logic_ptr_wentUp;
+ wire io_push_fire;
+ wire logic_push_onRam_write_valid;
+ wire [7:0] logic_push_onRam_write_payload_address;
+ wire [7:0] logic_push_onRam_write_payload_data_data;
+ wire logic_pop_addressGen_valid;
+ reg logic_pop_addressGen_ready;
+ wire [7:0] logic_pop_addressGen_payload;
+ wire logic_pop_addressGen_fire;
+ wire logic_pop_sync_readArbitation_valid;
+ wire logic_pop_sync_readArbitation_ready;
+ wire [7:0] logic_pop_sync_readArbitation_payload;
+ reg logic_pop_addressGen_rValid;
+ reg [7:0] logic_pop_addressGen_rData;
+ wire when_Stream_l375;
+ wire logic_pop_sync_readPort_cmd_valid;
+ wire [7:0] logic_pop_sync_readPort_cmd_payload;
+ wire [7:0] logic_pop_sync_readPort_rsp_data;
+ wire logic_pop_sync_readArbitation_translated_valid;
+ wire logic_pop_sync_readArbitation_translated_ready;
+ wire [7:0] logic_pop_sync_readArbitation_translated_payload_data;
+ wire logic_pop_sync_readArbitation_fire;
+ reg [8:0] logic_pop_sync_popReg;
+ reg [7:0] logic_ram [0:255];
+
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_push_onRam_write_payload_address] <= logic_push_onRam_write_payload_data_data;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_sync_readPort_cmd_valid) begin
+ logic_ram_spinal_port1 <= logic_ram[logic_pop_sync_readPort_cmd_payload];
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_push_onRam_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l1248 = (logic_ptr_doPush != logic_ptr_doPop);
+ assign logic_ptr_full = (((logic_ptr_push ^ logic_ptr_popOnIo) ^ 9'h100) == 9'h0);
+ assign logic_ptr_empty = (logic_ptr_push == logic_ptr_pop);
+ assign logic_ptr_occupancy = (logic_ptr_push - logic_ptr_popOnIo);
+ assign io_push_ready = (! logic_ptr_full);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign logic_ptr_doPush = io_push_fire;
+ assign logic_push_onRam_write_valid = io_push_fire;
+ assign logic_push_onRam_write_payload_address = logic_ptr_push[7:0];
+ assign logic_push_onRam_write_payload_data_data = io_push_payload_data;
+ assign logic_pop_addressGen_valid = (! logic_ptr_empty);
+ assign logic_pop_addressGen_payload = logic_ptr_pop[7:0];
+ assign logic_pop_addressGen_fire = (logic_pop_addressGen_valid && logic_pop_addressGen_ready);
+ assign logic_ptr_doPop = logic_pop_addressGen_fire;
+ always @(*) begin
+ logic_pop_addressGen_ready = logic_pop_sync_readArbitation_ready;
+ if(when_Stream_l375) begin
+ logic_pop_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! logic_pop_sync_readArbitation_valid);
+ assign logic_pop_sync_readArbitation_valid = logic_pop_addressGen_rValid;
+ assign logic_pop_sync_readArbitation_payload = logic_pop_addressGen_rData;
+ assign logic_pop_sync_readPort_rsp_data = logic_ram_spinal_port1[7 : 0];
+ assign logic_pop_sync_readPort_cmd_valid = logic_pop_addressGen_fire;
+ assign logic_pop_sync_readPort_cmd_payload = logic_pop_addressGen_payload;
+ assign logic_pop_sync_readArbitation_translated_valid = logic_pop_sync_readArbitation_valid;
+ assign logic_pop_sync_readArbitation_ready = logic_pop_sync_readArbitation_translated_ready;
+ assign logic_pop_sync_readArbitation_translated_payload_data = logic_pop_sync_readPort_rsp_data;
+ assign io_pop_valid = logic_pop_sync_readArbitation_translated_valid;
+ assign logic_pop_sync_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_data = logic_pop_sync_readArbitation_translated_payload_data;
+ assign logic_pop_sync_readArbitation_fire = (logic_pop_sync_readArbitation_valid && logic_pop_sync_readArbitation_ready);
+ assign logic_ptr_popOnIo = logic_pop_sync_popReg;
+ assign io_occupancy = logic_ptr_occupancy;
+ assign io_availability = (9'h100 - logic_ptr_occupancy);
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_ptr_push <= 9'h0;
+ logic_ptr_pop <= 9'h0;
+ logic_ptr_wentUp <= 1'b0;
+ logic_pop_addressGen_rValid <= 1'b0;
+ logic_pop_sync_popReg <= 9'h0;
+ end else begin
+ if(when_Stream_l1248) begin
+ logic_ptr_wentUp <= logic_ptr_doPush;
+ end
+ if(io_flush) begin
+ logic_ptr_wentUp <= 1'b0;
+ end
+ if(logic_ptr_doPush) begin
+ logic_ptr_push <= (logic_ptr_push + 9'h001);
+ end
+ if(logic_ptr_doPop) begin
+ logic_ptr_pop <= (logic_ptr_pop + 9'h001);
+ end
+ if(io_flush) begin
+ logic_ptr_push <= 9'h0;
+ logic_ptr_pop <= 9'h0;
+ end
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rValid <= logic_pop_addressGen_valid;
+ end
+ if(io_flush) begin
+ logic_pop_addressGen_rValid <= 1'b0;
+ end
+ if(logic_pop_sync_readArbitation_fire) begin
+ logic_pop_sync_popReg <= logic_ptr_pop;
+ end
+ if(io_flush) begin
+ logic_pop_sync_popReg <= 9'h0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rData <= logic_pop_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralStreamFifo_2_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire io_push_payload_kind,
+ input wire io_push_payload_read,
+ input wire io_push_payload_write,
+ input wire [7:0] io_push_payload_data,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire io_pop_payload_kind,
+ output wire io_pop_payload_read,
+ output wire io_pop_payload_write,
+ output wire [7:0] io_pop_payload_data,
+ input wire io_flush,
+ output wire [8:0] io_occupancy,
+ output wire [8:0] io_availability,
+ input wire clk,
+ input wire reset
+);
+
+ reg [10:0] logic_ram_spinal_port1;
+ wire [10:0] _zz_logic_ram_port;
+ reg _zz_1;
+ wire logic_ptr_doPush;
+ wire logic_ptr_doPop;
+ wire logic_ptr_full;
+ wire logic_ptr_empty;
+ reg [8:0] logic_ptr_push;
+ reg [8:0] logic_ptr_pop;
+ wire [8:0] logic_ptr_occupancy;
+ wire [8:0] logic_ptr_popOnIo;
+ wire when_Stream_l1248;
+ reg logic_ptr_wentUp;
+ wire io_push_fire;
+ wire logic_push_onRam_write_valid;
+ wire [7:0] logic_push_onRam_write_payload_address;
+ wire logic_push_onRam_write_payload_data_kind;
+ wire logic_push_onRam_write_payload_data_read;
+ wire logic_push_onRam_write_payload_data_write;
+ wire [7:0] logic_push_onRam_write_payload_data_data;
+ wire logic_pop_addressGen_valid;
+ reg logic_pop_addressGen_ready;
+ wire [7:0] logic_pop_addressGen_payload;
+ wire logic_pop_addressGen_fire;
+ wire logic_pop_sync_readArbitation_valid;
+ wire logic_pop_sync_readArbitation_ready;
+ wire [7:0] logic_pop_sync_readArbitation_payload;
+ reg logic_pop_addressGen_rValid;
+ reg [7:0] logic_pop_addressGen_rData;
+ wire when_Stream_l375;
+ wire logic_pop_sync_readPort_cmd_valid;
+ wire [7:0] logic_pop_sync_readPort_cmd_payload;
+ wire logic_pop_sync_readPort_rsp_kind;
+ wire logic_pop_sync_readPort_rsp_read;
+ wire logic_pop_sync_readPort_rsp_write;
+ wire [7:0] logic_pop_sync_readPort_rsp_data;
+ wire [10:0] _zz_logic_pop_sync_readPort_rsp_kind;
+ wire logic_pop_sync_readArbitation_translated_valid;
+ wire logic_pop_sync_readArbitation_translated_ready;
+ wire logic_pop_sync_readArbitation_translated_payload_kind;
+ wire logic_pop_sync_readArbitation_translated_payload_read;
+ wire logic_pop_sync_readArbitation_translated_payload_write;
+ wire [7:0] logic_pop_sync_readArbitation_translated_payload_data;
+ wire logic_pop_sync_readArbitation_fire;
+ reg [8:0] logic_pop_sync_popReg;
+ reg [10:0] logic_ram [0:255];
+
+ assign _zz_logic_ram_port = {logic_push_onRam_write_payload_data_data,{logic_push_onRam_write_payload_data_write,{logic_push_onRam_write_payload_data_read,logic_push_onRam_write_payload_data_kind}}};
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_push_onRam_write_payload_address] <= _zz_logic_ram_port;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_sync_readPort_cmd_valid) begin
+ logic_ram_spinal_port1 <= logic_ram[logic_pop_sync_readPort_cmd_payload];
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_push_onRam_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l1248 = (logic_ptr_doPush != logic_ptr_doPop);
+ assign logic_ptr_full = (((logic_ptr_push ^ logic_ptr_popOnIo) ^ 9'h100) == 9'h0);
+ assign logic_ptr_empty = (logic_ptr_push == logic_ptr_pop);
+ assign logic_ptr_occupancy = (logic_ptr_push - logic_ptr_popOnIo);
+ assign io_push_ready = (! logic_ptr_full);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign logic_ptr_doPush = io_push_fire;
+ assign logic_push_onRam_write_valid = io_push_fire;
+ assign logic_push_onRam_write_payload_address = logic_ptr_push[7:0];
+ assign logic_push_onRam_write_payload_data_kind = io_push_payload_kind;
+ assign logic_push_onRam_write_payload_data_read = io_push_payload_read;
+ assign logic_push_onRam_write_payload_data_write = io_push_payload_write;
+ assign logic_push_onRam_write_payload_data_data = io_push_payload_data;
+ assign logic_pop_addressGen_valid = (! logic_ptr_empty);
+ assign logic_pop_addressGen_payload = logic_ptr_pop[7:0];
+ assign logic_pop_addressGen_fire = (logic_pop_addressGen_valid && logic_pop_addressGen_ready);
+ assign logic_ptr_doPop = logic_pop_addressGen_fire;
+ always @(*) begin
+ logic_pop_addressGen_ready = logic_pop_sync_readArbitation_ready;
+ if(when_Stream_l375) begin
+ logic_pop_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! logic_pop_sync_readArbitation_valid);
+ assign logic_pop_sync_readArbitation_valid = logic_pop_addressGen_rValid;
+ assign logic_pop_sync_readArbitation_payload = logic_pop_addressGen_rData;
+ assign _zz_logic_pop_sync_readPort_rsp_kind = logic_ram_spinal_port1;
+ assign logic_pop_sync_readPort_rsp_kind = _zz_logic_pop_sync_readPort_rsp_kind[0];
+ assign logic_pop_sync_readPort_rsp_read = _zz_logic_pop_sync_readPort_rsp_kind[1];
+ assign logic_pop_sync_readPort_rsp_write = _zz_logic_pop_sync_readPort_rsp_kind[2];
+ assign logic_pop_sync_readPort_rsp_data = _zz_logic_pop_sync_readPort_rsp_kind[10 : 3];
+ assign logic_pop_sync_readPort_cmd_valid = logic_pop_addressGen_fire;
+ assign logic_pop_sync_readPort_cmd_payload = logic_pop_addressGen_payload;
+ assign logic_pop_sync_readArbitation_translated_valid = logic_pop_sync_readArbitation_valid;
+ assign logic_pop_sync_readArbitation_ready = logic_pop_sync_readArbitation_translated_ready;
+ assign logic_pop_sync_readArbitation_translated_payload_kind = logic_pop_sync_readPort_rsp_kind;
+ assign logic_pop_sync_readArbitation_translated_payload_read = logic_pop_sync_readPort_rsp_read;
+ assign logic_pop_sync_readArbitation_translated_payload_write = logic_pop_sync_readPort_rsp_write;
+ assign logic_pop_sync_readArbitation_translated_payload_data = logic_pop_sync_readPort_rsp_data;
+ assign io_pop_valid = logic_pop_sync_readArbitation_translated_valid;
+ assign logic_pop_sync_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_kind = logic_pop_sync_readArbitation_translated_payload_kind;
+ assign io_pop_payload_read = logic_pop_sync_readArbitation_translated_payload_read;
+ assign io_pop_payload_write = logic_pop_sync_readArbitation_translated_payload_write;
+ assign io_pop_payload_data = logic_pop_sync_readArbitation_translated_payload_data;
+ assign logic_pop_sync_readArbitation_fire = (logic_pop_sync_readArbitation_valid && logic_pop_sync_readArbitation_ready);
+ assign logic_ptr_popOnIo = logic_pop_sync_popReg;
+ assign io_occupancy = logic_ptr_occupancy;
+ assign io_availability = (9'h100 - logic_ptr_occupancy);
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_ptr_push <= 9'h0;
+ logic_ptr_pop <= 9'h0;
+ logic_ptr_wentUp <= 1'b0;
+ logic_pop_addressGen_rValid <= 1'b0;
+ logic_pop_sync_popReg <= 9'h0;
+ end else begin
+ if(when_Stream_l1248) begin
+ logic_ptr_wentUp <= logic_ptr_doPush;
+ end
+ if(io_flush) begin
+ logic_ptr_wentUp <= 1'b0;
+ end
+ if(logic_ptr_doPush) begin
+ logic_ptr_push <= (logic_ptr_push + 9'h001);
+ end
+ if(logic_ptr_doPop) begin
+ logic_ptr_pop <= (logic_ptr_pop + 9'h001);
+ end
+ if(io_flush) begin
+ logic_ptr_push <= 9'h0;
+ logic_ptr_pop <= 9'h0;
+ end
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rValid <= logic_pop_addressGen_valid;
+ end
+ if(io_flush) begin
+ logic_pop_addressGen_rValid <= 1'b0;
+ end
+ if(logic_pop_sync_readArbitation_fire) begin
+ logic_pop_sync_popReg <= logic_ptr_pop;
+ end
+ if(io_flush) begin
+ logic_pop_sync_popReg <= 9'h0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rData <= logic_pop_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralTopLevel_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_config_kind_cpol,
+ input wire io_config_kind_cpha,
+ input wire [11:0] io_config_sclkToggle,
+ input wire [1:0] io_config_mod,
+ input wire [3:0] io_config_ss_activeHigh,
+ input wire [11:0] io_config_ss_setup,
+ input wire [11:0] io_config_ss_hold,
+ input wire [11:0] io_config_ss_disable,
+ input wire io_cmd_valid,
+ output reg io_cmd_ready,
+ input wire io_cmd_payload_kind,
+ input wire io_cmd_payload_read,
+ input wire io_cmd_payload_write,
+ input wire [7:0] io_cmd_payload_data,
+ output wire io_rsp_valid,
+ output wire [7:0] io_rsp_payload_data,
+ output wire [0:0] io_spi_sclk_write,
+ output reg io_spi_data_0_writeEnable,
+ input wire [0:0] io_spi_data_0_read,
+ output reg [0:0] io_spi_data_0_write,
+ output reg io_spi_data_1_writeEnable,
+ input wire [0:0] io_spi_data_1_read,
+ output reg [0:0] io_spi_data_1_write,
+ output reg io_spi_data_2_writeEnable,
+ input wire [0:0] io_spi_data_2_read,
+ output reg [0:0] io_spi_data_2_write,
+ output reg io_spi_data_3_writeEnable,
+ input wire [0:0] io_spi_data_3_read,
+ output reg [0:0] io_spi_data_3_write,
+ output wire [3:0] io_spi_ss,
+ input wire clk,
+ input wire reset
+);
+
+ reg [0:0] _zz_outputPhy_dataWrite_3;
+ wire [2:0] _zz_outputPhy_dataWrite_4;
+ reg [1:0] _zz_outputPhy_dataWrite_5;
+ wire [1:0] _zz_outputPhy_dataWrite_6;
+ wire [2:0] _zz_outputPhy_dataWrite_7;
+ reg [3:0] _zz_outputPhy_dataWrite_8;
+ wire [0:0] _zz_outputPhy_dataWrite_9;
+ wire [2:0] _zz_outputPhy_dataWrite_10;
+ wire [3:0] _zz_inputPhy_dataRead;
+ wire [3:0] _zz_inputPhy_dataRead_1;
+ wire [3:0] _zz_inputPhy_dataRead_2;
+ wire [3:0] _zz_inputPhy_dataRead_3;
+ wire [3:0] _zz_inputPhy_dataRead_4;
+ wire [3:0] _zz_inputPhy_dataRead_5;
+ wire [3:0] _zz_inputPhy_dataRead_6;
+ wire [8:0] _zz_inputPhy_bufferNext;
+ wire [10:0] _zz_inputPhy_bufferNext_1;
+ reg [11:0] timer_counter;
+ reg timer_reset;
+ wire timer_ss_setupHit;
+ wire timer_ss_holdHit;
+ wire timer_ss_disableHit;
+ wire timer_sclkToggleHit;
+ reg fsm_state;
+ reg [2:0] fsm_counter;
+ reg [2:0] _zz_fsm_counterPlus;
+ wire [2:0] fsm_counterPlus;
+ reg fsm_fastRate;
+ reg fsm_isDdr;
+ reg [2:0] fsm_counterMax;
+ reg fsm_lateSampling;
+ reg fsm_readFill;
+ reg fsm_readDone;
+ reg [3:0] fsm_ss;
+ wire when_SpiXdrMasterCtrl_l741;
+ wire when_SpiXdrMasterCtrl_l744;
+ wire when_SpiXdrMasterCtrl_l751;
+ wire when_SpiXdrMasterCtrl_l753;
+ wire when_SpiXdrMasterCtrl_l760;
+ wire when_SpiXdrMasterCtrl_l766;
+ wire when_SpiXdrMasterCtrl_l783;
+ reg [0:0] outputPhy_sclkWrite;
+ wire [0:0] _zz_io_spi_sclk_write;
+ wire when_SpiXdrMasterCtrl_l798;
+ reg [3:0] outputPhy_dataWrite;
+ reg [2:0] outputPhy_widthSel;
+ reg [2:0] outputPhy_offset;
+ wire [7:0] _zz_outputPhy_dataWrite;
+ wire [7:0] _zz_outputPhy_dataWrite_1;
+ wire [7:0] _zz_outputPhy_dataWrite_2;
+ wire when_SpiXdrMasterCtrl_l841;
+ wire when_SpiXdrMasterCtrl_l841_1;
+ reg [1:0] io_config_mod_delay_1;
+ reg [1:0] inputPhy_mod;
+ reg fsm_readFill_delay_1;
+ reg inputPhy_readFill;
+ reg fsm_readDone_delay_1;
+ reg inputPhy_readDone;
+ reg [6:0] inputPhy_buffer;
+ reg [7:0] inputPhy_bufferNext;
+ reg [2:0] inputPhy_widthSel;
+ wire [3:0] inputPhy_dataWrite;
+ reg [3:0] inputPhy_dataRead;
+ reg fsm_state_delay_1;
+ reg fsm_state_delay_2;
+ wire when_SpiXdrMasterCtrl_l863;
+ reg [3:0] inputPhy_dataReadBuffer;
+
+ assign _zz_outputPhy_dataWrite_4 = (outputPhy_offset - fsm_counter);
+ assign _zz_outputPhy_dataWrite_6 = (_zz_outputPhy_dataWrite_7 >>> 1'd1);
+ assign _zz_outputPhy_dataWrite_7 = (outputPhy_offset - fsm_counter);
+ assign _zz_outputPhy_dataWrite_9 = (_zz_outputPhy_dataWrite_10 >>> 2'd2);
+ assign _zz_outputPhy_dataWrite_10 = (outputPhy_offset - fsm_counter);
+ assign _zz_inputPhy_dataRead = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_1 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_2 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_3 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_4 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_5 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_6 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_bufferNext = {inputPhy_buffer,inputPhy_dataRead[1 : 0]};
+ assign _zz_inputPhy_bufferNext_1 = {inputPhy_buffer,inputPhy_dataRead[3 : 0]};
+ always @(*) begin
+ case(_zz_outputPhy_dataWrite_4)
+ 3'b000 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[0 : 0];
+ 3'b001 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[1 : 1];
+ 3'b010 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[2 : 2];
+ 3'b011 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[3 : 3];
+ 3'b100 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[4 : 4];
+ 3'b101 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[5 : 5];
+ 3'b110 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[6 : 6];
+ default : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[7 : 7];
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_outputPhy_dataWrite_6)
+ 2'b00 : _zz_outputPhy_dataWrite_5 = _zz_outputPhy_dataWrite_1[1 : 0];
+ 2'b01 : _zz_outputPhy_dataWrite_5 = _zz_outputPhy_dataWrite_1[3 : 2];
+ 2'b10 : _zz_outputPhy_dataWrite_5 = _zz_outputPhy_dataWrite_1[5 : 4];
+ default : _zz_outputPhy_dataWrite_5 = _zz_outputPhy_dataWrite_1[7 : 6];
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_outputPhy_dataWrite_9)
+ 1'b0 : _zz_outputPhy_dataWrite_8 = _zz_outputPhy_dataWrite_2[3 : 0];
+ default : _zz_outputPhy_dataWrite_8 = _zz_outputPhy_dataWrite_2[7 : 4];
+ endcase
+ end
+
+ always @(*) begin
+ timer_reset = 1'b0;
+ if(io_cmd_valid) begin
+ if(when_SpiXdrMasterCtrl_l741) begin
+ timer_reset = timer_sclkToggleHit;
+ end else begin
+ if(!when_SpiXdrMasterCtrl_l760) begin
+ if(when_SpiXdrMasterCtrl_l766) begin
+ if(timer_ss_holdHit) begin
+ timer_reset = 1'b1;
+ end
+ end
+ end
+ end
+ end
+ if(when_SpiXdrMasterCtrl_l783) begin
+ timer_reset = 1'b1;
+ end
+ end
+
+ assign timer_ss_setupHit = (timer_counter == io_config_ss_setup);
+ assign timer_ss_holdHit = (timer_counter == io_config_ss_hold);
+ assign timer_ss_disableHit = (timer_counter == io_config_ss_disable);
+ assign timer_sclkToggleHit = (timer_counter == io_config_sclkToggle);
+ always @(*) begin
+ _zz_fsm_counterPlus = 3'bxxx;
+ case(io_config_mod)
+ 2'b00 : begin
+ _zz_fsm_counterPlus = 3'b001;
+ end
+ 2'b01 : begin
+ _zz_fsm_counterPlus = 3'b010;
+ end
+ 2'b10 : begin
+ _zz_fsm_counterPlus = 3'b100;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign fsm_counterPlus = (fsm_counter + _zz_fsm_counterPlus);
+ always @(*) begin
+ fsm_fastRate = 1'bx;
+ case(io_config_mod)
+ 2'b00 : begin
+ fsm_fastRate = 1'b0;
+ end
+ 2'b01 : begin
+ fsm_fastRate = 1'b0;
+ end
+ 2'b10 : begin
+ fsm_fastRate = 1'b0;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ fsm_isDdr = 1'bx;
+ case(io_config_mod)
+ 2'b00 : begin
+ fsm_isDdr = 1'b0;
+ end
+ 2'b01 : begin
+ fsm_isDdr = 1'b0;
+ end
+ 2'b10 : begin
+ fsm_isDdr = 1'b0;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ fsm_counterMax = 3'bxxx;
+ case(io_config_mod)
+ 2'b00 : begin
+ fsm_counterMax = 3'b111;
+ end
+ 2'b01 : begin
+ fsm_counterMax = 3'b110;
+ end
+ 2'b10 : begin
+ fsm_counterMax = 3'b100;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ fsm_lateSampling = 1'bx;
+ case(io_config_mod)
+ 2'b00 : begin
+ fsm_lateSampling = 1'b1;
+ end
+ 2'b01 : begin
+ fsm_lateSampling = 1'b1;
+ end
+ 2'b10 : begin
+ fsm_lateSampling = 1'b1;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ fsm_readFill = 1'b0;
+ if(io_cmd_valid) begin
+ if(when_SpiXdrMasterCtrl_l741) begin
+ if(when_SpiXdrMasterCtrl_l744) begin
+ fsm_readFill = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ fsm_readDone = 1'b0;
+ if(io_cmd_valid) begin
+ if(when_SpiXdrMasterCtrl_l741) begin
+ if(when_SpiXdrMasterCtrl_l744) begin
+ fsm_readDone = (io_cmd_payload_read && (fsm_counter == fsm_counterMax));
+ end
+ end
+ end
+ end
+
+ assign io_spi_ss = (~ (fsm_ss ^ io_config_ss_activeHigh));
+ always @(*) begin
+ io_cmd_ready = 1'b0;
+ if(io_cmd_valid) begin
+ if(when_SpiXdrMasterCtrl_l741) begin
+ if(when_SpiXdrMasterCtrl_l751) begin
+ if(when_SpiXdrMasterCtrl_l753) begin
+ io_cmd_ready = 1'b1;
+ end
+ end
+ end else begin
+ if(when_SpiXdrMasterCtrl_l760) begin
+ if(timer_ss_setupHit) begin
+ io_cmd_ready = 1'b1;
+ end
+ end else begin
+ if(!when_SpiXdrMasterCtrl_l766) begin
+ if(timer_ss_disableHit) begin
+ io_cmd_ready = 1'b1;
+ end
+ end
+ end
+ end
+ end
+ end
+
+ assign when_SpiXdrMasterCtrl_l741 = (! io_cmd_payload_kind);
+ assign when_SpiXdrMasterCtrl_l744 = ((timer_sclkToggleHit && (((! fsm_state) ^ fsm_lateSampling) || fsm_isDdr)) || fsm_fastRate);
+ assign when_SpiXdrMasterCtrl_l751 = ((timer_sclkToggleHit && (fsm_state || fsm_isDdr)) || fsm_fastRate);
+ assign when_SpiXdrMasterCtrl_l753 = (fsm_counter == fsm_counterMax);
+ assign when_SpiXdrMasterCtrl_l760 = io_cmd_payload_data[7];
+ assign when_SpiXdrMasterCtrl_l766 = (! fsm_state);
+ assign when_SpiXdrMasterCtrl_l783 = ((! io_cmd_valid) || io_cmd_ready);
+ always @(*) begin
+ outputPhy_sclkWrite = 1'b0;
+ if(when_SpiXdrMasterCtrl_l798) begin
+ case(io_config_mod)
+ 2'b00 : begin
+ outputPhy_sclkWrite = ((fsm_state ^ io_config_kind_cpha) ? 1'b1 : 1'b0);
+ end
+ 2'b01 : begin
+ outputPhy_sclkWrite = ((fsm_state ^ io_config_kind_cpha) ? 1'b1 : 1'b0);
+ end
+ 2'b10 : begin
+ outputPhy_sclkWrite = ((fsm_state ^ io_config_kind_cpha) ? 1'b1 : 1'b0);
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ assign _zz_io_spi_sclk_write[0] = io_config_kind_cpol;
+ assign io_spi_sclk_write = (outputPhy_sclkWrite ^ _zz_io_spi_sclk_write);
+ assign when_SpiXdrMasterCtrl_l798 = (io_cmd_valid && (! io_cmd_payload_kind));
+ always @(*) begin
+ outputPhy_widthSel = 3'bxxx;
+ case(io_config_mod)
+ 2'b00 : begin
+ outputPhy_widthSel = 3'b000;
+ end
+ 2'b01 : begin
+ outputPhy_widthSel = 3'b001;
+ end
+ 2'b10 : begin
+ outputPhy_widthSel = 3'b010;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ outputPhy_offset = 3'bxxx;
+ case(io_config_mod)
+ 2'b00 : begin
+ outputPhy_offset = 3'b111;
+ end
+ 2'b01 : begin
+ outputPhy_offset = 3'b111;
+ end
+ 2'b10 : begin
+ outputPhy_offset = 3'b111;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ outputPhy_dataWrite = 4'bxxxx;
+ case(outputPhy_widthSel)
+ 3'b000 : begin
+ outputPhy_dataWrite[0 : 0] = _zz_outputPhy_dataWrite_3;
+ end
+ 3'b001 : begin
+ outputPhy_dataWrite[1 : 0] = _zz_outputPhy_dataWrite_5;
+ end
+ 3'b010 : begin
+ outputPhy_dataWrite[3 : 0] = _zz_outputPhy_dataWrite_8;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign _zz_outputPhy_dataWrite = io_cmd_payload_data;
+ assign _zz_outputPhy_dataWrite_1 = io_cmd_payload_data;
+ assign _zz_outputPhy_dataWrite_2 = io_cmd_payload_data;
+ always @(*) begin
+ io_spi_data_0_writeEnable = 1'b0;
+ case(io_config_mod)
+ 2'b00 : begin
+ io_spi_data_0_writeEnable = 1'b1;
+ end
+ 2'b01 : begin
+ if(when_SpiXdrMasterCtrl_l841) begin
+ io_spi_data_0_writeEnable = 1'b1;
+ end
+ end
+ 2'b10 : begin
+ if(when_SpiXdrMasterCtrl_l841_1) begin
+ io_spi_data_0_writeEnable = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_1_writeEnable = 1'b0;
+ case(io_config_mod)
+ 2'b01 : begin
+ if(when_SpiXdrMasterCtrl_l841) begin
+ io_spi_data_1_writeEnable = 1'b1;
+ end
+ end
+ 2'b10 : begin
+ if(when_SpiXdrMasterCtrl_l841_1) begin
+ io_spi_data_1_writeEnable = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_2_writeEnable = 1'b0;
+ case(io_config_mod)
+ 2'b10 : begin
+ if(when_SpiXdrMasterCtrl_l841_1) begin
+ io_spi_data_2_writeEnable = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_3_writeEnable = 1'b0;
+ case(io_config_mod)
+ 2'b10 : begin
+ if(when_SpiXdrMasterCtrl_l841_1) begin
+ io_spi_data_3_writeEnable = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_0_write = 1'bx;
+ case(io_config_mod)
+ 2'b00 : begin
+ io_spi_data_0_write[0] = (outputPhy_dataWrite[0] || (! (io_cmd_valid && io_cmd_payload_write)));
+ end
+ 2'b01 : begin
+ io_spi_data_0_write[0] = outputPhy_dataWrite[0];
+ end
+ 2'b10 : begin
+ io_spi_data_0_write[0] = outputPhy_dataWrite[0];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_1_write = 1'bx;
+ case(io_config_mod)
+ 2'b01 : begin
+ io_spi_data_1_write[0] = outputPhy_dataWrite[1];
+ end
+ 2'b10 : begin
+ io_spi_data_1_write[0] = outputPhy_dataWrite[1];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_2_write = 1'bx;
+ case(io_config_mod)
+ 2'b10 : begin
+ io_spi_data_2_write[0] = outputPhy_dataWrite[2];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_3_write = 1'bx;
+ case(io_config_mod)
+ 2'b10 : begin
+ io_spi_data_3_write[0] = outputPhy_dataWrite[3];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_SpiXdrMasterCtrl_l841 = (io_cmd_valid && io_cmd_payload_write);
+ assign when_SpiXdrMasterCtrl_l841_1 = (io_cmd_valid && io_cmd_payload_write);
+ always @(*) begin
+ inputPhy_bufferNext = 8'bxxxxxxxx;
+ case(inputPhy_widthSel)
+ 3'b000 : begin
+ inputPhy_bufferNext = {inputPhy_buffer,inputPhy_dataRead[0 : 0]};
+ end
+ 3'b001 : begin
+ inputPhy_bufferNext = _zz_inputPhy_bufferNext[7:0];
+ end
+ 3'b010 : begin
+ inputPhy_bufferNext = _zz_inputPhy_bufferNext_1[7:0];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ inputPhy_widthSel = 3'bxxx;
+ case(inputPhy_mod)
+ 2'b00 : begin
+ inputPhy_widthSel = 3'b000;
+ end
+ 2'b01 : begin
+ inputPhy_widthSel = 3'b001;
+ end
+ 2'b10 : begin
+ inputPhy_widthSel = 3'b010;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_SpiXdrMasterCtrl_l863 = (! fsm_state_delay_2);
+ always @(*) begin
+ inputPhy_dataRead = 4'bxxxx;
+ case(inputPhy_mod)
+ 2'b00 : begin
+ inputPhy_dataRead[0] = _zz_inputPhy_dataRead[1];
+ end
+ 2'b01 : begin
+ inputPhy_dataRead[0] = _zz_inputPhy_dataRead_1[0];
+ inputPhy_dataRead[1] = _zz_inputPhy_dataRead_2[1];
+ end
+ 2'b10 : begin
+ inputPhy_dataRead[0] = _zz_inputPhy_dataRead_3[0];
+ inputPhy_dataRead[1] = _zz_inputPhy_dataRead_4[1];
+ inputPhy_dataRead[2] = _zz_inputPhy_dataRead_5[2];
+ inputPhy_dataRead[3] = _zz_inputPhy_dataRead_6[3];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign io_rsp_valid = inputPhy_readDone;
+ assign io_rsp_payload_data = inputPhy_bufferNext;
+ always @(posedge clk) begin
+ timer_counter <= (timer_counter + 12'h001);
+ if(timer_reset) begin
+ timer_counter <= 12'h0;
+ end
+ io_config_mod_delay_1 <= io_config_mod;
+ inputPhy_mod <= io_config_mod_delay_1;
+ fsm_state_delay_1 <= fsm_state;
+ fsm_state_delay_2 <= fsm_state_delay_1;
+ if(when_SpiXdrMasterCtrl_l863) begin
+ inputPhy_dataReadBuffer <= {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ end
+ case(inputPhy_widthSel)
+ 3'b000 : begin
+ if(inputPhy_readFill) begin
+ inputPhy_buffer <= inputPhy_bufferNext[6:0];
+ end
+ end
+ 3'b001 : begin
+ if(inputPhy_readFill) begin
+ inputPhy_buffer <= inputPhy_bufferNext[6:0];
+ end
+ end
+ 3'b010 : begin
+ if(inputPhy_readFill) begin
+ inputPhy_buffer <= inputPhy_bufferNext[6:0];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ fsm_state <= 1'b0;
+ fsm_counter <= 3'b000;
+ fsm_ss <= 4'b0000;
+ fsm_readFill_delay_1 <= 1'b0;
+ inputPhy_readFill <= 1'b0;
+ fsm_readDone_delay_1 <= 1'b0;
+ inputPhy_readDone <= 1'b0;
+ end else begin
+ if(io_cmd_valid) begin
+ if(when_SpiXdrMasterCtrl_l741) begin
+ if(timer_sclkToggleHit) begin
+ fsm_state <= (! fsm_state);
+ end
+ if(when_SpiXdrMasterCtrl_l751) begin
+ fsm_counter <= fsm_counterPlus;
+ if(when_SpiXdrMasterCtrl_l753) begin
+ fsm_state <= 1'b0;
+ end
+ end
+ end else begin
+ if(when_SpiXdrMasterCtrl_l760) begin
+ fsm_ss[io_cmd_payload_data[1 : 0]] <= 1'b1;
+ end else begin
+ if(when_SpiXdrMasterCtrl_l766) begin
+ if(timer_ss_holdHit) begin
+ fsm_state <= 1'b1;
+ end
+ end else begin
+ fsm_ss[io_cmd_payload_data[1 : 0]] <= 1'b0;
+ end
+ end
+ end
+ end
+ if(when_SpiXdrMasterCtrl_l783) begin
+ fsm_state <= 1'b0;
+ fsm_counter <= 3'b000;
+ end
+ fsm_readFill_delay_1 <= fsm_readFill;
+ inputPhy_readFill <= fsm_readFill_delay_1;
+ fsm_readDone_delay_1 <= fsm_readDone;
+ inputPhy_readDone <= fsm_readDone_delay_1;
+ end
+ end
+
+
+endmodule
+
+//Axi4PeripheralStreamFifo_1 replaced by Axi4PeripheralStreamFifo_be6ad777990c4e5089d0b11c63cc2698
+
+module Axi4PeripheralStreamFifo_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [7:0] io_push_payload,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [7:0] io_pop_payload,
+ input wire io_flush,
+ output wire [7:0] io_occupancy,
+ output wire [7:0] io_availability,
+ input wire clk,
+ input wire reset
+);
+
+ reg [7:0] logic_ram_spinal_port1;
+ reg _zz_1;
+ wire logic_ptr_doPush;
+ wire logic_ptr_doPop;
+ wire logic_ptr_full;
+ wire logic_ptr_empty;
+ reg [7:0] logic_ptr_push;
+ reg [7:0] logic_ptr_pop;
+ wire [7:0] logic_ptr_occupancy;
+ wire [7:0] logic_ptr_popOnIo;
+ wire when_Stream_l1248;
+ reg logic_ptr_wentUp;
+ wire io_push_fire;
+ wire logic_push_onRam_write_valid;
+ wire [6:0] logic_push_onRam_write_payload_address;
+ wire [7:0] logic_push_onRam_write_payload_data;
+ wire logic_pop_addressGen_valid;
+ reg logic_pop_addressGen_ready;
+ wire [6:0] logic_pop_addressGen_payload;
+ wire logic_pop_addressGen_fire;
+ wire logic_pop_sync_readArbitation_valid;
+ wire logic_pop_sync_readArbitation_ready;
+ wire [6:0] logic_pop_sync_readArbitation_payload;
+ reg logic_pop_addressGen_rValid;
+ reg [6:0] logic_pop_addressGen_rData;
+ wire when_Stream_l375;
+ wire logic_pop_sync_readPort_cmd_valid;
+ wire [6:0] logic_pop_sync_readPort_cmd_payload;
+ wire [7:0] logic_pop_sync_readPort_rsp;
+ wire logic_pop_sync_readArbitation_translated_valid;
+ wire logic_pop_sync_readArbitation_translated_ready;
+ wire [7:0] logic_pop_sync_readArbitation_translated_payload;
+ wire logic_pop_sync_readArbitation_fire;
+ reg [7:0] logic_pop_sync_popReg;
+ reg [7:0] logic_ram [0:127];
+
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_push_onRam_write_payload_address] <= logic_push_onRam_write_payload_data;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_sync_readPort_cmd_valid) begin
+ logic_ram_spinal_port1 <= logic_ram[logic_pop_sync_readPort_cmd_payload];
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_push_onRam_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l1248 = (logic_ptr_doPush != logic_ptr_doPop);
+ assign logic_ptr_full = (((logic_ptr_push ^ logic_ptr_popOnIo) ^ 8'h80) == 8'h0);
+ assign logic_ptr_empty = (logic_ptr_push == logic_ptr_pop);
+ assign logic_ptr_occupancy = (logic_ptr_push - logic_ptr_popOnIo);
+ assign io_push_ready = (! logic_ptr_full);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign logic_ptr_doPush = io_push_fire;
+ assign logic_push_onRam_write_valid = io_push_fire;
+ assign logic_push_onRam_write_payload_address = logic_ptr_push[6:0];
+ assign logic_push_onRam_write_payload_data = io_push_payload;
+ assign logic_pop_addressGen_valid = (! logic_ptr_empty);
+ assign logic_pop_addressGen_payload = logic_ptr_pop[6:0];
+ assign logic_pop_addressGen_fire = (logic_pop_addressGen_valid && logic_pop_addressGen_ready);
+ assign logic_ptr_doPop = logic_pop_addressGen_fire;
+ always @(*) begin
+ logic_pop_addressGen_ready = logic_pop_sync_readArbitation_ready;
+ if(when_Stream_l375) begin
+ logic_pop_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! logic_pop_sync_readArbitation_valid);
+ assign logic_pop_sync_readArbitation_valid = logic_pop_addressGen_rValid;
+ assign logic_pop_sync_readArbitation_payload = logic_pop_addressGen_rData;
+ assign logic_pop_sync_readPort_rsp = logic_ram_spinal_port1;
+ assign logic_pop_sync_readPort_cmd_valid = logic_pop_addressGen_fire;
+ assign logic_pop_sync_readPort_cmd_payload = logic_pop_addressGen_payload;
+ assign logic_pop_sync_readArbitation_translated_valid = logic_pop_sync_readArbitation_valid;
+ assign logic_pop_sync_readArbitation_ready = logic_pop_sync_readArbitation_translated_ready;
+ assign logic_pop_sync_readArbitation_translated_payload = logic_pop_sync_readPort_rsp;
+ assign io_pop_valid = logic_pop_sync_readArbitation_translated_valid;
+ assign logic_pop_sync_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload = logic_pop_sync_readArbitation_translated_payload;
+ assign logic_pop_sync_readArbitation_fire = (logic_pop_sync_readArbitation_valid && logic_pop_sync_readArbitation_ready);
+ assign logic_ptr_popOnIo = logic_pop_sync_popReg;
+ assign io_occupancy = logic_ptr_occupancy;
+ assign io_availability = (8'h80 - logic_ptr_occupancy);
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_ptr_push <= 8'h0;
+ logic_ptr_pop <= 8'h0;
+ logic_ptr_wentUp <= 1'b0;
+ logic_pop_addressGen_rValid <= 1'b0;
+ logic_pop_sync_popReg <= 8'h0;
+ end else begin
+ if(when_Stream_l1248) begin
+ logic_ptr_wentUp <= logic_ptr_doPush;
+ end
+ if(io_flush) begin
+ logic_ptr_wentUp <= 1'b0;
+ end
+ if(logic_ptr_doPush) begin
+ logic_ptr_push <= (logic_ptr_push + 8'h01);
+ end
+ if(logic_ptr_doPop) begin
+ logic_ptr_pop <= (logic_ptr_pop + 8'h01);
+ end
+ if(io_flush) begin
+ logic_ptr_push <= 8'h0;
+ logic_ptr_pop <= 8'h0;
+ end
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rValid <= logic_pop_addressGen_valid;
+ end
+ if(io_flush) begin
+ logic_pop_addressGen_rValid <= 1'b0;
+ end
+ if(logic_pop_sync_readArbitation_fire) begin
+ logic_pop_sync_popReg <= logic_ptr_pop;
+ end
+ if(io_flush) begin
+ logic_pop_sync_popReg <= 8'h0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rData <= logic_pop_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralUartCtrl_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire [2:0] io_config_frame_dataLength,
+ input wire [0:0] io_config_frame_stop,
+ input wire [1:0] io_config_frame_parity,
+ input wire [19:0] io_config_clockDivider,
+ input wire io_write_valid,
+ output reg io_write_ready,
+ input wire [7:0] io_write_payload,
+ output wire io_read_valid,
+ input wire io_read_ready,
+ output wire [7:0] io_read_payload,
+ output wire io_uart_txd,
+ input wire io_uart_rxd,
+ output wire io_readError,
+ input wire io_writeBreak,
+ output wire io_readBreak,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4PeripheralUartStopType_ONE = 1'd0;
+ localparam Axi4PeripheralUartStopType_TWO = 1'd1;
+ localparam Axi4PeripheralUartParityType_NONE = 2'd0;
+ localparam Axi4PeripheralUartParityType_EVEN = 2'd1;
+ localparam Axi4PeripheralUartParityType_ODD = 2'd2;
+
+ wire tx_io_write_ready;
+ wire tx_io_txd;
+ wire rx_io_read_valid;
+ wire [7:0] rx_io_read_payload;
+ wire rx_io_rts;
+ wire rx_io_error;
+ wire rx_io_break;
+ reg [19:0] clockDivider_counter;
+ wire clockDivider_tick;
+ reg clockDivider_tickReg;
+ reg io_write_thrown_valid;
+ wire io_write_thrown_ready;
+ wire [7:0] io_write_thrown_payload;
+ `ifndef SYNTHESIS
+ reg [23:0] io_config_frame_stop_string;
+ reg [31:0] io_config_frame_parity_string;
+ `endif
+
+
+ Axi4PeripheralUartCtrlTx_be6ad777990c4e5089d0b11c63cc2698 tx (
+ .io_configFrame_dataLength (io_config_frame_dataLength[2:0]), //i
+ .io_configFrame_stop (io_config_frame_stop ), //i
+ .io_configFrame_parity (io_config_frame_parity[1:0] ), //i
+ .io_samplingTick (clockDivider_tickReg ), //i
+ .io_write_valid (io_write_thrown_valid ), //i
+ .io_write_ready (tx_io_write_ready ), //o
+ .io_write_payload (io_write_thrown_payload[7:0] ), //i
+ .io_cts (1'b0 ), //i
+ .io_txd (tx_io_txd ), //o
+ .io_break (io_writeBreak ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralUartCtrlRx_be6ad777990c4e5089d0b11c63cc2698 rx (
+ .io_configFrame_dataLength (io_config_frame_dataLength[2:0]), //i
+ .io_configFrame_stop (io_config_frame_stop ), //i
+ .io_configFrame_parity (io_config_frame_parity[1:0] ), //i
+ .io_samplingTick (clockDivider_tickReg ), //i
+ .io_read_valid (rx_io_read_valid ), //o
+ .io_read_ready (io_read_ready ), //i
+ .io_read_payload (rx_io_read_payload[7:0] ), //o
+ .io_rxd (io_uart_rxd ), //i
+ .io_rts (rx_io_rts ), //o
+ .io_error (rx_io_error ), //o
+ .io_break (rx_io_break ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(io_config_frame_stop)
+ Axi4PeripheralUartStopType_ONE : io_config_frame_stop_string = "ONE";
+ Axi4PeripheralUartStopType_TWO : io_config_frame_stop_string = "TWO";
+ default : io_config_frame_stop_string = "???";
+ endcase
+ end
+ always @(*) begin
+ case(io_config_frame_parity)
+ Axi4PeripheralUartParityType_NONE : io_config_frame_parity_string = "NONE";
+ Axi4PeripheralUartParityType_EVEN : io_config_frame_parity_string = "EVEN";
+ Axi4PeripheralUartParityType_ODD : io_config_frame_parity_string = "ODD ";
+ default : io_config_frame_parity_string = "????";
+ endcase
+ end
+ `endif
+
+ assign clockDivider_tick = (clockDivider_counter == 20'h0);
+ always @(*) begin
+ io_write_thrown_valid = io_write_valid;
+ if(rx_io_break) begin
+ io_write_thrown_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ io_write_ready = io_write_thrown_ready;
+ if(rx_io_break) begin
+ io_write_ready = 1'b1;
+ end
+ end
+
+ assign io_write_thrown_payload = io_write_payload;
+ assign io_write_thrown_ready = tx_io_write_ready;
+ assign io_read_valid = rx_io_read_valid;
+ assign io_read_payload = rx_io_read_payload;
+ assign io_uart_txd = tx_io_txd;
+ assign io_readError = rx_io_error;
+ assign io_readBreak = rx_io_break;
+ always @(posedge clk) begin
+ if(reset) begin
+ clockDivider_counter <= 20'h0;
+ clockDivider_tickReg <= 1'b0;
+ end else begin
+ clockDivider_tickReg <= clockDivider_tick;
+ clockDivider_counter <= (clockDivider_counter - 20'h00001);
+ if(clockDivider_tick) begin
+ clockDivider_counter <= io_config_clockDivider;
+ end
+ end
+ end
+
+
+endmodule
+
+//Axi4PeripheralBufferCC_2 replaced by Axi4PeripheralBufferCC_1_be6ad777990c4e5089d0b11c63cc2698
+
+module Axi4PeripheralBufferCC_1_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_dataIn,
+ output wire io_dataOut,
+ input wire clk,
+ input wire reset
+);
+
+ (* async_reg = "true" *) reg buffers_0;
+ (* async_reg = "true" *) reg buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge clk) begin
+ if(reset) begin
+ buffers_0 <= 1'b1;
+ buffers_1 <= 1'b1;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralUartCtrlRx_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire [2:0] io_configFrame_dataLength,
+ input wire [0:0] io_configFrame_stop,
+ input wire [1:0] io_configFrame_parity,
+ input wire io_samplingTick,
+ output wire io_read_valid,
+ input wire io_read_ready,
+ output wire [7:0] io_read_payload,
+ input wire io_rxd,
+ output wire io_rts,
+ output reg io_error,
+ output wire io_break,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4PeripheralUartStopType_ONE = 1'd0;
+ localparam Axi4PeripheralUartStopType_TWO = 1'd1;
+ localparam Axi4PeripheralUartParityType_NONE = 2'd0;
+ localparam Axi4PeripheralUartParityType_EVEN = 2'd1;
+ localparam Axi4PeripheralUartParityType_ODD = 2'd2;
+ localparam Axi4PeripheralUartCtrlRxState_IDLE = 3'd0;
+ localparam Axi4PeripheralUartCtrlRxState_START = 3'd1;
+ localparam Axi4PeripheralUartCtrlRxState_DATA = 3'd2;
+ localparam Axi4PeripheralUartCtrlRxState_PARITY = 3'd3;
+ localparam Axi4PeripheralUartCtrlRxState_STOP = 3'd4;
+
+ wire io_rxd_buffercc_io_dataOut;
+ wire _zz_sampler_value;
+ wire _zz_sampler_value_1;
+ wire _zz_sampler_value_2;
+ wire _zz_sampler_value_3;
+ wire _zz_sampler_value_4;
+ wire _zz_sampler_value_5;
+ wire _zz_sampler_value_6;
+ wire [2:0] _zz_when_UartCtrlRx_l139;
+ wire [0:0] _zz_when_UartCtrlRx_l139_1;
+ reg _zz_io_rts;
+ wire sampler_synchroniser;
+ wire sampler_samples_0;
+ reg sampler_samples_1;
+ reg sampler_samples_2;
+ reg sampler_samples_3;
+ reg sampler_samples_4;
+ reg sampler_value;
+ reg sampler_tick;
+ reg [2:0] bitTimer_counter;
+ reg bitTimer_tick;
+ wire when_UartCtrlRx_l43;
+ reg [2:0] bitCounter_value;
+ reg [6:0] break_counter;
+ wire break_valid;
+ wire when_UartCtrlRx_l69;
+ reg [2:0] stateMachine_state;
+ reg stateMachine_parity;
+ reg [7:0] stateMachine_shifter;
+ reg stateMachine_validReg;
+ wire when_UartCtrlRx_l93;
+ wire when_UartCtrlRx_l103;
+ wire when_UartCtrlRx_l111;
+ wire when_UartCtrlRx_l113;
+ wire when_UartCtrlRx_l125;
+ wire when_UartCtrlRx_l136;
+ wire when_UartCtrlRx_l139;
+ `ifndef SYNTHESIS
+ reg [23:0] io_configFrame_stop_string;
+ reg [31:0] io_configFrame_parity_string;
+ reg [47:0] stateMachine_state_string;
+ `endif
+
+
+ assign _zz_when_UartCtrlRx_l139_1 = ((io_configFrame_stop == Axi4PeripheralUartStopType_ONE) ? 1'b0 : 1'b1);
+ assign _zz_when_UartCtrlRx_l139 = {2'd0, _zz_when_UartCtrlRx_l139_1};
+ assign _zz_sampler_value = ((((1'b0 || ((_zz_sampler_value_1 && sampler_samples_1) && sampler_samples_2)) || (((_zz_sampler_value_2 && sampler_samples_0) && sampler_samples_1) && sampler_samples_3)) || (((1'b1 && sampler_samples_0) && sampler_samples_2) && sampler_samples_3)) || (((1'b1 && sampler_samples_1) && sampler_samples_2) && sampler_samples_3));
+ assign _zz_sampler_value_3 = (((1'b1 && sampler_samples_0) && sampler_samples_1) && sampler_samples_4);
+ assign _zz_sampler_value_4 = ((1'b1 && sampler_samples_0) && sampler_samples_2);
+ assign _zz_sampler_value_5 = (1'b1 && sampler_samples_1);
+ assign _zz_sampler_value_6 = 1'b1;
+ assign _zz_sampler_value_1 = (1'b1 && sampler_samples_0);
+ assign _zz_sampler_value_2 = 1'b1;
+ (* keep_hierarchy = "TRUE" *) Axi4PeripheralBufferCC_be6ad777990c4e5089d0b11c63cc2698 io_rxd_buffercc (
+ .io_dataIn (io_rxd ), //i
+ .io_dataOut (io_rxd_buffercc_io_dataOut), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(io_configFrame_stop)
+ Axi4PeripheralUartStopType_ONE : io_configFrame_stop_string = "ONE";
+ Axi4PeripheralUartStopType_TWO : io_configFrame_stop_string = "TWO";
+ default : io_configFrame_stop_string = "???";
+ endcase
+ end
+ always @(*) begin
+ case(io_configFrame_parity)
+ Axi4PeripheralUartParityType_NONE : io_configFrame_parity_string = "NONE";
+ Axi4PeripheralUartParityType_EVEN : io_configFrame_parity_string = "EVEN";
+ Axi4PeripheralUartParityType_ODD : io_configFrame_parity_string = "ODD ";
+ default : io_configFrame_parity_string = "????";
+ endcase
+ end
+ always @(*) begin
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlRxState_IDLE : stateMachine_state_string = "IDLE ";
+ Axi4PeripheralUartCtrlRxState_START : stateMachine_state_string = "START ";
+ Axi4PeripheralUartCtrlRxState_DATA : stateMachine_state_string = "DATA ";
+ Axi4PeripheralUartCtrlRxState_PARITY : stateMachine_state_string = "PARITY";
+ Axi4PeripheralUartCtrlRxState_STOP : stateMachine_state_string = "STOP ";
+ default : stateMachine_state_string = "??????";
+ endcase
+ end
+ `endif
+
+ always @(*) begin
+ io_error = 1'b0;
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlRxState_IDLE : begin
+ end
+ Axi4PeripheralUartCtrlRxState_START : begin
+ end
+ Axi4PeripheralUartCtrlRxState_DATA : begin
+ end
+ Axi4PeripheralUartCtrlRxState_PARITY : begin
+ if(bitTimer_tick) begin
+ if(!when_UartCtrlRx_l125) begin
+ io_error = 1'b1;
+ end
+ end
+ end
+ default : begin
+ if(bitTimer_tick) begin
+ if(when_UartCtrlRx_l136) begin
+ io_error = 1'b1;
+ end
+ end
+ end
+ endcase
+ end
+
+ assign io_rts = _zz_io_rts;
+ assign sampler_synchroniser = io_rxd_buffercc_io_dataOut;
+ assign sampler_samples_0 = sampler_synchroniser;
+ always @(*) begin
+ bitTimer_tick = 1'b0;
+ if(sampler_tick) begin
+ if(when_UartCtrlRx_l43) begin
+ bitTimer_tick = 1'b1;
+ end
+ end
+ end
+
+ assign when_UartCtrlRx_l43 = (bitTimer_counter == 3'b000);
+ assign break_valid = (break_counter == 7'h68);
+ assign when_UartCtrlRx_l69 = (io_samplingTick && (! break_valid));
+ assign io_break = break_valid;
+ assign io_read_valid = stateMachine_validReg;
+ assign when_UartCtrlRx_l93 = ((sampler_tick && (! sampler_value)) && (! break_valid));
+ assign when_UartCtrlRx_l103 = (sampler_value == 1'b1);
+ assign when_UartCtrlRx_l111 = (bitCounter_value == io_configFrame_dataLength);
+ assign when_UartCtrlRx_l113 = (io_configFrame_parity == Axi4PeripheralUartParityType_NONE);
+ assign when_UartCtrlRx_l125 = (stateMachine_parity == sampler_value);
+ assign when_UartCtrlRx_l136 = (! sampler_value);
+ assign when_UartCtrlRx_l139 = (bitCounter_value == _zz_when_UartCtrlRx_l139);
+ assign io_read_payload = stateMachine_shifter;
+ always @(posedge clk) begin
+ if(reset) begin
+ _zz_io_rts <= 1'b0;
+ sampler_samples_1 <= 1'b1;
+ sampler_samples_2 <= 1'b1;
+ sampler_samples_3 <= 1'b1;
+ sampler_samples_4 <= 1'b1;
+ sampler_value <= 1'b1;
+ sampler_tick <= 1'b0;
+ break_counter <= 7'h0;
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_IDLE;
+ stateMachine_validReg <= 1'b0;
+ end else begin
+ _zz_io_rts <= (! io_read_ready);
+ if(io_samplingTick) begin
+ sampler_samples_1 <= sampler_samples_0;
+ end
+ if(io_samplingTick) begin
+ sampler_samples_2 <= sampler_samples_1;
+ end
+ if(io_samplingTick) begin
+ sampler_samples_3 <= sampler_samples_2;
+ end
+ if(io_samplingTick) begin
+ sampler_samples_4 <= sampler_samples_3;
+ end
+ sampler_value <= ((((((_zz_sampler_value || _zz_sampler_value_3) || (_zz_sampler_value_4 && sampler_samples_4)) || ((_zz_sampler_value_5 && sampler_samples_2) && sampler_samples_4)) || (((_zz_sampler_value_6 && sampler_samples_0) && sampler_samples_3) && sampler_samples_4)) || (((1'b1 && sampler_samples_1) && sampler_samples_3) && sampler_samples_4)) || (((1'b1 && sampler_samples_2) && sampler_samples_3) && sampler_samples_4));
+ sampler_tick <= io_samplingTick;
+ if(sampler_value) begin
+ break_counter <= 7'h0;
+ end else begin
+ if(when_UartCtrlRx_l69) begin
+ break_counter <= (break_counter + 7'h01);
+ end
+ end
+ stateMachine_validReg <= 1'b0;
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlRxState_IDLE : begin
+ if(when_UartCtrlRx_l93) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_START;
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_START : begin
+ if(bitTimer_tick) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_DATA;
+ if(when_UartCtrlRx_l103) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_IDLE;
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_DATA : begin
+ if(bitTimer_tick) begin
+ if(when_UartCtrlRx_l111) begin
+ if(when_UartCtrlRx_l113) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_STOP;
+ stateMachine_validReg <= 1'b1;
+ end else begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_PARITY;
+ end
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_PARITY : begin
+ if(bitTimer_tick) begin
+ if(when_UartCtrlRx_l125) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_STOP;
+ stateMachine_validReg <= 1'b1;
+ end else begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_IDLE;
+ end
+ end
+ end
+ default : begin
+ if(bitTimer_tick) begin
+ if(when_UartCtrlRx_l136) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_IDLE;
+ end else begin
+ if(when_UartCtrlRx_l139) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_IDLE;
+ end
+ end
+ end
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(sampler_tick) begin
+ bitTimer_counter <= (bitTimer_counter - 3'b001);
+ end
+ if(bitTimer_tick) begin
+ bitCounter_value <= (bitCounter_value + 3'b001);
+ end
+ if(bitTimer_tick) begin
+ stateMachine_parity <= (stateMachine_parity ^ sampler_value);
+ end
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlRxState_IDLE : begin
+ if(when_UartCtrlRx_l93) begin
+ bitTimer_counter <= 3'b010;
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_START : begin
+ if(bitTimer_tick) begin
+ bitCounter_value <= 3'b000;
+ stateMachine_parity <= (io_configFrame_parity == Axi4PeripheralUartParityType_ODD);
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_DATA : begin
+ if(bitTimer_tick) begin
+ stateMachine_shifter[bitCounter_value] <= sampler_value;
+ if(when_UartCtrlRx_l111) begin
+ bitCounter_value <= 3'b000;
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_PARITY : begin
+ if(bitTimer_tick) begin
+ bitCounter_value <= 3'b000;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+
+endmodule
+
+module Axi4PeripheralUartCtrlTx_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire [2:0] io_configFrame_dataLength,
+ input wire [0:0] io_configFrame_stop,
+ input wire [1:0] io_configFrame_parity,
+ input wire io_samplingTick,
+ input wire io_write_valid,
+ output reg io_write_ready,
+ input wire [7:0] io_write_payload,
+ input wire io_cts,
+ output wire io_txd,
+ input wire io_break,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4PeripheralUartStopType_ONE = 1'd0;
+ localparam Axi4PeripheralUartStopType_TWO = 1'd1;
+ localparam Axi4PeripheralUartParityType_NONE = 2'd0;
+ localparam Axi4PeripheralUartParityType_EVEN = 2'd1;
+ localparam Axi4PeripheralUartParityType_ODD = 2'd2;
+ localparam Axi4PeripheralUartCtrlTxState_IDLE = 3'd0;
+ localparam Axi4PeripheralUartCtrlTxState_START = 3'd1;
+ localparam Axi4PeripheralUartCtrlTxState_DATA = 3'd2;
+ localparam Axi4PeripheralUartCtrlTxState_PARITY = 3'd3;
+ localparam Axi4PeripheralUartCtrlTxState_STOP = 3'd4;
+
+ wire [2:0] _zz_clockDivider_counter_valueNext;
+ wire [0:0] _zz_clockDivider_counter_valueNext_1;
+ wire [2:0] _zz_when_UartCtrlTx_l93;
+ wire [0:0] _zz_when_UartCtrlTx_l93_1;
+ reg clockDivider_counter_willIncrement;
+ wire clockDivider_counter_willClear;
+ reg [2:0] clockDivider_counter_valueNext;
+ reg [2:0] clockDivider_counter_value;
+ wire clockDivider_counter_willOverflowIfInc;
+ wire clockDivider_counter_willOverflow;
+ reg [2:0] tickCounter_value;
+ reg [2:0] stateMachine_state;
+ reg stateMachine_parity;
+ reg stateMachine_txd;
+ wire when_UartCtrlTx_l58;
+ wire when_UartCtrlTx_l73;
+ wire when_UartCtrlTx_l76;
+ wire when_UartCtrlTx_l93;
+ wire [2:0] _zz_stateMachine_state;
+ reg _zz_io_txd;
+ `ifndef SYNTHESIS
+ reg [23:0] io_configFrame_stop_string;
+ reg [31:0] io_configFrame_parity_string;
+ reg [47:0] stateMachine_state_string;
+ reg [47:0] _zz_stateMachine_state_string;
+ `endif
+
+
+ assign _zz_clockDivider_counter_valueNext_1 = clockDivider_counter_willIncrement;
+ assign _zz_clockDivider_counter_valueNext = {2'd0, _zz_clockDivider_counter_valueNext_1};
+ assign _zz_when_UartCtrlTx_l93_1 = ((io_configFrame_stop == Axi4PeripheralUartStopType_ONE) ? 1'b0 : 1'b1);
+ assign _zz_when_UartCtrlTx_l93 = {2'd0, _zz_when_UartCtrlTx_l93_1};
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(io_configFrame_stop)
+ Axi4PeripheralUartStopType_ONE : io_configFrame_stop_string = "ONE";
+ Axi4PeripheralUartStopType_TWO : io_configFrame_stop_string = "TWO";
+ default : io_configFrame_stop_string = "???";
+ endcase
+ end
+ always @(*) begin
+ case(io_configFrame_parity)
+ Axi4PeripheralUartParityType_NONE : io_configFrame_parity_string = "NONE";
+ Axi4PeripheralUartParityType_EVEN : io_configFrame_parity_string = "EVEN";
+ Axi4PeripheralUartParityType_ODD : io_configFrame_parity_string = "ODD ";
+ default : io_configFrame_parity_string = "????";
+ endcase
+ end
+ always @(*) begin
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : stateMachine_state_string = "IDLE ";
+ Axi4PeripheralUartCtrlTxState_START : stateMachine_state_string = "START ";
+ Axi4PeripheralUartCtrlTxState_DATA : stateMachine_state_string = "DATA ";
+ Axi4PeripheralUartCtrlTxState_PARITY : stateMachine_state_string = "PARITY";
+ Axi4PeripheralUartCtrlTxState_STOP : stateMachine_state_string = "STOP ";
+ default : stateMachine_state_string = "??????";
+ endcase
+ end
+ always @(*) begin
+ case(_zz_stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : _zz_stateMachine_state_string = "IDLE ";
+ Axi4PeripheralUartCtrlTxState_START : _zz_stateMachine_state_string = "START ";
+ Axi4PeripheralUartCtrlTxState_DATA : _zz_stateMachine_state_string = "DATA ";
+ Axi4PeripheralUartCtrlTxState_PARITY : _zz_stateMachine_state_string = "PARITY";
+ Axi4PeripheralUartCtrlTxState_STOP : _zz_stateMachine_state_string = "STOP ";
+ default : _zz_stateMachine_state_string = "??????";
+ endcase
+ end
+ `endif
+
+ always @(*) begin
+ clockDivider_counter_willIncrement = 1'b0;
+ if(io_samplingTick) begin
+ clockDivider_counter_willIncrement = 1'b1;
+ end
+ end
+
+ assign clockDivider_counter_willClear = 1'b0;
+ assign clockDivider_counter_willOverflowIfInc = (clockDivider_counter_value == 3'b111);
+ assign clockDivider_counter_willOverflow = (clockDivider_counter_willOverflowIfInc && clockDivider_counter_willIncrement);
+ always @(*) begin
+ clockDivider_counter_valueNext = (clockDivider_counter_value + _zz_clockDivider_counter_valueNext);
+ if(clockDivider_counter_willClear) begin
+ clockDivider_counter_valueNext = 3'b000;
+ end
+ end
+
+ always @(*) begin
+ stateMachine_txd = 1'b1;
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : begin
+ end
+ Axi4PeripheralUartCtrlTxState_START : begin
+ stateMachine_txd = 1'b0;
+ end
+ Axi4PeripheralUartCtrlTxState_DATA : begin
+ stateMachine_txd = io_write_payload[tickCounter_value];
+ end
+ Axi4PeripheralUartCtrlTxState_PARITY : begin
+ stateMachine_txd = stateMachine_parity;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_write_ready = io_break;
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : begin
+ end
+ Axi4PeripheralUartCtrlTxState_START : begin
+ end
+ Axi4PeripheralUartCtrlTxState_DATA : begin
+ if(clockDivider_counter_willOverflow) begin
+ if(when_UartCtrlTx_l73) begin
+ io_write_ready = 1'b1;
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_PARITY : begin
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_UartCtrlTx_l58 = ((io_write_valid && (! io_cts)) && clockDivider_counter_willOverflow);
+ assign when_UartCtrlTx_l73 = (tickCounter_value == io_configFrame_dataLength);
+ assign when_UartCtrlTx_l76 = (io_configFrame_parity == Axi4PeripheralUartParityType_NONE);
+ assign when_UartCtrlTx_l93 = (tickCounter_value == _zz_when_UartCtrlTx_l93);
+ assign _zz_stateMachine_state = (io_write_valid ? Axi4PeripheralUartCtrlTxState_START : Axi4PeripheralUartCtrlTxState_IDLE);
+ assign io_txd = _zz_io_txd;
+ always @(posedge clk) begin
+ if(reset) begin
+ clockDivider_counter_value <= 3'b000;
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_IDLE;
+ _zz_io_txd <= 1'b1;
+ end else begin
+ clockDivider_counter_value <= clockDivider_counter_valueNext;
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : begin
+ if(when_UartCtrlTx_l58) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_START;
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_START : begin
+ if(clockDivider_counter_willOverflow) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_DATA;
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_DATA : begin
+ if(clockDivider_counter_willOverflow) begin
+ if(when_UartCtrlTx_l73) begin
+ if(when_UartCtrlTx_l76) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_STOP;
+ end else begin
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_PARITY;
+ end
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_PARITY : begin
+ if(clockDivider_counter_willOverflow) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_STOP;
+ end
+ end
+ default : begin
+ if(clockDivider_counter_willOverflow) begin
+ if(when_UartCtrlTx_l93) begin
+ stateMachine_state <= _zz_stateMachine_state;
+ end
+ end
+ end
+ endcase
+ _zz_io_txd <= (stateMachine_txd && (! io_break));
+ end
+ end
+
+ always @(posedge clk) begin
+ if(clockDivider_counter_willOverflow) begin
+ tickCounter_value <= (tickCounter_value + 3'b001);
+ end
+ if(clockDivider_counter_willOverflow) begin
+ stateMachine_parity <= (stateMachine_parity ^ stateMachine_txd);
+ end
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : begin
+ end
+ Axi4PeripheralUartCtrlTxState_START : begin
+ if(clockDivider_counter_willOverflow) begin
+ stateMachine_parity <= (io_configFrame_parity == Axi4PeripheralUartParityType_ODD);
+ tickCounter_value <= 3'b000;
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_DATA : begin
+ if(clockDivider_counter_willOverflow) begin
+ if(when_UartCtrlTx_l73) begin
+ tickCounter_value <= 3'b000;
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_PARITY : begin
+ if(clockDivider_counter_willOverflow) begin
+ tickCounter_value <= 3'b000;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+
+endmodule
+
+module Axi4PeripheralBufferCC_be6ad777990c4e5089d0b11c63cc2698 (
+ input wire io_dataIn,
+ output wire io_dataOut,
+ input wire clk,
+ input wire reset
+);
+
+ (* async_reg = "true" *) reg buffers_0;
+ (* async_reg = "true" *) reg buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge clk) begin
+ if(reset) begin
+ buffers_0 <= 1'b0;
+ buffers_1 <= 1'b0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+`undef IP_UUID
+`undef IP_NAME_CONCAT
+`undef IP_MODULE_NAME
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_define.vh b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_define.vh
new file mode 100644
index 0000000..3efcf53
--- /dev/null
+++ b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_define.vh
@@ -0,0 +1,46 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 1.23.0
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+localparam PERI_FREQ = 200;
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_tmpl.v b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_tmpl.v
new file mode 100644
index 0000000..8b0ee7a
--- /dev/null
+++ b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_tmpl.v
@@ -0,0 +1,148 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 1.23.0
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+EfxSapphireHpSoc_slb u_EfxSapphireHpSoc_slb
+(
+ .io_peripheralClk ( io_peripheralClk ),
+ .io_peripheralReset ( io_peripheralReset ),
+ .io_asyncReset ( io_asyncReset ),
+ .io_gpio_sw_n ( io_gpio_sw_n ),
+ .pll_peripheral_locked ( pll_peripheral_locked ),
+ .pll_system_locked ( pll_system_locked ),
+ .jtagCtrl_capture ( jtagCtrl_capture ),
+ .jtagCtrl_enable ( jtagCtrl_enable ),
+ .jtagCtrl_reset ( jtagCtrl_reset ),
+ .jtagCtrl_shift ( jtagCtrl_shift ),
+ .jtagCtrl_tdi ( jtagCtrl_tdi ),
+ .jtagCtrl_tdo ( jtagCtrl_tdo ),
+ .jtagCtrl_update ( jtagCtrl_update ),
+ .ut_jtagCtrl_capture ( ut_jtagCtrl_capture ),
+ .ut_jtagCtrl_enable ( ut_jtagCtrl_enable ),
+ .ut_jtagCtrl_reset ( ut_jtagCtrl_reset ),
+ .ut_jtagCtrl_shift ( ut_jtagCtrl_shift ),
+ .ut_jtagCtrl_tdi ( ut_jtagCtrl_tdi ),
+ .ut_jtagCtrl_tdo ( ut_jtagCtrl_tdo ),
+ .ut_jtagCtrl_update ( ut_jtagCtrl_update ),
+ .system_spi_0_io_data_0_read ( system_spi_0_io_data_0_read ),
+ .system_spi_0_io_data_0_write ( system_spi_0_io_data_0_write ),
+ .system_spi_0_io_data_0_writeEnable ( system_spi_0_io_data_0_writeEnable ),
+ .system_spi_0_io_data_1_read ( system_spi_0_io_data_1_read ),
+ .system_spi_0_io_data_1_write ( system_spi_0_io_data_1_write ),
+ .system_spi_0_io_data_1_writeEnable ( system_spi_0_io_data_1_writeEnable ),
+ .system_spi_0_io_data_2_read ( system_spi_0_io_data_2_read ),
+ .system_spi_0_io_data_2_write ( system_spi_0_io_data_2_write ),
+ .system_spi_0_io_data_2_writeEnable ( system_spi_0_io_data_2_writeEnable ),
+ .system_spi_0_io_data_3_read ( system_spi_0_io_data_3_read ),
+ .system_spi_0_io_data_3_write ( system_spi_0_io_data_3_write ),
+ .system_spi_0_io_data_3_writeEnable ( system_spi_0_io_data_3_writeEnable ),
+ .system_spi_0_io_sclk_write ( system_spi_0_io_sclk_write ),
+ .system_spi_0_io_ss ( system_spi_0_io_ss ),
+ .system_uart_0_io_rxd ( system_uart_0_io_rxd ),
+ .system_uart_0_io_txd ( system_uart_0_io_txd ),
+ .system_i2c_0_io_scl_read ( system_i2c_0_io_scl_read ),
+ .system_i2c_0_io_scl_write ( system_i2c_0_io_scl_write ),
+ .system_i2c_0_io_sda_read ( system_i2c_0_io_sda_read ),
+ .system_gpio_0_io_read ( system_gpio_0_io_read ),
+ .system_gpio_0_io_write ( system_gpio_0_io_write ),
+ .system_gpio_0_io_writeEnable ( system_gpio_0_io_writeEnable ),
+ .cfg_done ( cfg_done ),
+ .cfg_start ( cfg_start ),
+ .cfg_sel ( cfg_sel ),
+ .cfg_reset ( cfg_reset ),
+ .axiAInterrupt ( axiAInterrupt ),
+ .axiA_awaddr ( axiA_awaddr ),
+ .axiA_awlen ( axiA_awlen ),
+ .axiA_awsize ( axiA_awsize ),
+ .axiA_awburst ( axiA_awburst ),
+ .axiA_awlock ( axiA_awlock ),
+ .axiA_awcache ( axiA_awcache ),
+ .axiA_awprot ( axiA_awprot ),
+ .axiA_awqos ( axiA_awqos ),
+ .axiA_awregion ( axiA_awregion ),
+ .axiA_awvalid ( axiA_awvalid ),
+ .axiA_awready ( axiA_awready ),
+ .axiA_wdata ( axiA_wdata ),
+ .axiA_wstrb ( axiA_wstrb ),
+ .axiA_wvalid ( axiA_wvalid ),
+ .axiA_wlast ( axiA_wlast ),
+ .axiA_wready ( axiA_wready ),
+ .axiA_bresp ( axiA_bresp ),
+ .axiA_bvalid ( axiA_bvalid ),
+ .axiA_bready ( axiA_bready ),
+ .axiA_araddr ( axiA_araddr ),
+ .axiA_arlen ( axiA_arlen ),
+ .axiA_arsize ( axiA_arsize ),
+ .axiA_arburst ( axiA_arburst ),
+ .axiA_arlock ( axiA_arlock ),
+ .axiA_arcache ( axiA_arcache ),
+ .axiA_arprot ( axiA_arprot ),
+ .axiA_arqos ( axiA_arqos ),
+ .axiA_arregion ( axiA_arregion ),
+ .axiA_arvalid ( axiA_arvalid ),
+ .axiA_arready ( axiA_arready ),
+ .axiA_rdata ( axiA_rdata ),
+ .axiA_rresp ( axiA_rresp ),
+ .axiA_rlast ( axiA_rlast ),
+ .axiA_rvalid ( axiA_rvalid ),
+ .axiA_rready ( axiA_rready ),
+ .userInterruptA ( userInterruptA ),
+ .userInterruptB ( userInterruptB ),
+ .userInterruptC ( userInterruptC ),
+ .userInterruptD ( userInterruptD ),
+ .userInterruptE ( userInterruptE ),
+ .userInterruptF ( userInterruptF ),
+ .io_apbSlave_0_PADDR ( io_apbSlave_0_PADDR ),
+ .io_apbSlave_0_PENABLE ( io_apbSlave_0_PENABLE ),
+ .io_apbSlave_0_PRDATA ( io_apbSlave_0_PRDATA ),
+ .io_apbSlave_0_PREADY ( io_apbSlave_0_PREADY ),
+ .io_apbSlave_0_PSEL ( io_apbSlave_0_PSEL ),
+ .io_apbSlave_0_PSLVERROR ( io_apbSlave_0_PSLVERROR ),
+ .io_apbSlave_0_PWDATA ( io_apbSlave_0_PWDATA ),
+ .io_apbSlave_0_PWRITE ( io_apbSlave_0_PWRITE ),
+ .system_i2c_0_io_sda_write ( system_i2c_0_io_sda_write ),
+ .system_i2c_0_io_sda_writeEnable ( system_i2c_0_io_sda_writeEnable ),
+ .system_i2c_0_io_scl_writeEnable ( system_i2c_0_io_scl_writeEnable ),
+ .system_watchdog_hardPanic_reset ( system_watchdog_hardPanic_reset )
+);
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_tmpl.vhd b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_tmpl.vhd
new file mode 100644
index 0000000..e587f31
--- /dev/null
+++ b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_tmpl.vhd
@@ -0,0 +1,251 @@
+--------------------------------------------------------------------------------
+-- Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+--
+-- This document contains proprietary information which is
+-- protected by copyright. All rights are reserved. This notice
+-- refers to original work by Efinix, Inc. which may be derivitive
+-- of other work distributed under license of the authors. In the
+-- case of derivative work, nothing in this notice overrides the
+-- original author's license agreement. Where applicable, the
+-- original license agreement is included in it's original
+-- unmodified form immediately below this header.
+--
+-- WARRANTY DISCLAIMER.
+-- THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+-- EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+-- RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+-- INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+-- MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+-- PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+-- WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+--
+-- LIMITATION OF LIABILITY.
+-- NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+-- INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+-- MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+-- OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+-- SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+-- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+-- GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+-- MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+-- THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+-- (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+-- BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+-- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+-- CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+-- APPLY TO LICENSEE.
+--
+--------------------------------------------------------------------------------
+------------- Begin Cut here for COMPONENT Declaration ------
+component EfxSapphireHpSoc_slb is
+port (
+ io_peripheralClk : in std_logic;
+ io_peripheralReset : in std_logic;
+ io_asyncReset : out std_logic;
+ io_gpio_sw_n : in std_logic;
+ pll_peripheral_locked : in std_logic;
+ pll_system_locked : in std_logic;
+ jtagCtrl_capture : out std_logic;
+ jtagCtrl_enable : out std_logic;
+ jtagCtrl_reset : out std_logic;
+ jtagCtrl_shift : out std_logic;
+ jtagCtrl_tdi : out std_logic;
+ jtagCtrl_tdo : in std_logic;
+ jtagCtrl_update : out std_logic;
+ ut_jtagCtrl_capture : in std_logic;
+ ut_jtagCtrl_enable : in std_logic;
+ ut_jtagCtrl_reset : in std_logic;
+ ut_jtagCtrl_shift : in std_logic;
+ ut_jtagCtrl_tdi : in std_logic;
+ ut_jtagCtrl_tdo : out std_logic;
+ ut_jtagCtrl_update : in std_logic;
+ system_spi_0_io_data_0_read : in std_logic;
+ system_spi_0_io_data_0_write : out std_logic;
+ system_spi_0_io_data_0_writeEnable : out std_logic;
+ system_spi_0_io_data_1_read : in std_logic;
+ system_spi_0_io_data_1_write : out std_logic;
+ system_spi_0_io_data_1_writeEnable : out std_logic;
+ system_spi_0_io_data_2_read : in std_logic;
+ system_spi_0_io_data_2_write : out std_logic;
+ system_spi_0_io_data_2_writeEnable : out std_logic;
+ system_spi_0_io_data_3_read : in std_logic;
+ system_spi_0_io_data_3_write : out std_logic;
+ system_spi_0_io_data_3_writeEnable : out std_logic;
+ system_spi_0_io_sclk_write : out std_logic;
+ system_spi_0_io_ss : out std_logic_vector(3 downto 0);
+ system_uart_0_io_rxd : in std_logic;
+ system_uart_0_io_txd : out std_logic;
+ system_i2c_0_io_scl_read : in std_logic;
+ system_i2c_0_io_scl_write : out std_logic;
+ system_i2c_0_io_sda_read : in std_logic;
+ system_gpio_0_io_read : in std_logic_vector(3 downto 0);
+ system_gpio_0_io_write : out std_logic_vector(3 downto 0);
+ system_gpio_0_io_writeEnable : out std_logic_vector(3 downto 0);
+ cfg_done : in std_logic;
+ cfg_start : out std_logic;
+ cfg_sel : out std_logic;
+ cfg_reset : out std_logic;
+ axiAInterrupt : out std_logic;
+ axiA_awaddr : in std_logic_vector(31 downto 0);
+ axiA_awlen : in std_logic_vector(7 downto 0);
+ axiA_awsize : in std_logic_vector(2 downto 0);
+ axiA_awburst : in std_logic_vector(1 downto 0);
+ axiA_awlock : in std_logic;
+ axiA_awcache : in std_logic_vector(3 downto 0);
+ axiA_awprot : in std_logic_vector(2 downto 0);
+ axiA_awqos : in std_logic_vector(3 downto 0);
+ axiA_awregion : in std_logic_vector(3 downto 0);
+ axiA_awvalid : in std_logic;
+ axiA_awready : out std_logic;
+ axiA_wdata : in std_logic_vector(31 downto 0);
+ axiA_wstrb : in std_logic_vector(3 downto 0);
+ axiA_wvalid : in std_logic;
+ axiA_wlast : in std_logic;
+ axiA_wready : out std_logic;
+ axiA_bresp : out std_logic_vector(1 downto 0);
+ axiA_bvalid : out std_logic;
+ axiA_bready : in std_logic;
+ axiA_araddr : in std_logic_vector(31 downto 0);
+ axiA_arlen : in std_logic_vector(7 downto 0);
+ axiA_arsize : in std_logic_vector(2 downto 0);
+ axiA_arburst : in std_logic_vector(1 downto 0);
+ axiA_arlock : in std_logic;
+ axiA_arcache : in std_logic_vector(3 downto 0);
+ axiA_arprot : in std_logic_vector(2 downto 0);
+ axiA_arqos : in std_logic_vector(3 downto 0);
+ axiA_arregion : in std_logic_vector(3 downto 0);
+ axiA_arvalid : in std_logic;
+ axiA_arready : out std_logic;
+ axiA_rdata : out std_logic_vector(31 downto 0);
+ axiA_rresp : out std_logic_vector(1 downto 0);
+ axiA_rlast : out std_logic;
+ axiA_rvalid : out std_logic;
+ axiA_rready : in std_logic;
+ userInterruptA : out std_logic;
+ userInterruptB : out std_logic;
+ userInterruptC : out std_logic;
+ userInterruptD : out std_logic;
+ userInterruptE : out std_logic;
+ userInterruptF : out std_logic;
+ io_apbSlave_0_PADDR : out std_logic_vector(31 downto 0);
+ io_apbSlave_0_PENABLE : out std_logic;
+ io_apbSlave_0_PRDATA : in std_logic_vector(31 downto 0);
+ io_apbSlave_0_PREADY : in std_logic;
+ io_apbSlave_0_PSEL : out std_logic;
+ io_apbSlave_0_PSLVERROR : in std_logic;
+ io_apbSlave_0_PWDATA : out std_logic_vector(31 downto 0);
+ io_apbSlave_0_PWRITE : out std_logic;
+ system_i2c_0_io_sda_write : out std_logic;
+ system_i2c_0_io_sda_writeEnable : out std_logic;
+ system_i2c_0_io_scl_writeEnable : out std_logic;
+ system_watchdog_hardPanic_reset : out std_logic
+);
+end component EfxSapphireHpSoc_slb;
+
+---------------------- End COMPONENT Declaration ------------
+------------- Begin Cut here for INSTANTIATION Template -----
+u_EfxSapphireHpSoc_slb : EfxSapphireHpSoc_slb
+port map (
+ io_peripheralClk => io_peripheralClk,
+ io_peripheralReset => io_peripheralReset,
+ io_asyncReset => io_asyncReset,
+ io_gpio_sw_n => io_gpio_sw_n,
+ pll_peripheral_locked => pll_peripheral_locked,
+ pll_system_locked => pll_system_locked,
+ jtagCtrl_capture => jtagCtrl_capture,
+ jtagCtrl_enable => jtagCtrl_enable,
+ jtagCtrl_reset => jtagCtrl_reset,
+ jtagCtrl_shift => jtagCtrl_shift,
+ jtagCtrl_tdi => jtagCtrl_tdi,
+ jtagCtrl_tdo => jtagCtrl_tdo,
+ jtagCtrl_update => jtagCtrl_update,
+ ut_jtagCtrl_capture => ut_jtagCtrl_capture,
+ ut_jtagCtrl_enable => ut_jtagCtrl_enable,
+ ut_jtagCtrl_reset => ut_jtagCtrl_reset,
+ ut_jtagCtrl_shift => ut_jtagCtrl_shift,
+ ut_jtagCtrl_tdi => ut_jtagCtrl_tdi,
+ ut_jtagCtrl_tdo => ut_jtagCtrl_tdo,
+ ut_jtagCtrl_update => ut_jtagCtrl_update,
+ system_spi_0_io_data_0_read => system_spi_0_io_data_0_read,
+ system_spi_0_io_data_0_write => system_spi_0_io_data_0_write,
+ system_spi_0_io_data_0_writeEnable => system_spi_0_io_data_0_writeEnable,
+ system_spi_0_io_data_1_read => system_spi_0_io_data_1_read,
+ system_spi_0_io_data_1_write => system_spi_0_io_data_1_write,
+ system_spi_0_io_data_1_writeEnable => system_spi_0_io_data_1_writeEnable,
+ system_spi_0_io_data_2_read => system_spi_0_io_data_2_read,
+ system_spi_0_io_data_2_write => system_spi_0_io_data_2_write,
+ system_spi_0_io_data_2_writeEnable => system_spi_0_io_data_2_writeEnable,
+ system_spi_0_io_data_3_read => system_spi_0_io_data_3_read,
+ system_spi_0_io_data_3_write => system_spi_0_io_data_3_write,
+ system_spi_0_io_data_3_writeEnable => system_spi_0_io_data_3_writeEnable,
+ system_spi_0_io_sclk_write => system_spi_0_io_sclk_write,
+ system_spi_0_io_ss => system_spi_0_io_ss,
+ system_uart_0_io_rxd => system_uart_0_io_rxd,
+ system_uart_0_io_txd => system_uart_0_io_txd,
+ system_i2c_0_io_scl_read => system_i2c_0_io_scl_read,
+ system_i2c_0_io_scl_write => system_i2c_0_io_scl_write,
+ system_i2c_0_io_sda_read => system_i2c_0_io_sda_read,
+ system_gpio_0_io_read => system_gpio_0_io_read,
+ system_gpio_0_io_write => system_gpio_0_io_write,
+ system_gpio_0_io_writeEnable => system_gpio_0_io_writeEnable,
+ cfg_done => cfg_done,
+ cfg_start => cfg_start,
+ cfg_sel => cfg_sel,
+ cfg_reset => cfg_reset,
+ axiAInterrupt => axiAInterrupt,
+ axiA_awaddr => axiA_awaddr,
+ axiA_awlen => axiA_awlen,
+ axiA_awsize => axiA_awsize,
+ axiA_awburst => axiA_awburst,
+ axiA_awlock => axiA_awlock,
+ axiA_awcache => axiA_awcache,
+ axiA_awprot => axiA_awprot,
+ axiA_awqos => axiA_awqos,
+ axiA_awregion => axiA_awregion,
+ axiA_awvalid => axiA_awvalid,
+ axiA_awready => axiA_awready,
+ axiA_wdata => axiA_wdata,
+ axiA_wstrb => axiA_wstrb,
+ axiA_wvalid => axiA_wvalid,
+ axiA_wlast => axiA_wlast,
+ axiA_wready => axiA_wready,
+ axiA_bresp => axiA_bresp,
+ axiA_bvalid => axiA_bvalid,
+ axiA_bready => axiA_bready,
+ axiA_araddr => axiA_araddr,
+ axiA_arlen => axiA_arlen,
+ axiA_arsize => axiA_arsize,
+ axiA_arburst => axiA_arburst,
+ axiA_arlock => axiA_arlock,
+ axiA_arcache => axiA_arcache,
+ axiA_arprot => axiA_arprot,
+ axiA_arqos => axiA_arqos,
+ axiA_arregion => axiA_arregion,
+ axiA_arvalid => axiA_arvalid,
+ axiA_arready => axiA_arready,
+ axiA_rdata => axiA_rdata,
+ axiA_rresp => axiA_rresp,
+ axiA_rlast => axiA_rlast,
+ axiA_rvalid => axiA_rvalid,
+ axiA_rready => axiA_rready,
+ userInterruptA => userInterruptA,
+ userInterruptB => userInterruptB,
+ userInterruptC => userInterruptC,
+ userInterruptD => userInterruptD,
+ userInterruptE => userInterruptE,
+ userInterruptF => userInterruptF,
+ io_apbSlave_0_PADDR => io_apbSlave_0_PADDR,
+ io_apbSlave_0_PENABLE => io_apbSlave_0_PENABLE,
+ io_apbSlave_0_PRDATA => io_apbSlave_0_PRDATA,
+ io_apbSlave_0_PREADY => io_apbSlave_0_PREADY,
+ io_apbSlave_0_PSEL => io_apbSlave_0_PSEL,
+ io_apbSlave_0_PSLVERROR => io_apbSlave_0_PSLVERROR,
+ io_apbSlave_0_PWDATA => io_apbSlave_0_PWDATA,
+ io_apbSlave_0_PWRITE => io_apbSlave_0_PWRITE,
+ system_i2c_0_io_sda_write => system_i2c_0_io_sda_write,
+ system_i2c_0_io_sda_writeEnable => system_i2c_0_io_sda_writeEnable,
+ system_i2c_0_io_scl_writeEnable => system_i2c_0_io_scl_writeEnable,
+ system_watchdog_hardPanic_reset => system_watchdog_hardPanic_reset
+);
+
+------------------------ End INSTANTIATION Template ---------
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_wrapper.v b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_wrapper.v
new file mode 100644
index 0000000..cc9ad4b
--- /dev/null
+++ b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_wrapper.v
@@ -0,0 +1,402 @@
+module EfxSapphireHpSoc_wrapper (
+output system_uart_0_io_txd,
+input system_uart_0_io_rxd,
+input io_cfuClk,
+input io_cfuReset,
+output userInterruptC,
+input [3:0] system_gpio_0_io_read,
+output [3:0] system_gpio_0_io_write,
+output [3:0] system_gpio_0_io_writeEnable,
+input cpu1_customInstruction_cmd_valid,
+output cpu1_customInstruction_cmd_ready,
+input [9:0] cpu1_customInstruction_function_id,
+input [31:0] cpu1_customInstruction_inputs_0,
+input [31:0] cpu1_customInstruction_inputs_1,
+output cpu1_customInstruction_rsp_valid,
+input cpu1_customInstruction_rsp_ready,
+output [31:0] cpu1_customInstruction_outputs_0,
+output system_watchdog_hardPanic_reset,
+output jtagCtrl_tdi,
+input jtagCtrl_tdo,
+output jtagCtrl_enable,
+output jtagCtrl_capture,
+output jtagCtrl_shift,
+output jtagCtrl_update,
+output jtagCtrl_reset,
+input ut_jtagCtrl_tdi,
+output ut_jtagCtrl_tdo,
+input ut_jtagCtrl_enable,
+input ut_jtagCtrl_capture,
+input ut_jtagCtrl_shift,
+input ut_jtagCtrl_update,
+input ut_jtagCtrl_reset,
+output system_i2c_0_io_sda_writeEnable,
+output system_i2c_0_io_sda_write,
+input system_i2c_0_io_sda_read,
+output system_i2c_0_io_scl_writeEnable,
+output system_i2c_0_io_scl_write,
+input system_i2c_0_io_scl_read,
+output userInterruptD,
+input cpu0_customInstruction_cmd_valid,
+output cpu0_customInstruction_cmd_ready,
+input [9:0] cpu0_customInstruction_function_id,
+input [31:0] cpu0_customInstruction_inputs_0,
+input [31:0] cpu0_customInstruction_inputs_1,
+output cpu0_customInstruction_rsp_valid,
+input cpu0_customInstruction_rsp_ready,
+output [31:0] cpu0_customInstruction_outputs_0,
+output system_spi_0_io_sclk_write,
+output system_spi_0_io_data_0_writeEnable,
+input system_spi_0_io_data_0_read,
+output system_spi_0_io_data_0_write,
+output system_spi_0_io_data_1_writeEnable,
+input system_spi_0_io_data_1_read,
+output system_spi_0_io_data_1_write,
+output system_spi_0_io_data_2_writeEnable,
+input system_spi_0_io_data_2_read,
+output system_spi_0_io_data_2_write,
+output system_spi_0_io_data_3_writeEnable,
+input system_spi_0_io_data_3_read,
+output system_spi_0_io_data_3_write,
+output [3:0] system_spi_0_io_ss,
+output userInterruptF,
+output userInterruptG,
+output userInterruptE,
+output userInterruptI,
+output userInterruptH,
+input cpu2_customInstruction_cmd_valid,
+output cpu2_customInstruction_cmd_ready,
+input [9:0] cpu2_customInstruction_function_id,
+input [31:0] cpu2_customInstruction_inputs_0,
+input [31:0] cpu2_customInstruction_inputs_1,
+output cpu2_customInstruction_rsp_valid,
+input cpu2_customInstruction_rsp_ready,
+output [31:0] cpu2_customInstruction_outputs_0,
+input cpu3_customInstruction_cmd_valid,
+output cpu3_customInstruction_cmd_ready,
+input [9:0] cpu3_customInstruction_function_id,
+input [31:0] cpu3_customInstruction_inputs_0,
+input [31:0] cpu3_customInstruction_inputs_1,
+output cpu3_customInstruction_rsp_valid,
+input cpu3_customInstruction_rsp_ready,
+output [31:0] cpu3_customInstruction_outputs_0,
+output userInterruptB,
+output userInterruptA,
+output io_ddrMasters_0_aw_valid,
+input io_ddrMasters_0_aw_ready,
+output [31:0] io_ddrMasters_0_aw_payload_addr,
+output [3:0] io_ddrMasters_0_aw_payload_id,
+output [3:0] io_ddrMasters_0_aw_payload_region,
+output [7:0] io_ddrMasters_0_aw_payload_len,
+output [2:0] io_ddrMasters_0_aw_payload_size,
+output [1:0] io_ddrMasters_0_aw_payload_burst,
+output io_ddrMasters_0_aw_payload_lock,
+output [3:0] io_ddrMasters_0_aw_payload_cache,
+output [3:0] io_ddrMasters_0_aw_payload_qos,
+output [2:0] io_ddrMasters_0_aw_payload_prot,
+output io_ddrMasters_0_aw_payload_allStrb,
+output io_ddrMasters_0_w_valid,
+input io_ddrMasters_0_w_ready,
+output [127:0] io_ddrMasters_0_w_payload_data,
+output [15:0] io_ddrMasters_0_w_payload_strb,
+output io_ddrMasters_0_w_payload_last,
+input io_ddrMasters_0_b_valid,
+output io_ddrMasters_0_b_ready,
+input [3:0] io_ddrMasters_0_b_payload_id,
+input [1:0] io_ddrMasters_0_b_payload_resp,
+output io_ddrMasters_0_ar_valid,
+input io_ddrMasters_0_ar_ready,
+output [31:0] io_ddrMasters_0_ar_payload_addr,
+output [3:0] io_ddrMasters_0_ar_payload_id,
+output [3:0] io_ddrMasters_0_ar_payload_region,
+output [7:0] io_ddrMasters_0_ar_payload_len,
+output [2:0] io_ddrMasters_0_ar_payload_size,
+output [1:0] io_ddrMasters_0_ar_payload_burst,
+output io_ddrMasters_0_ar_payload_lock,
+output [3:0] io_ddrMasters_0_ar_payload_cache,
+output [3:0] io_ddrMasters_0_ar_payload_qos,
+output [2:0] io_ddrMasters_0_ar_payload_prot,
+input io_ddrMasters_0_r_valid,
+output io_ddrMasters_0_r_ready,
+input [127:0] io_ddrMasters_0_r_payload_data,
+input [3:0] io_ddrMasters_0_r_payload_id,
+input [1:0] io_ddrMasters_0_r_payload_resp,
+input io_ddrMasters_0_r_payload_last,
+input io_ddrMasters_0_clk,
+input io_ddrMasters_0_reset,
+input [31:0] axiA_awaddr,
+input [7:0] axiA_awlen,
+input [2:0] axiA_awsize,
+input [1:0] axiA_awburst,
+input axiA_awlock,
+input [3:0] axiA_awcache,
+input [2:0] axiA_awprot,
+input [3:0] axiA_awqos,
+input [3:0] axiA_awregion,
+input axiA_awvalid,
+output axiA_awready,
+input [31:0] axiA_wdata,
+input [3:0] axiA_wstrb,
+input axiA_wvalid,
+input axiA_wlast,
+output axiA_wready,
+output [1:0] axiA_bresp,
+output axiA_bvalid,
+input axiA_bready,
+input [31:0] axiA_araddr,
+input [7:0] axiA_arlen,
+input [2:0] axiA_arsize,
+input [1:0] axiA_arburst,
+input axiA_arlock,
+input [3:0] axiA_arcache,
+input [2:0] axiA_arprot,
+input [3:0] axiA_arqos,
+input [3:0] axiA_arregion,
+input axiA_arvalid,
+output axiA_arready,
+output [31:0] axiA_rdata,
+output [1:0] axiA_rresp,
+output axiA_rlast,
+output axiA_rvalid,
+input axiA_rready,
+output axiAInterrupt,
+input cfg_done,
+output cfg_start,
+output cfg_sel,
+output cfg_reset,
+input io_peripheralClk,
+input io_peripheralReset,
+output io_asyncReset,
+input io_gpio_sw_n,
+input pll_peripheral_locked,
+input pll_system_locked
+);
+
+wire [15:0] io_apbSlave_0_PADDR;
+wire io_apbSlave_0_PSEL;
+wire io_apbSlave_0_PENABLE;
+wire io_apbSlave_0_PREADY;
+wire io_apbSlave_0_PWRITE;
+wire [31:0] io_apbSlave_0_PWDATA;
+wire [31:0] io_apbSlave_0_PRDATA;
+wire io_apbSlave_0_PSLVERROR;
+
+
+assign userInterruptG = 1'b0; //USER TO MODIFY
+assign userInterruptH = 1'b0; //USER TO MODIFY
+assign userInterruptI = 1'b0; //USER TO MODIFY
+
+/**/
+/* INFO: USER TO MODIFY CODES BELOW */
+/* INFO: REFER EXAMPLE DESIGN FOR IMPLEMENTATION DETAILS */
+/**/
+assign io_apbSlave_0_PREADY = 1'b1;
+assign io_apbSlave_0_PRDATA = 32'd0;
+//io_apbSlave_0_PADDR;
+//io_apbSlave_0_PSEL;
+//io_apbSlave_0_PENABLE;
+//io_apbSlave_0_PWRITE;
+//io_apbSlave_0_PWDATA;
+//io_apbSlave_0_PSLVERROR;
+/**/
+/* INFO: USER TO MODIFY CODES BELOW */
+/* INFO: REFER EXAMPLE DESIGN FOR IMPLEMENTATION DETAILS */
+/**/
+assign cpu1_customInstruction_cmd_ready = 1'b1;
+assign cpu1_customInstruction_rsp_valid = 1'b0;
+assign cpu1_customInstruction_outputs_0 = 32'd0;
+//io_cfuClk
+//io_cfyReset
+//cpu1_customInstruction_rsp_ready
+//cpu1_customInstruction_cmd_valid
+//cpu1_customInstruction_function_id
+//cpu1_customInstruction_inputs_0
+//cpu1_customInstruction_inputs_1
+
+/**/
+/* INFO: USER TO MODIFY CODES BELOW */
+/* INFO: REFER EXAMPLE DESIGN FOR IMPLEMENTATION DETAILS */
+/**/
+assign cpu3_customInstruction_cmd_ready = 1'b1;
+assign cpu3_customInstruction_rsp_valid = 1'b0;
+assign cpu3_customInstruction_outputs_0 = 32'd0;
+//io_cfuClk
+//io_cfyReset
+//cpu3_customInstruction_rsp_ready
+//cpu3_customInstruction_cmd_valid
+//cpu3_customInstruction_function_id
+//cpu3_customInstruction_inputs_0
+//cpu3_customInstruction_inputs_1
+
+/**/
+/* INFO: USER TO MODIFY CODES BELOW */
+/* INFO: REFER EXAMPLE DESIGN FOR IMPLEMENTATION DETAILS */
+/**/
+assign io_ddrMasters_0_aw_payload_addr = 32'd0;
+assign io_ddrMasters_0_aw_payload_id = 4'd0;
+assign io_ddrMasters_0_aw_payload_region = 4'd0;
+assign io_ddrMasters_0_aw_payload_len = 8'd0;
+assign io_ddrMasters_0_aw_payload_size = 3'd0;
+assign io_ddrMasters_0_aw_payload_burst = 2'd0;
+assign io_ddrMasters_0_aw_payload_lock = 1'b0;
+assign io_ddrMasters_0_aw_payload_cache = 4'd0;
+assign io_ddrMasters_0_aw_payload_qos = 4'd0;
+assign io_ddrMasters_0_aw_payload_prot = 3'd0;
+assign io_ddrMasters_0_aw_payload_allStrb = 1'b0;
+assign io_ddrMasters_0_w_valid = 1'b0;
+//io_ddrMasters_0_w_ready
+assign io_ddrMasters_0_w_payload_data = 128'd0;
+assign io_ddrMasters_0_w_payload_strb = 16'd0;
+assign io_ddrMasters_0_w_payload_last = 1'b0;
+//io_ddrMasters_0_b_valid
+assign io_ddrMasters_0_b_ready = 1'b1;
+//io_ddrMasters_0_b_payload_id
+//io_ddrMasters_0_b_payload_resp
+assign io_ddrMasters_0_ar_valid = 1'b0;
+//io_ddrMasters_0_ar_ready
+assign io_ddrMasters_0_ar_payload_addr = 32'd0;
+assign io_ddrMasters_0_ar_payload_id = 4'd0;
+assign io_ddrMasters_0_ar_payload_region = 4'd0;
+assign io_ddrMasters_0_ar_payload_len = 8'd0;
+assign io_ddrMasters_0_ar_payload_size = 3'd0;
+assign io_ddrMasters_0_ar_payload_burst = 2'd0;
+assign io_ddrMasters_0_ar_payload_lock = 1'b0;
+assign io_ddrMasters_0_ar_payload_cache = 4'd0;
+assign io_ddrMasters_0_ar_payload_qos = 4'd0;
+assign io_ddrMasters_0_ar_payload_pro = 3'd0;
+//io_ddrMasters_0_r_valid
+assign io_ddrMasters_0_r_ready = 1'b1;
+//io_ddrMasters_0_r_payload_data
+//io_ddrMasters_0_r_payload_id
+//io_ddrMasters_0_r_payload_resp
+//io_ddrMasters_0_r_payload_last
+
+/**/
+/* INFO: USER TO MODIFY CODES BELOW */
+/* INFO: REFER EXAMPLE DESIGN FOR IMPLEMENTATION DETAILS */
+/**/
+assign cpu0_customInstruction_cmd_ready = 1'b1;
+assign cpu0_customInstruction_rsp_valid = 1'b0;
+assign cpu0_customInstruction_outputs_0 = 32'd0;
+//io_cfuClk
+//io_cfyReset
+//cpu0_customInstruction_rsp_ready
+//cpu0_customInstruction_cmd_valid
+//cpu0_customInstruction_function_id
+//cpu0_customInstruction_inputs_0
+//cpu0_customInstruction_inputs_1
+
+/**/
+/* INFO: USER TO MODIFY CODES BELOW */
+/* INFO: REFER EXAMPLE DESIGN FOR IMPLEMENTATION DETAILS */
+/**/
+assign cpu2_customInstruction_cmd_ready = 1'b1;
+assign cpu2_customInstruction_rsp_valid = 1'b0;
+assign cpu2_customInstruction_outputs_0 = 32'd0;
+//io_cfuClk
+//io_cfyReset
+//cpu2_customInstruction_rsp_ready
+//cpu2_customInstruction_cmd_valid
+//cpu2_customInstruction_function_id
+//cpu2_customInstruction_inputs_0
+//cpu2_customInstruction_inputs_1
+
+
+
+//axi4 bridge to various I/O
+EfxSapphireHpSoc_slb u_top_peripherals(
+.userInterruptA(userInterruptA),
+.jtagCtrl_tdi(jtagCtrl_tdi),
+.jtagCtrl_tdo(jtagCtrl_tdo),
+.jtagCtrl_enable(jtagCtrl_enable),
+.jtagCtrl_capture(jtagCtrl_capture),
+.jtagCtrl_shift(jtagCtrl_shift),
+.jtagCtrl_update(jtagCtrl_update),
+.jtagCtrl_reset(jtagCtrl_reset),
+.ut_jtagCtrl_tdi(ut_jtagCtrl_tdi),
+.ut_jtagCtrl_tdo(ut_jtagCtrl_tdo),
+.ut_jtagCtrl_enable(ut_jtagCtrl_enable),
+.ut_jtagCtrl_capture(ut_jtagCtrl_capture),
+.ut_jtagCtrl_shift(ut_jtagCtrl_shift),
+.ut_jtagCtrl_update(ut_jtagCtrl_update),
+.ut_jtagCtrl_reset(ut_jtagCtrl_reset),
+.userInterruptE(userInterruptE),
+.userInterruptF(userInterruptF),
+.userInterruptB(userInterruptB),
+.io_apbSlave_0_PADDR(io_apbSlave_0_PADDR),
+.io_apbSlave_0_PSEL(io_apbSlave_0_PSEL),
+.io_apbSlave_0_PENABLE(io_apbSlave_0_PENABLE),
+.io_apbSlave_0_PREADY(io_apbSlave_0_PREADY),
+.io_apbSlave_0_PWRITE(io_apbSlave_0_PWRITE),
+.io_apbSlave_0_PWDATA(io_apbSlave_0_PWDATA),
+.io_apbSlave_0_PRDATA(io_apbSlave_0_PRDATA),
+.io_apbSlave_0_PSLVERROR(io_apbSlave_0_PSLVERROR),
+.system_watchdog_hardPanic_reset(system_watchdog_hardPanic_reset),
+.system_spi_0_io_sclk_write(system_spi_0_io_sclk_write),
+.system_spi_0_io_data_0_writeEnable(system_spi_0_io_data_0_writeEnable),
+.system_spi_0_io_data_0_read(system_spi_0_io_data_0_read),
+.system_spi_0_io_data_0_write(system_spi_0_io_data_0_write),
+.system_spi_0_io_data_1_writeEnable(system_spi_0_io_data_1_writeEnable),
+.system_spi_0_io_data_1_read(system_spi_0_io_data_1_read),
+.system_spi_0_io_data_1_write(system_spi_0_io_data_1_write),
+.system_spi_0_io_data_2_writeEnable(system_spi_0_io_data_2_writeEnable),
+.system_spi_0_io_data_2_read(system_spi_0_io_data_2_read),
+.system_spi_0_io_data_2_write(system_spi_0_io_data_2_write),
+.system_spi_0_io_data_3_writeEnable(system_spi_0_io_data_3_writeEnable),
+.system_spi_0_io_data_3_read(system_spi_0_io_data_3_read),
+.system_spi_0_io_data_3_write(system_spi_0_io_data_3_write),
+.system_spi_0_io_ss(system_spi_0_io_ss),
+.system_uart_0_io_txd(system_uart_0_io_txd),
+.system_uart_0_io_rxd(system_uart_0_io_rxd),
+.userInterruptC(userInterruptC),
+.system_gpio_0_io_read(system_gpio_0_io_read),
+.system_gpio_0_io_write(system_gpio_0_io_write),
+.system_gpio_0_io_writeEnable(system_gpio_0_io_writeEnable),
+.userInterruptD(userInterruptD),
+.system_i2c_0_io_sda_writeEnable(system_i2c_0_io_sda_writeEnable),
+.system_i2c_0_io_sda_write(system_i2c_0_io_sda_write),
+.system_i2c_0_io_sda_read(system_i2c_0_io_sda_read),
+.system_i2c_0_io_scl_writeEnable(system_i2c_0_io_scl_writeEnable),
+.system_i2c_0_io_scl_write(system_i2c_0_io_scl_write),
+.system_i2c_0_io_scl_read(system_i2c_0_io_scl_read),
+.axiA_awvalid(axiA_awvalid),
+.axiA_awready(axiA_awready),
+.axiA_awaddr(axiA_awaddr),
+.axiA_awlen(axiA_awlen),
+.axiA_awsize(axiA_awsize),
+.axiA_awcache(axiA_awcache),
+.axiA_awprot(axiA_awprot),
+.axiA_wvalid(axiA_wvalid),
+.axiA_wready(axiA_wready),
+.axiA_wdata(axiA_wdata),
+.axiA_wstrb(axiA_wstrb),
+.axiA_wlast(axiA_wlast),
+.axiA_bvalid(axiA_bvalid),
+.axiA_bready(axiA_bready),
+.axiA_bresp(axiA_bresp),
+.axiA_arvalid(axiA_arvalid),
+.axiA_arready(axiA_arready),
+.axiA_araddr(axiA_araddr),
+.axiA_arlen(axiA_arlen),
+.axiA_arsize(axiA_arsize),
+.axiA_arcache(axiA_arcache),
+.axiA_arprot(axiA_arprot),
+.axiA_rvalid(axiA_rvalid),
+.axiA_rready(axiA_rready),
+.axiA_rdata(axiA_rdata),
+.axiA_rresp(axiA_rresp),
+.axiA_rlast(axiA_rlast),
+.axiAInterrupt(axiAInterrupt),
+.cfg_done(cfg_done),
+.cfg_start(cfg_start),
+.cfg_sel(cfg_sel),
+.cfg_reset(cfg_reset),
+.io_peripheralClk(io_peripheralClk),
+.io_peripheralReset(io_peripheralReset),
+.io_asyncReset(io_asyncReset),
+.io_gpio_sw_n(io_gpio_sw_n),
+.pll_peripheral_locked(pll_peripheral_locked),
+.pll_system_locked(pll_system_locked)
+);
+
+endmodule
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/hard_ip_args.ini b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/hard_ip_args.ini
new file mode 100644
index 0000000..5536035
--- /dev/null
+++ b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/hard_ip_args.ini
@@ -0,0 +1,224 @@
+[parameters]
+pll_soc_sys_clk_name = soc_pll_sys_clk
+hidden_min_freq = 0
+pll_soc_sys_clk_ref_freq_hidden = 100
+pll_soc_sys_clk_ref_freq = 100
+pll_soc_sys_clkout1_freq = 1000
+pll_soc_sys_clkout1_phase = 0
+pll_soc_sys_clkout2_freq = 250
+pll_soc_sys_clkout2_phase = 0
+pll_soc_mem_clk_name = soc_pll_peri_clk
+pll_soc_mem_clk_ref_freq = 25
+pll_soc_mem_clkout1_freq = 250
+pll_soc_mem_clkout1_phase = 0
+pll_soc_mem_clkout2_freq = 250
+pll_soc_mem_clkout2_phase = 0
+pll_lpddr4_name = soc_ddr_pll
+pll_lpddr4_ref_freq = 25
+pll_lpddr4_clkout0_freq = 100
+pll_lpddr4_clkout0_phase = 0
+pll_lpddr4_clkout3_freq = 533
+pll_lpddr4_clkout3_phase = 0
+ddr_data_width = 32
+ddr_memory_density = 8G
+ddr_memory_type = LPDDR4x
+ddr_physical_rank = 1
+ddr_pin_name = soc_ddr_inst1
+gpio_bus_name = system_gpio_0
+hard_jtag_inst_name = soc_jtag_inst1
+uart0_gpio_inst_name = system_uart_0
+spi0_gpio_inst_name = system_spi_0
+i2c0_gpio_inst_name = system_i2c_0
+jtag_gpio_inst_name = io_jtag
+soc_pin_name = qcrv32_inst1
+intf_axim = 1
+intf_ci_0 = 1
+intf_ci_1 = 1
+intf_ci_2 = 1
+intf_ci_3 = 1
+co_debug = 0
+intf_jtag_type = 0
+intf_uintr = 9
+peri_spi_0 = 1
+peri_spi_1 = 0
+peri_spi_2 = 0
+peri_i2c_0 = 1
+peri_i2c_1 = 0
+peri_i2c_2 = 0
+peri_gpio_0 = 1
+peri_gpio_1 = 0
+peri_wdt_0 = 1
+peri_apb_0 = 1
+peri_apb_1 = 0
+peri_apb_2 = 0
+peri_apb_3 = 0
+peri_apb_4 = 0
+peri_gen = 1
+peri_uart_0 = 1
+peri_uart_1 = 0
+peri_uart_2 = 0
+peri_gpio_0_width = 4
+peri_gpio_1_width = 4
+peri_apb_0_size = 65536
+peri_apb_1_size = 4096
+peri_apb_2_size = 4096
+peri_apb_3_size = 4096
+peri_apb_4_size = 4096
+peri_freq = 200
+app_overwrite = 0
+app_overwrite_path =
+peri_count = 6
+peri_tcount = 6
+intf_jtag_tap_sel = 8
+intf_axis = 1
+peri_pin_assign = 1
+pll_soc_mem_resource = PLL_TR0
+sys_freq = 1000
+sys_freq_hidden = 1000
+pll_soc_sys_clkout3_freq = 250
+pll_soc_sys_clkout3_phase = 0
+pll_soc_mem_clkout3_freq = 250
+pll_soc_mem_clkout3_phase = 0
+pll_soc_mem_clkout4_freq = 200
+pll_soc_mem_clkout4_phase = 0
+pll_soc_sys_resource = PLL_BL0
+pll_lpddr4_resource = PLL_BL2
+pll_res_assign = 0
+pll_soc_sys_clkout0_freq = 100
+pll_soc_sys_clkout0_phase = 0
+pll_soc_mem_clkout0_freq = 100
+pll_soc_mem_clkout0_phase = 0
+pll_lpddr4_clkout1_freq = 33
+pll_lpddr4_clkout1_phase = 0
+mem_freq = 250
+axim_freq = 250
+cfu_freq = 125
+ddr_freq = 800
+pll_res_assign_2 = 0
+ddr_res_assign = 0
+peri_res_assign = 0
+pll_soc_sys_ext_clk_src = 1
+pll_soc_mem_ext_clk_src = 0
+peri_sdhc = 0
+peri_tsemac = 0
+sw_ftdi_ch_num = 6011
+sw_app_size = 2044
+sw_app_size_custom = 0
+sw_stack_size = 8
+sw_stack_size_custom = 0
+sw_board = Ti375C529 Development Kit
+sw_board_custom =
+sw_ftdi_target_ch = 1
+sw_ftdi_ch_num_soft = 6011
+sw_ftdi_target_ch_soft = 0
+sw_frtos_app_size = 16380
+sw_frtos_app_size_custom = 0
+sw_frtos_stack_size = 4
+sw_frtos_stack_size_custom = 0
+package_type = 529
+family_type = TITANIUM
+axi_pipeline = 0
+axi_write_buffer = 0
+
+[ports]
+io_peripheralclk = io_peripheralClk
+io_peripheralreset = io_peripheralReset
+io_asyncreset = io_asyncReset
+io_gpio_sw_n = io_gpio_sw_n
+pll_peripheral_locked = pll_peripheral_locked
+pll_system_locked = pll_system_locked
+jtagctrl_capture = jtagCtrl_capture
+jtagctrl_enable = jtagCtrl_enable
+jtagctrl_reset = jtagCtrl_reset
+jtagctrl_shift = jtagCtrl_shift
+jtagctrl_tdi = jtagCtrl_tdi
+jtagctrl_tdo = jtagCtrl_tdo
+jtagctrl_update = jtagCtrl_update
+ut_jtagctrl_capture = ut_jtagCtrl_capture
+ut_jtagctrl_enable = ut_jtagCtrl_enable
+ut_jtagctrl_reset = ut_jtagCtrl_reset
+ut_jtagctrl_shift = ut_jtagCtrl_shift
+ut_jtagctrl_tdi = ut_jtagCtrl_tdi
+ut_jtagctrl_tdo = ut_jtagCtrl_tdo
+ut_jtagctrl_update = ut_jtagCtrl_update
+system_spi_0_io_data_0_read = system_spi_0_io_data_0_read
+system_spi_0_io_data_0_write = system_spi_0_io_data_0_write
+system_spi_0_io_data_0_writeenable = system_spi_0_io_data_0_writeEnable
+system_spi_0_io_data_1_read = system_spi_0_io_data_1_read
+system_spi_0_io_data_1_write = system_spi_0_io_data_1_write
+system_spi_0_io_data_1_writeenable = system_spi_0_io_data_1_writeEnable
+system_spi_0_io_data_2_read = system_spi_0_io_data_2_read
+system_spi_0_io_data_2_write = system_spi_0_io_data_2_write
+system_spi_0_io_data_2_writeenable = system_spi_0_io_data_2_writeEnable
+system_spi_0_io_data_3_read = system_spi_0_io_data_3_read
+system_spi_0_io_data_3_write = system_spi_0_io_data_3_write
+system_spi_0_io_data_3_writeenable = system_spi_0_io_data_3_writeEnable
+system_spi_0_io_sclk_write = system_spi_0_io_sclk_write
+system_spi_0_io_ss = system_spi_0_io_ss
+system_uart_0_io_rxd = system_uart_0_io_rxd
+system_uart_0_io_txd = system_uart_0_io_txd
+system_i2c_0_io_scl_read = system_i2c_0_io_scl_read
+system_i2c_0_io_scl_write = system_i2c_0_io_scl_write
+system_i2c_0_io_sda_read = system_i2c_0_io_sda_read
+system_gpio_0_io_read = system_gpio_0_io_read
+system_gpio_0_io_write = system_gpio_0_io_write
+system_gpio_0_io_writeenable = system_gpio_0_io_writeEnable
+cfg_done = cfg_done
+cfg_start = cfg_start
+cfg_sel = cfg_sel
+cfg_reset = cfg_reset
+axiainterrupt = axiAInterrupt
+axia_awaddr = axiA_awaddr
+axia_awlen = axiA_awlen
+axia_awsize = axiA_awsize
+axia_awburst = axiA_awburst
+axia_awlock = axiA_awlock
+axia_awcache = axiA_awcache
+axia_awprot = axiA_awprot
+axia_awqos = axiA_awqos
+axia_awregion = axiA_awregion
+axia_awvalid = axiA_awvalid
+axia_awready = axiA_awready
+axia_wdata = axiA_wdata
+axia_wstrb = axiA_wstrb
+axia_wvalid = axiA_wvalid
+axia_wlast = axiA_wlast
+axia_wready = axiA_wready
+axia_bresp = axiA_bresp
+axia_bvalid = axiA_bvalid
+axia_bready = axiA_bready
+axia_araddr = axiA_araddr
+axia_arlen = axiA_arlen
+axia_arsize = axiA_arsize
+axia_arburst = axiA_arburst
+axia_arlock = axiA_arlock
+axia_arcache = axiA_arcache
+axia_arprot = axiA_arprot
+axia_arqos = axiA_arqos
+axia_arregion = axiA_arregion
+axia_arvalid = axiA_arvalid
+axia_arready = axiA_arready
+axia_rdata = axiA_rdata
+axia_rresp = axiA_rresp
+axia_rlast = axiA_rlast
+axia_rvalid = axiA_rvalid
+axia_rready = axiA_rready
+userinterrupta = userInterruptA
+userinterruptb = userInterruptB
+userinterruptc = userInterruptC
+userinterruptd = userInterruptD
+userinterrupte = userInterruptE
+userinterruptf = userInterruptF
+io_apbslave_0_paddr = io_apbSlave_0_PADDR
+io_apbslave_0_penable = io_apbSlave_0_PENABLE
+io_apbslave_0_prdata = io_apbSlave_0_PRDATA
+io_apbslave_0_pready = io_apbSlave_0_PREADY
+io_apbslave_0_psel = io_apbSlave_0_PSEL
+io_apbslave_0_pslverror = io_apbSlave_0_PSLVERROR
+io_apbslave_0_pwdata = io_apbSlave_0_PWDATA
+io_apbslave_0_pwrite = io_apbSlave_0_PWRITE
+system_i2c_0_io_sda_write = system_i2c_0_io_sda_write
+system_i2c_0_io_sda_writeenable = system_i2c_0_io_sda_writeEnable
+system_i2c_0_io_scl_writeenable = system_i2c_0_io_scl_writeEnable
+system_watchdog_hardpanic_reset = system_watchdog_hardPanic_reset
+
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm/component.pickle b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm/component.pickle
new file mode 100644
index 0000000..608aebf
Binary files /dev/null and b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm/component.pickle differ
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm/graph.pickle b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm/graph.pickle
new file mode 100644
index 0000000..4f76955
Binary files /dev/null and b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm/graph.pickle differ
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm_pt_map.json b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm_pt_map.json
new file mode 100644
index 0000000..45a8436
--- /dev/null
+++ b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm_pt_map.json
@@ -0,0 +1,20 @@
+{
+ "PLL": {},
+ "GPIO": {
+ "UART": [],
+ "SPI": [],
+ "I2C": [],
+ "JTAG": [],
+ "GPIO": []
+ },
+ "SOC": {
+ "SOC_PIN_NAME": {
+ "SOC_PIN_NAME": "qcrv32_inst1"
+ }
+ },
+ "JTAG": {
+ "HARD_JTAG_INST_NAME": {
+ "HARD_JTAG_INST_NAME": "soc_jtag_inst1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/settings.json b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/settings.json
new file mode 100644
index 0000000..84b6da3
--- /dev/null
+++ b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/settings.json
@@ -0,0 +1,134 @@
+{
+ "args": [
+ "-o",
+ "EfxSapphireHpSoc_slb",
+ "--base_path",
+ "ip",
+ "--vlnv",
+ {
+ "vendor": "efinixinc.com",
+ "library": "soc",
+ "name": "efx_hard_soc",
+ "version": "1.23.0"
+ }
+ ],
+ "conf": {
+ "PLL_SOC_SYS_CLK_NAME": "\"soc_pll_sys_clk\"",
+ "PLL_SOC_SYS_CLK_REF_FREQ_HIDDEN": "\"100\"",
+ "PLL_SOC_SYS_CLK_REF_FREQ": "\"100\"",
+ "PLL_SOC_SYS_CLKOUT1_PHASE": "\"0\"",
+ "PLL_SOC_SYS_CLKOUT2_PHASE": "\"0\"",
+ "PLL_SOC_MEM_CLK_NAME": "\"soc_pll_peri_clk\"",
+ "PLL_SOC_MEM_CLK_REF_FREQ": "\"25\"",
+ "PLL_SOC_MEM_CLKOUT1_FREQ": "\"250\"",
+ "PLL_SOC_MEM_CLKOUT1_PHASE": "\"0\"",
+ "PLL_SOC_MEM_CLKOUT2_FREQ": "\"250\"",
+ "PLL_SOC_MEM_CLKOUT2_PHASE": "\"0\"",
+ "PLL_LPDDR4_NAME": "\"soc_ddr_pll\"",
+ "PLL_LPDDR4_REF_FREQ": "\"25\"",
+ "PLL_LPDDR4_CLKOUT0_FREQ": "\"100\"",
+ "PLL_LPDDR4_CLKOUT0_PHASE": "\"0\"",
+ "PLL_LPDDR4_CLKOUT3_FREQ": "\"533\"",
+ "PLL_LPDDR4_CLKOUT3_PHASE": "\"0\"",
+ "DDR_DATA_WIDTH": "32",
+ "DDR_MEMORY_DENSITY": "\"8G\"",
+ "DDR_MEMORY_TYPE": "\"LPDDR4x\"",
+ "DDR_PHYSICAL_RANK": "1",
+ "DDR_PIN_NAME": "\"soc_ddr_inst1\"",
+ "INTF_AXIM": "1'b1",
+ "INTF_CI_0": "1'b1",
+ "INTF_CI_1": "1'b1",
+ "INTF_CI_2": "1'b1",
+ "INTF_CI_3": "1'b1",
+ "CO_DEBUG": "1'b0",
+ "INTF_JTAG_TYPE": "0",
+ "INTF_UINTR": "9",
+ "PERI_SPI_0": "1'b1",
+ "PERI_SPI_1": "1'b0",
+ "PERI_SPI_2": "1'b0",
+ "PERI_I2C_0": "1'b1",
+ "PERI_I2C_1": "1'b0",
+ "PERI_I2C_2": "1'b0",
+ "PERI_GPIO_0": "1'b1",
+ "PERI_GPIO_1": "1'b0",
+ "PERI_WDT_0": "1'b1",
+ "PERI_APB_0": "1'b1",
+ "PERI_APB_1": "1'b0",
+ "PERI_APB_2": "1'b0",
+ "PERI_APB_3": "1'b0",
+ "PERI_APB_4": "1'b0",
+ "PERI_GEN": "1'b1",
+ "PERI_UART_0": "1'b1",
+ "PERI_UART_1": "1'b0",
+ "PERI_UART_2": "1'b0",
+ "PERI_GPIO_0_WIDTH": "4",
+ "PERI_GPIO_1_WIDTH": "4",
+ "PERI_APB_0_SIZE": "65536",
+ "PERI_APB_1_SIZE": "4096",
+ "PERI_APB_2_SIZE": "4096",
+ "PERI_APB_3_SIZE": "4096",
+ "PERI_APB_4_SIZE": "4096",
+ "PERI_FREQ": "200",
+ "APP_OVERWRITE": "1'b0",
+ "APP_OVERWRITE_PATH": "\"''\"",
+ "INTF_JTAG_TAP_SEL": "8",
+ "INTF_AXIS": "1'b1",
+ "PERI_PIN_ASSIGN": "1'b1",
+ "PLL_SOC_MEM_RESOURCE": "\"PLL_TR0\"",
+ "SYS_FREQ": "1000",
+ "SYS_FREQ_HIDDEN": "1000",
+ "PLL_SOC_SYS_CLKOUT3_FREQ": "\"250\"",
+ "PLL_SOC_SYS_CLKOUT3_PHASE": "\"0\"",
+ "PLL_SOC_MEM_CLKOUT3_FREQ": "\"250\"",
+ "PLL_SOC_MEM_CLKOUT3_PHASE": "\"0\"",
+ "PLL_SOC_MEM_CLKOUT4_PHASE": "\"0\"",
+ "PLL_SOC_SYS_RESOURCE": "\"PLL_BL0\"",
+ "PLL_LPDDR4_RESOURCE": "\"PLL_BL2\"",
+ "PLL_RES_ASSIGN": "1'b0",
+ "PLL_SOC_SYS_CLKOUT0_FREQ": "\"100\"",
+ "PLL_SOC_SYS_CLKOUT0_PHASE": "\"0\"",
+ "PLL_SOC_MEM_CLKOUT0_FREQ": "\"100\"",
+ "PLL_SOC_MEM_CLKOUT0_PHASE": "\"0\"",
+ "PLL_LPDDR4_CLKOUT1_FREQ": "\"33\"",
+ "PLL_LPDDR4_CLKOUT1_PHASE": "\"0\"",
+ "MEM_FREQ": "250",
+ "AXIM_FREQ": "250",
+ "CFU_FREQ": "125",
+ "DDR_FREQ": "800",
+ "PLL_RES_ASSIGN_2": "1'b0",
+ "DDR_RES_ASSIGN": "1'b0",
+ "PERI_RES_ASSIGN": "1'b0",
+ "PLL_SOC_SYS_EXT_CLK_SRC": "1",
+ "PLL_SOC_MEM_EXT_CLK_SRC": "0",
+ "PERI_SDHC": "1'b0",
+ "PERI_TSEMAC": "1'b0",
+ "SW_FTDI_CH_NUM": "6011",
+ "SW_APP_SIZE": "2044",
+ "SW_APP_SIZE_CUSTOM": "0",
+ "SW_STACK_SIZE": "8",
+ "SW_STACK_SIZE_CUSTOM": "0",
+ "SW_BOARD": "\"Ti375C529 Development Kit\"",
+ "SW_BOARD_CUSTOM": "\"\"",
+ "SW_FTDI_TARGET_CH": "1",
+ "SW_FTDI_CH_NUM_SOFT": "6011",
+ "SW_FTDI_TARGET_CH_SOFT": "0",
+ "SW_FRTOS_APP_SIZE": "16380",
+ "SW_FRTOS_APP_SIZE_CUSTOM": "0",
+ "SW_FRTOS_STACK_SIZE": "4",
+ "SW_FRTOS_STACK_SIZE_CUSTOM": "0",
+ "PACKAGE_TYPE": "\"529\"",
+ "FAMILY_TYPE": "\"TITANIUM\"",
+ "AXI_PIPELINE": "1'b0",
+ "AXI_WRITE_BUFFER": "1'b0"
+ },
+ "output": {
+ "external_script_Peripheral_Generator": [],
+ "external_source_source": [],
+ "external_script_PT_Configuration": [],
+ "external_script_Peripheral_Post_Script": [],
+ "external_script_Embedded_SW": []
+ },
+ "ooc_synthesis": {},
+ "sw_version": "2026.1.132",
+ "external_path_option": "RELATIVE_PATH"
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/source/Axi4PeripheralTop.v b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/source/Axi4PeripheralTop.v
new file mode 100644
index 0000000..48546f3
--- /dev/null
+++ b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/source/Axi4PeripheralTop.v
@@ -0,0 +1,8069 @@
+// Generator : SpinalHDL dev git head : a69f4b9a329be784802c37cd8038b7dc9aec3094
+// Component : Axi4PeripheralTop
+
+`timescale 1ns/1ps
+
+module Axi4PeripheralTop (
+ input wire axi_awvalid,
+ output wire axi_awready,
+ input wire [23:0] axi_awaddr,
+ input wire [7:0] axi_awlen,
+ input wire [2:0] axi_awsize,
+ input wire [3:0] axi_awcache,
+ input wire [2:0] axi_awprot,
+ input wire axi_wvalid,
+ output wire axi_wready,
+ input wire [31:0] axi_wdata,
+ input wire [3:0] axi_wstrb,
+ input wire axi_wlast,
+ output wire axi_bvalid,
+ input wire axi_bready,
+ output wire [1:0] axi_bresp,
+ input wire axi_arvalid,
+ output wire axi_arready,
+ input wire [23:0] axi_araddr,
+ input wire [7:0] axi_arlen,
+ input wire [2:0] axi_arsize,
+ input wire [3:0] axi_arcache,
+ input wire [2:0] axi_arprot,
+ output wire axi_rvalid,
+ input wire axi_rready,
+ output wire [31:0] axi_rdata,
+ output wire [1:0] axi_rresp,
+ output wire axi_rlast,
+ output wire system_uart_0_io_txd,
+ input wire system_uart_0_io_rxd,
+ output wire system_i2c_0_io_sda_write,
+ input wire system_i2c_0_io_sda_read,
+ output wire system_i2c_0_io_scl_write,
+ input wire system_i2c_0_io_scl_read,
+ input wire [3:0] system_gpio_0_io_read,
+ output wire [3:0] system_gpio_0_io_write,
+ output wire [3:0] system_gpio_0_io_writeEnable,
+ output wire [15:0] io_apbSlave_0_PADDR,
+ output wire [0:0] io_apbSlave_0_PSEL,
+ output wire io_apbSlave_0_PENABLE,
+ input wire io_apbSlave_0_PREADY,
+ output wire io_apbSlave_0_PWRITE,
+ output wire [31:0] io_apbSlave_0_PWDATA,
+ input wire [31:0] io_apbSlave_0_PRDATA,
+ input wire io_apbSlave_0_PSLVERROR,
+ output wire system_uart_0_io_interrupt,
+ output wire system_spi_0_io_interrupt,
+ output wire [0:0] system_spi_0_io_sclk_write,
+ output wire system_spi_0_io_data_0_writeEnable,
+ input wire [0:0] system_spi_0_io_data_0_read,
+ output wire [0:0] system_spi_0_io_data_0_write,
+ output wire system_spi_0_io_data_1_writeEnable,
+ input wire [0:0] system_spi_0_io_data_1_read,
+ output wire [0:0] system_spi_0_io_data_1_write,
+ output wire system_spi_0_io_data_2_writeEnable,
+ input wire [0:0] system_spi_0_io_data_2_read,
+ output wire [0:0] system_spi_0_io_data_2_write,
+ output wire system_spi_0_io_data_3_writeEnable,
+ input wire [0:0] system_spi_0_io_data_3_read,
+ output wire [0:0] system_spi_0_io_data_3_write,
+ output wire [3:0] system_spi_0_io_ss,
+ output wire system_i2c_0_io_interrupt,
+ output wire system_gpio_0_io_interrupts_0,
+ output wire system_gpio_0_io_interrupts_1,
+ output wire system_watchdog_logic_panics_0,
+ output wire system_watchdog_hardPanic_reset,
+ input wire clk,
+ input wire reset
+);
+
+ wire streamArbiter_io_inputs_0_ready;
+ wire streamArbiter_io_inputs_1_ready;
+ wire streamArbiter_io_output_valid;
+ wire [23:0] streamArbiter_io_output_payload_addr;
+ wire [7:0] streamArbiter_io_output_payload_len;
+ wire [2:0] streamArbiter_io_output_payload_size;
+ wire [3:0] streamArbiter_io_output_payload_cache;
+ wire [2:0] streamArbiter_io_output_payload_prot;
+ wire [0:0] streamArbiter_io_chosen;
+ wire [1:0] streamArbiter_io_chosenOH;
+ wire axiToBmb_io_axi_arw_ready;
+ wire axiToBmb_io_axi_w_ready;
+ wire axiToBmb_io_axi_b_valid;
+ wire [1:0] axiToBmb_io_axi_b_payload_resp;
+ wire axiToBmb_io_axi_r_valid;
+ wire [31:0] axiToBmb_io_axi_r_payload_data;
+ wire [1:0] axiToBmb_io_axi_r_payload_resp;
+ wire axiToBmb_io_axi_r_payload_last;
+ wire axiToBmb_io_bmb_cmd_valid;
+ wire axiToBmb_io_bmb_cmd_payload_last;
+ wire [0:0] axiToBmb_io_bmb_cmd_payload_fragment_source;
+ wire [0:0] axiToBmb_io_bmb_cmd_payload_fragment_opcode;
+ wire [23:0] axiToBmb_io_bmb_cmd_payload_fragment_address;
+ wire [9:0] axiToBmb_io_bmb_cmd_payload_fragment_length;
+ wire [31:0] axiToBmb_io_bmb_cmd_payload_fragment_data;
+ wire [3:0] axiToBmb_io_bmb_cmd_payload_fragment_mask;
+ wire axiToBmb_io_bmb_rsp_ready;
+ wire bmbHandle_decoder_io_input_cmd_ready;
+ wire bmbHandle_decoder_io_input_rsp_valid;
+ wire bmbHandle_decoder_io_input_rsp_payload_last;
+ wire [0:0] bmbHandle_decoder_io_input_rsp_payload_fragment_source;
+ wire [0:0] bmbHandle_decoder_io_input_rsp_payload_fragment_opcode;
+ wire [31:0] bmbHandle_decoder_io_input_rsp_payload_fragment_data;
+ wire bmbHandle_decoder_io_outputs_0_cmd_valid;
+ wire bmbHandle_decoder_io_outputs_0_cmd_payload_last;
+ wire [0:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_source;
+ wire [0:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_opcode;
+ wire [23:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_address;
+ wire [9:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_length;
+ wire [31:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_data;
+ wire [3:0] bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_mask;
+ wire bmbHandle_decoder_io_outputs_0_rsp_ready;
+ wire bmbHandle_unburstify_io_input_cmd_ready;
+ wire bmbHandle_unburstify_io_input_rsp_valid;
+ wire bmbHandle_unburstify_io_input_rsp_payload_last;
+ wire [0:0] bmbHandle_unburstify_io_input_rsp_payload_fragment_source;
+ wire [0:0] bmbHandle_unburstify_io_input_rsp_payload_fragment_opcode;
+ wire [31:0] bmbHandle_unburstify_io_input_rsp_payload_fragment_data;
+ wire bmbHandle_unburstify_io_output_cmd_valid;
+ wire bmbHandle_unburstify_io_output_cmd_payload_last;
+ wire [0:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_opcode;
+ wire [23:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_address;
+ wire [1:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_length;
+ wire [31:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_data;
+ wire [3:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_mask;
+ wire [2:0] bmbHandle_unburstify_io_output_cmd_payload_fragment_context;
+ wire bmbHandle_unburstify_io_output_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_input_cmd_ready;
+ wire bmbPeripheral_bmb_decoder_io_input_rsp_valid;
+ wire bmbPeripheral_bmb_decoder_io_input_rsp_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_opcode;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_data;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_0_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_0_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_outputs_1_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_1_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_outputs_2_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_2_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_outputs_3_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_3_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_outputs_4_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_4_rsp_ready;
+ wire bmbPeripheral_bmb_decoder_io_outputs_5_cmd_valid;
+ wire bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_decoder_io_outputs_5_rsp_ready;
+ wire system_uart_0_io_logic_io_bus_cmd_ready;
+ wire system_uart_0_io_logic_io_bus_rsp_valid;
+ wire system_uart_0_io_logic_io_bus_rsp_payload_last;
+ wire [0:0] system_uart_0_io_logic_io_bus_rsp_payload_fragment_opcode;
+ wire [31:0] system_uart_0_io_logic_io_bus_rsp_payload_fragment_data;
+ wire [2:0] system_uart_0_io_logic_io_bus_rsp_payload_fragment_context;
+ wire system_uart_0_io_logic_io_uart_txd;
+ wire system_uart_0_io_logic_system_uart_0_io_interrupt_source;
+ wire system_spi_0_io_logic_io_ctrl_cmd_ready;
+ wire system_spi_0_io_logic_io_ctrl_rsp_valid;
+ wire system_spi_0_io_logic_io_ctrl_rsp_payload_last;
+ wire [0:0] system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_opcode;
+ wire [31:0] system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_data;
+ wire [2:0] system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_context;
+ wire [0:0] system_spi_0_io_logic_io_spi_sclk_write;
+ wire [3:0] system_spi_0_io_logic_io_spi_ss;
+ wire [0:0] system_spi_0_io_logic_io_spi_data_0_write;
+ wire system_spi_0_io_logic_io_spi_data_0_writeEnable;
+ wire [0:0] system_spi_0_io_logic_io_spi_data_1_write;
+ wire system_spi_0_io_logic_io_spi_data_1_writeEnable;
+ wire [0:0] system_spi_0_io_logic_io_spi_data_2_write;
+ wire system_spi_0_io_logic_io_spi_data_2_writeEnable;
+ wire [0:0] system_spi_0_io_logic_io_spi_data_3_write;
+ wire system_spi_0_io_logic_io_spi_data_3_writeEnable;
+ wire system_spi_0_io_logic_system_spi_0_io_interrupt_source;
+ wire system_i2c_0_io_logic_io_ctrl_cmd_ready;
+ wire system_i2c_0_io_logic_io_ctrl_rsp_valid;
+ wire system_i2c_0_io_logic_io_ctrl_rsp_payload_last;
+ wire [0:0] system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_opcode;
+ wire [31:0] system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_data;
+ wire [2:0] system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_context;
+ wire system_i2c_0_io_logic_io_i2c_scl_write;
+ wire system_i2c_0_io_logic_io_i2c_sda_write;
+ wire system_i2c_0_io_logic_system_i2c_0_io_interrupt_source;
+ wire [3:0] system_gpio_0_io_logic_io_gpio_write;
+ wire [3:0] system_gpio_0_io_logic_io_gpio_writeEnable;
+ wire system_gpio_0_io_logic_io_bus_cmd_ready;
+ wire system_gpio_0_io_logic_io_bus_rsp_valid;
+ wire system_gpio_0_io_logic_io_bus_rsp_payload_last;
+ wire [0:0] system_gpio_0_io_logic_io_bus_rsp_payload_fragment_opcode;
+ wire [31:0] system_gpio_0_io_logic_io_bus_rsp_payload_fragment_data;
+ wire [2:0] system_gpio_0_io_logic_io_bus_rsp_payload_fragment_context;
+ wire [3:0] system_gpio_0_io_logic_io_interrupt;
+ wire system_watchdog_logic_logic_io_bus_cmd_ready;
+ wire system_watchdog_logic_logic_io_bus_rsp_valid;
+ wire system_watchdog_logic_logic_io_bus_rsp_payload_last;
+ wire [0:0] system_watchdog_logic_logic_io_bus_rsp_payload_fragment_opcode;
+ wire [31:0] system_watchdog_logic_logic_io_bus_rsp_payload_fragment_data;
+ wire [2:0] system_watchdog_logic_logic_io_bus_rsp_payload_fragment_context;
+ wire [1:0] system_watchdog_logic_logic_io_panics;
+ wire io_apbSlave_0_logic_io_input_cmd_ready;
+ wire io_apbSlave_0_logic_io_input_rsp_valid;
+ wire io_apbSlave_0_logic_io_input_rsp_payload_last;
+ wire [0:0] io_apbSlave_0_logic_io_input_rsp_payload_fragment_opcode;
+ wire [31:0] io_apbSlave_0_logic_io_input_rsp_payload_fragment_data;
+ wire [2:0] io_apbSlave_0_logic_io_input_rsp_payload_fragment_context;
+ wire [15:0] io_apbSlave_0_logic_io_output_PADDR;
+ wire [0:0] io_apbSlave_0_logic_io_output_PSEL;
+ wire io_apbSlave_0_logic_io_output_PENABLE;
+ wire io_apbSlave_0_logic_io_output_PWRITE;
+ wire [31:0] io_apbSlave_0_logic_io_output_PWDATA;
+ wire _zz_axiShared_b_ready;
+ wire _zz_axiShared_r_ready;
+ wire axi_aw_halfPipe_valid;
+ wire axi_aw_halfPipe_ready;
+ wire [23:0] axi_aw_halfPipe_payload_addr;
+ wire [7:0] axi_aw_halfPipe_payload_len;
+ wire [2:0] axi_aw_halfPipe_payload_size;
+ wire [3:0] axi_aw_halfPipe_payload_cache;
+ wire [2:0] axi_aw_halfPipe_payload_prot;
+ reg axi_aw_rValid;
+ wire axi_aw_halfPipe_fire;
+ reg [23:0] axi_aw_rData_addr;
+ reg [7:0] axi_aw_rData_len;
+ reg [2:0] axi_aw_rData_size;
+ reg [3:0] axi_aw_rData_cache;
+ reg [2:0] axi_aw_rData_prot;
+ wire axi_w_halfPipe_valid;
+ wire axi_w_halfPipe_ready;
+ wire [31:0] axi_w_halfPipe_payload_data;
+ wire [3:0] axi_w_halfPipe_payload_strb;
+ wire axi_w_halfPipe_payload_last;
+ reg axi_w_rValid;
+ wire axi_w_halfPipe_fire;
+ reg [31:0] axi_w_rData_data;
+ reg [3:0] axi_w_rData_strb;
+ reg axi_w_rData_last;
+ wire _zz_axi_bvalid;
+ reg _zz_axi_bvalid_1;
+ reg [1:0] _zz_axi_bresp;
+ wire axi_ar_halfPipe_valid;
+ wire axi_ar_halfPipe_ready;
+ wire [23:0] axi_ar_halfPipe_payload_addr;
+ wire [7:0] axi_ar_halfPipe_payload_len;
+ wire [2:0] axi_ar_halfPipe_payload_size;
+ wire [3:0] axi_ar_halfPipe_payload_cache;
+ wire [2:0] axi_ar_halfPipe_payload_prot;
+ reg axi_ar_rValid;
+ wire axi_ar_halfPipe_fire;
+ reg [23:0] axi_ar_rData_addr;
+ reg [7:0] axi_ar_rData_len;
+ reg [2:0] axi_ar_rData_size;
+ reg [3:0] axi_ar_rData_cache;
+ reg [2:0] axi_ar_rData_prot;
+ wire _zz_axi_rvalid;
+ reg _zz_axi_rvalid_1;
+ reg [31:0] _zz_axi_rdata;
+ reg [1:0] _zz_axi_rresp;
+ reg _zz_axi_rlast;
+ wire axiShared_arw_valid;
+ wire axiShared_arw_ready;
+ wire [23:0] axiShared_arw_payload_addr;
+ wire [7:0] axiShared_arw_payload_len;
+ wire [2:0] axiShared_arw_payload_size;
+ wire [3:0] axiShared_arw_payload_cache;
+ wire [2:0] axiShared_arw_payload_prot;
+ wire axiShared_arw_payload_write;
+ wire axiShared_w_valid;
+ wire axiShared_w_ready;
+ wire [31:0] axiShared_w_payload_data;
+ wire [3:0] axiShared_w_payload_strb;
+ wire axiShared_w_payload_last;
+ wire axiShared_b_valid;
+ wire axiShared_b_ready;
+ wire [1:0] axiShared_b_payload_resp;
+ wire axiShared_r_valid;
+ wire axiShared_r_ready;
+ wire [31:0] axiShared_r_payload_data;
+ wire [1:0] axiShared_r_payload_resp;
+ wire axiShared_r_payload_last;
+ wire bmbPeripheral_bmb_cmd_valid;
+ wire bmbPeripheral_bmb_cmd_ready;
+ wire bmbPeripheral_bmb_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_rsp_valid;
+ wire bmbPeripheral_bmb_rsp_ready;
+ wire bmbPeripheral_bmb_rsp_payload_last;
+ wire [0:0] bmbPeripheral_bmb_rsp_payload_fragment_opcode;
+ wire [31:0] bmbPeripheral_bmb_rsp_payload_fragment_data;
+ wire [2:0] bmbPeripheral_bmb_rsp_payload_fragment_context;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [3:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_mask;
+ wire [2:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire system_gpio_0_io_interrupts_0_source;
+ wire system_gpio_0_io_interrupts_1_source;
+ wire system_gpio_0_io_interrupts_2;
+ wire system_gpio_0_io_interrupts_3;
+ wire system_watchdog_logic_panics_0_source;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [5:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire _zz_io_bus_rsp_ready;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last;
+ wire [0:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode;
+ wire [5:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address;
+ wire [1:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length;
+ wire [31:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data;
+ wire [2:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context;
+ reg system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ wire system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire;
+ reg system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ reg [0:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ reg [5:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ reg [1:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ reg [31:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ reg [2:0] system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ wire _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ reg _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1;
+ reg _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ reg [0:0] _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ reg [2:0] _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [11:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last;
+ wire [0:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode;
+ wire [11:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address;
+ wire [1:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length;
+ wire [31:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data;
+ wire [2:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context;
+ reg system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ wire system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire;
+ reg system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ reg [0:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ reg [11:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ reg [1:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ reg [31:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ reg [2:0] system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [7:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last;
+ wire [0:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode;
+ wire [7:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address;
+ wire [1:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length;
+ wire [31:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data;
+ wire [2:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context;
+ reg system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ wire system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire;
+ reg system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ reg [0:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ reg [7:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ reg [1:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ reg [31:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ reg [2:0] system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [7:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [7:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ wire [0:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ wire [15:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ wire [1:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ wire [31:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ wire [2:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ wire io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ wire [0:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ wire [31:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ wire [2:0] io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid_1;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready_1;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last_1;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_1;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_1;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_1;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_1;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_1;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid_1;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready_1;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last_1;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_1;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_1;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_1;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid_2;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready_2;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last_2;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_2;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_2;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_2;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_2;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_2;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid_2;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready_2;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last_2;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_2;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_2;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_2;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid_3;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready_3;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last_3;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_3;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_3;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_3;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_3;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_3;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid_3;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready_3;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last_3;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_3;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_3;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_3;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid_4;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready_4;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last_4;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_4;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_4;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_4;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_4;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_4;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid_4;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready_4;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last_4;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_4;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_4;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_4;
+ wire bmbPeripheral_bmb_withoutMask_cmd_valid_5;
+ wire bmbPeripheral_bmb_withoutMask_cmd_ready_5;
+ wire bmbPeripheral_bmb_withoutMask_cmd_payload_last_5;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_5;
+ wire [23:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_5;
+ wire [1:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_5;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_5;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_5;
+ wire bmbPeripheral_bmb_withoutMask_rsp_valid_5;
+ wire bmbPeripheral_bmb_withoutMask_rsp_ready_5;
+ wire bmbPeripheral_bmb_withoutMask_rsp_payload_last_5;
+ wire [0:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_5;
+ wire [31:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_5;
+ wire [2:0] bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_5;
+
+ Axi4PeripheralStreamArbiter streamArbiter (
+ .io_inputs_0_valid (axi_ar_halfPipe_valid ), //i
+ .io_inputs_0_ready (streamArbiter_io_inputs_0_ready ), //o
+ .io_inputs_0_payload_addr (axi_ar_halfPipe_payload_addr[23:0] ), //i
+ .io_inputs_0_payload_len (axi_ar_halfPipe_payload_len[7:0] ), //i
+ .io_inputs_0_payload_size (axi_ar_halfPipe_payload_size[2:0] ), //i
+ .io_inputs_0_payload_cache (axi_ar_halfPipe_payload_cache[3:0] ), //i
+ .io_inputs_0_payload_prot (axi_ar_halfPipe_payload_prot[2:0] ), //i
+ .io_inputs_1_valid (axi_aw_halfPipe_valid ), //i
+ .io_inputs_1_ready (streamArbiter_io_inputs_1_ready ), //o
+ .io_inputs_1_payload_addr (axi_aw_halfPipe_payload_addr[23:0] ), //i
+ .io_inputs_1_payload_len (axi_aw_halfPipe_payload_len[7:0] ), //i
+ .io_inputs_1_payload_size (axi_aw_halfPipe_payload_size[2:0] ), //i
+ .io_inputs_1_payload_cache (axi_aw_halfPipe_payload_cache[3:0] ), //i
+ .io_inputs_1_payload_prot (axi_aw_halfPipe_payload_prot[2:0] ), //i
+ .io_output_valid (streamArbiter_io_output_valid ), //o
+ .io_output_ready (axiShared_arw_ready ), //i
+ .io_output_payload_addr (streamArbiter_io_output_payload_addr[23:0]), //o
+ .io_output_payload_len (streamArbiter_io_output_payload_len[7:0] ), //o
+ .io_output_payload_size (streamArbiter_io_output_payload_size[2:0] ), //o
+ .io_output_payload_cache (streamArbiter_io_output_payload_cache[3:0]), //o
+ .io_output_payload_prot (streamArbiter_io_output_payload_prot[2:0] ), //o
+ .io_chosen (streamArbiter_io_chosen ), //o
+ .io_chosenOH (streamArbiter_io_chosenOH[1:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralAxi4SharedToBmb axiToBmb (
+ .io_axi_arw_valid (axiShared_arw_valid ), //i
+ .io_axi_arw_ready (axiToBmb_io_axi_arw_ready ), //o
+ .io_axi_arw_payload_addr (axiShared_arw_payload_addr[23:0] ), //i
+ .io_axi_arw_payload_len (axiShared_arw_payload_len[7:0] ), //i
+ .io_axi_arw_payload_size (axiShared_arw_payload_size[2:0] ), //i
+ .io_axi_arw_payload_cache (axiShared_arw_payload_cache[3:0] ), //i
+ .io_axi_arw_payload_prot (axiShared_arw_payload_prot[2:0] ), //i
+ .io_axi_arw_payload_write (axiShared_arw_payload_write ), //i
+ .io_axi_w_valid (axiShared_w_valid ), //i
+ .io_axi_w_ready (axiToBmb_io_axi_w_ready ), //o
+ .io_axi_w_payload_data (axiShared_w_payload_data[31:0] ), //i
+ .io_axi_w_payload_strb (axiShared_w_payload_strb[3:0] ), //i
+ .io_axi_w_payload_last (axiShared_w_payload_last ), //i
+ .io_axi_b_valid (axiToBmb_io_axi_b_valid ), //o
+ .io_axi_b_ready (axiShared_b_ready ), //i
+ .io_axi_b_payload_resp (axiToBmb_io_axi_b_payload_resp[1:0] ), //o
+ .io_axi_r_valid (axiToBmb_io_axi_r_valid ), //o
+ .io_axi_r_ready (axiShared_r_ready ), //i
+ .io_axi_r_payload_data (axiToBmb_io_axi_r_payload_data[31:0] ), //o
+ .io_axi_r_payload_resp (axiToBmb_io_axi_r_payload_resp[1:0] ), //o
+ .io_axi_r_payload_last (axiToBmb_io_axi_r_payload_last ), //o
+ .io_bmb_cmd_valid (axiToBmb_io_bmb_cmd_valid ), //o
+ .io_bmb_cmd_ready (bmbHandle_decoder_io_input_cmd_ready ), //i
+ .io_bmb_cmd_payload_last (axiToBmb_io_bmb_cmd_payload_last ), //o
+ .io_bmb_cmd_payload_fragment_source (axiToBmb_io_bmb_cmd_payload_fragment_source ), //o
+ .io_bmb_cmd_payload_fragment_opcode (axiToBmb_io_bmb_cmd_payload_fragment_opcode ), //o
+ .io_bmb_cmd_payload_fragment_address (axiToBmb_io_bmb_cmd_payload_fragment_address[23:0] ), //o
+ .io_bmb_cmd_payload_fragment_length (axiToBmb_io_bmb_cmd_payload_fragment_length[9:0] ), //o
+ .io_bmb_cmd_payload_fragment_data (axiToBmb_io_bmb_cmd_payload_fragment_data[31:0] ), //o
+ .io_bmb_cmd_payload_fragment_mask (axiToBmb_io_bmb_cmd_payload_fragment_mask[3:0] ), //o
+ .io_bmb_rsp_valid (bmbHandle_decoder_io_input_rsp_valid ), //i
+ .io_bmb_rsp_ready (axiToBmb_io_bmb_rsp_ready ), //o
+ .io_bmb_rsp_payload_last (bmbHandle_decoder_io_input_rsp_payload_last ), //i
+ .io_bmb_rsp_payload_fragment_source (bmbHandle_decoder_io_input_rsp_payload_fragment_source ), //i
+ .io_bmb_rsp_payload_fragment_opcode (bmbHandle_decoder_io_input_rsp_payload_fragment_opcode ), //i
+ .io_bmb_rsp_payload_fragment_data (bmbHandle_decoder_io_input_rsp_payload_fragment_data[31:0]) //i
+ );
+ Axi4PeripheralBmbDecoder bmbHandle_decoder (
+ .io_input_cmd_valid (axiToBmb_io_bmb_cmd_valid ), //i
+ .io_input_cmd_ready (bmbHandle_decoder_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (axiToBmb_io_bmb_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_source (axiToBmb_io_bmb_cmd_payload_fragment_source ), //i
+ .io_input_cmd_payload_fragment_opcode (axiToBmb_io_bmb_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (axiToBmb_io_bmb_cmd_payload_fragment_address[23:0] ), //i
+ .io_input_cmd_payload_fragment_length (axiToBmb_io_bmb_cmd_payload_fragment_length[9:0] ), //i
+ .io_input_cmd_payload_fragment_data (axiToBmb_io_bmb_cmd_payload_fragment_data[31:0] ), //i
+ .io_input_cmd_payload_fragment_mask (axiToBmb_io_bmb_cmd_payload_fragment_mask[3:0] ), //i
+ .io_input_rsp_valid (bmbHandle_decoder_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (axiToBmb_io_bmb_rsp_ready ), //i
+ .io_input_rsp_payload_last (bmbHandle_decoder_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_source (bmbHandle_decoder_io_input_rsp_payload_fragment_source ), //o
+ .io_input_rsp_payload_fragment_opcode (bmbHandle_decoder_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (bmbHandle_decoder_io_input_rsp_payload_fragment_data[31:0] ), //o
+ .io_outputs_0_cmd_valid (bmbHandle_decoder_io_outputs_0_cmd_valid ), //o
+ .io_outputs_0_cmd_ready (bmbHandle_unburstify_io_input_cmd_ready ), //i
+ .io_outputs_0_cmd_payload_last (bmbHandle_decoder_io_outputs_0_cmd_payload_last ), //o
+ .io_outputs_0_cmd_payload_fragment_source (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_source ), //o
+ .io_outputs_0_cmd_payload_fragment_opcode (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_opcode ), //o
+ .io_outputs_0_cmd_payload_fragment_address (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_0_cmd_payload_fragment_length (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_length[9:0] ), //o
+ .io_outputs_0_cmd_payload_fragment_data (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_0_cmd_payload_fragment_mask (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_0_rsp_valid (bmbHandle_unburstify_io_input_rsp_valid ), //i
+ .io_outputs_0_rsp_ready (bmbHandle_decoder_io_outputs_0_rsp_ready ), //o
+ .io_outputs_0_rsp_payload_last (bmbHandle_unburstify_io_input_rsp_payload_last ), //i
+ .io_outputs_0_rsp_payload_fragment_source (bmbHandle_unburstify_io_input_rsp_payload_fragment_source ), //i
+ .io_outputs_0_rsp_payload_fragment_opcode (bmbHandle_unburstify_io_input_rsp_payload_fragment_opcode ), //i
+ .io_outputs_0_rsp_payload_fragment_data (bmbHandle_unburstify_io_input_rsp_payload_fragment_data[31:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbUnburstify bmbHandle_unburstify (
+ .io_input_cmd_valid (bmbHandle_decoder_io_outputs_0_cmd_valid ), //i
+ .io_input_cmd_ready (bmbHandle_unburstify_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (bmbHandle_decoder_io_outputs_0_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_source (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_source ), //i
+ .io_input_cmd_payload_fragment_opcode (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_address[23:0] ), //i
+ .io_input_cmd_payload_fragment_length (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_length[9:0] ), //i
+ .io_input_cmd_payload_fragment_data (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_data[31:0] ), //i
+ .io_input_cmd_payload_fragment_mask (bmbHandle_decoder_io_outputs_0_cmd_payload_fragment_mask[3:0] ), //i
+ .io_input_rsp_valid (bmbHandle_unburstify_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (bmbHandle_decoder_io_outputs_0_rsp_ready ), //i
+ .io_input_rsp_payload_last (bmbHandle_unburstify_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_source (bmbHandle_unburstify_io_input_rsp_payload_fragment_source ), //o
+ .io_input_rsp_payload_fragment_opcode (bmbHandle_unburstify_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (bmbHandle_unburstify_io_input_rsp_payload_fragment_data[31:0] ), //o
+ .io_output_cmd_valid (bmbHandle_unburstify_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready ), //i
+ .io_output_cmd_payload_last (bmbHandle_unburstify_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_opcode (bmbHandle_unburstify_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (bmbHandle_unburstify_io_output_cmd_payload_fragment_address[23:0] ), //o
+ .io_output_cmd_payload_fragment_length (bmbHandle_unburstify_io_output_cmd_payload_fragment_length[1:0] ), //o
+ .io_output_cmd_payload_fragment_data (bmbHandle_unburstify_io_output_cmd_payload_fragment_data[31:0] ), //o
+ .io_output_cmd_payload_fragment_mask (bmbHandle_unburstify_io_output_cmd_payload_fragment_mask[3:0] ), //o
+ .io_output_cmd_payload_fragment_context (bmbHandle_unburstify_io_output_cmd_payload_fragment_context[2:0] ), //o
+ .io_output_rsp_valid (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid ), //i
+ .io_output_rsp_ready (bmbHandle_unburstify_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last ), //i
+ .io_output_rsp_payload_fragment_opcode (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_data (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data[31:0] ), //i
+ .io_output_rsp_payload_fragment_context (bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context[2:0]), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbDecoder_1 bmbPeripheral_bmb_decoder (
+ .io_input_cmd_valid (bmbPeripheral_bmb_cmd_valid ), //i
+ .io_input_cmd_ready (bmbPeripheral_bmb_decoder_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (bmbPeripheral_bmb_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (bmbPeripheral_bmb_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (bmbPeripheral_bmb_cmd_payload_fragment_address[23:0] ), //i
+ .io_input_cmd_payload_fragment_length (bmbPeripheral_bmb_cmd_payload_fragment_length[1:0] ), //i
+ .io_input_cmd_payload_fragment_data (bmbPeripheral_bmb_cmd_payload_fragment_data[31:0] ), //i
+ .io_input_cmd_payload_fragment_mask (bmbPeripheral_bmb_cmd_payload_fragment_mask[3:0] ), //i
+ .io_input_cmd_payload_fragment_context (bmbPeripheral_bmb_cmd_payload_fragment_context[2:0] ), //i
+ .io_input_rsp_valid (bmbPeripheral_bmb_decoder_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (bmbPeripheral_bmb_rsp_ready ), //i
+ .io_input_rsp_payload_last (bmbPeripheral_bmb_decoder_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_data[31:0] ), //o
+ .io_input_rsp_payload_fragment_context (bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_context[2:0] ), //o
+ .io_outputs_0_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_valid ), //o
+ .io_outputs_0_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready ), //i
+ .io_outputs_0_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_last ), //o
+ .io_outputs_0_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_opcode ), //o
+ .io_outputs_0_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_0_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_0_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_0_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_0_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_0_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid ), //i
+ .io_outputs_0_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_0_rsp_ready ), //o
+ .io_outputs_0_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last ), //i
+ .io_outputs_0_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode ), //i
+ .io_outputs_0_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data[31:0] ), //i
+ .io_outputs_0_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context[2:0] ), //i
+ .io_outputs_1_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_valid ), //o
+ .io_outputs_1_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready_1 ), //i
+ .io_outputs_1_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_last ), //o
+ .io_outputs_1_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_opcode ), //o
+ .io_outputs_1_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_1_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_1_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_1_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_1_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_1_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid_1 ), //i
+ .io_outputs_1_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_1_rsp_ready ), //o
+ .io_outputs_1_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last_1 ), //i
+ .io_outputs_1_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_1 ), //i
+ .io_outputs_1_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_1[31:0] ), //i
+ .io_outputs_1_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_1[2:0] ), //i
+ .io_outputs_2_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_valid ), //o
+ .io_outputs_2_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready_2 ), //i
+ .io_outputs_2_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_last ), //o
+ .io_outputs_2_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_opcode ), //o
+ .io_outputs_2_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_2_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_2_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_2_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_2_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_2_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid_2 ), //i
+ .io_outputs_2_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_2_rsp_ready ), //o
+ .io_outputs_2_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last_2 ), //i
+ .io_outputs_2_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_2 ), //i
+ .io_outputs_2_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_2[31:0] ), //i
+ .io_outputs_2_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_2[2:0] ), //i
+ .io_outputs_3_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_valid ), //o
+ .io_outputs_3_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready_3 ), //i
+ .io_outputs_3_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_last ), //o
+ .io_outputs_3_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_opcode ), //o
+ .io_outputs_3_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_3_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_3_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_3_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_3_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_3_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid_3 ), //i
+ .io_outputs_3_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_3_rsp_ready ), //o
+ .io_outputs_3_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last_3 ), //i
+ .io_outputs_3_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_3 ), //i
+ .io_outputs_3_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_3[31:0] ), //i
+ .io_outputs_3_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_3[2:0] ), //i
+ .io_outputs_4_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_valid ), //o
+ .io_outputs_4_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready_4 ), //i
+ .io_outputs_4_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_last ), //o
+ .io_outputs_4_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_opcode ), //o
+ .io_outputs_4_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_4_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_4_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_4_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_4_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_4_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid_4 ), //i
+ .io_outputs_4_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_4_rsp_ready ), //o
+ .io_outputs_4_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last_4 ), //i
+ .io_outputs_4_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_4 ), //i
+ .io_outputs_4_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_4[31:0] ), //i
+ .io_outputs_4_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_4[2:0] ), //i
+ .io_outputs_5_cmd_valid (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_valid ), //o
+ .io_outputs_5_cmd_ready (bmbPeripheral_bmb_withoutMask_cmd_ready_5 ), //i
+ .io_outputs_5_cmd_payload_last (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_last ), //o
+ .io_outputs_5_cmd_payload_fragment_opcode (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_opcode ), //o
+ .io_outputs_5_cmd_payload_fragment_address (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_address[23:0]), //o
+ .io_outputs_5_cmd_payload_fragment_length (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_length[1:0] ), //o
+ .io_outputs_5_cmd_payload_fragment_data (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_data[31:0] ), //o
+ .io_outputs_5_cmd_payload_fragment_mask (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_mask[3:0] ), //o
+ .io_outputs_5_cmd_payload_fragment_context (bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_context[2:0] ), //o
+ .io_outputs_5_rsp_valid (bmbPeripheral_bmb_withoutMask_rsp_valid_5 ), //i
+ .io_outputs_5_rsp_ready (bmbPeripheral_bmb_decoder_io_outputs_5_rsp_ready ), //o
+ .io_outputs_5_rsp_payload_last (bmbPeripheral_bmb_withoutMask_rsp_payload_last_5 ), //i
+ .io_outputs_5_rsp_payload_fragment_opcode (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_5 ), //i
+ .io_outputs_5_rsp_payload_fragment_data (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_5[31:0] ), //i
+ .io_outputs_5_rsp_payload_fragment_context (bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_5[2:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbUartCtrl system_uart_0_io_logic (
+ .io_bus_cmd_valid (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid ), //i
+ .io_bus_cmd_ready (system_uart_0_io_logic_io_bus_cmd_ready ), //o
+ .io_bus_cmd_payload_last (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last ), //i
+ .io_bus_cmd_payload_fragment_opcode (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode ), //i
+ .io_bus_cmd_payload_fragment_address (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address[5:0]), //i
+ .io_bus_cmd_payload_fragment_length (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length[1:0] ), //i
+ .io_bus_cmd_payload_fragment_data (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data[31:0] ), //i
+ .io_bus_cmd_payload_fragment_context (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context[2:0]), //i
+ .io_bus_rsp_valid (system_uart_0_io_logic_io_bus_rsp_valid ), //o
+ .io_bus_rsp_ready (_zz_io_bus_rsp_ready ), //i
+ .io_bus_rsp_payload_last (system_uart_0_io_logic_io_bus_rsp_payload_last ), //o
+ .io_bus_rsp_payload_fragment_opcode (system_uart_0_io_logic_io_bus_rsp_payload_fragment_opcode ), //o
+ .io_bus_rsp_payload_fragment_data (system_uart_0_io_logic_io_bus_rsp_payload_fragment_data[31:0] ), //o
+ .io_bus_rsp_payload_fragment_context (system_uart_0_io_logic_io_bus_rsp_payload_fragment_context[2:0] ), //o
+ .io_uart_txd (system_uart_0_io_logic_io_uart_txd ), //o
+ .io_uart_rxd (system_uart_0_io_rxd ), //i
+ .system_uart_0_io_interrupt_source (system_uart_0_io_logic_system_uart_0_io_interrupt_source ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbSpiXdrMasterCtrl system_spi_0_io_logic (
+ .io_ctrl_cmd_valid (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid ), //i
+ .io_ctrl_cmd_ready (system_spi_0_io_logic_io_ctrl_cmd_ready ), //o
+ .io_ctrl_cmd_payload_last (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last ), //i
+ .io_ctrl_cmd_payload_fragment_opcode (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode ), //i
+ .io_ctrl_cmd_payload_fragment_address (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address[11:0]), //i
+ .io_ctrl_cmd_payload_fragment_length (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length[1:0] ), //i
+ .io_ctrl_cmd_payload_fragment_data (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data[31:0] ), //i
+ .io_ctrl_cmd_payload_fragment_context (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context[2:0] ), //i
+ .io_ctrl_rsp_valid (system_spi_0_io_logic_io_ctrl_rsp_valid ), //o
+ .io_ctrl_rsp_ready (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready ), //i
+ .io_ctrl_rsp_payload_last (system_spi_0_io_logic_io_ctrl_rsp_payload_last ), //o
+ .io_ctrl_rsp_payload_fragment_opcode (system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_opcode ), //o
+ .io_ctrl_rsp_payload_fragment_data (system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_data[31:0] ), //o
+ .io_ctrl_rsp_payload_fragment_context (system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_context[2:0] ), //o
+ .io_spi_sclk_write (system_spi_0_io_logic_io_spi_sclk_write ), //o
+ .io_spi_data_0_writeEnable (system_spi_0_io_logic_io_spi_data_0_writeEnable ), //o
+ .io_spi_data_0_read (system_spi_0_io_data_0_read ), //i
+ .io_spi_data_0_write (system_spi_0_io_logic_io_spi_data_0_write ), //o
+ .io_spi_data_1_writeEnable (system_spi_0_io_logic_io_spi_data_1_writeEnable ), //o
+ .io_spi_data_1_read (system_spi_0_io_data_1_read ), //i
+ .io_spi_data_1_write (system_spi_0_io_logic_io_spi_data_1_write ), //o
+ .io_spi_data_2_writeEnable (system_spi_0_io_logic_io_spi_data_2_writeEnable ), //o
+ .io_spi_data_2_read (system_spi_0_io_data_2_read ), //i
+ .io_spi_data_2_write (system_spi_0_io_logic_io_spi_data_2_write ), //o
+ .io_spi_data_3_writeEnable (system_spi_0_io_logic_io_spi_data_3_writeEnable ), //o
+ .io_spi_data_3_read (system_spi_0_io_data_3_read ), //i
+ .io_spi_data_3_write (system_spi_0_io_logic_io_spi_data_3_write ), //o
+ .io_spi_ss (system_spi_0_io_logic_io_spi_ss[3:0] ), //o
+ .system_spi_0_io_interrupt_source (system_spi_0_io_logic_system_spi_0_io_interrupt_source ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbI2cCtrl system_i2c_0_io_logic (
+ .io_ctrl_cmd_valid (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid ), //i
+ .io_ctrl_cmd_ready (system_i2c_0_io_logic_io_ctrl_cmd_ready ), //o
+ .io_ctrl_cmd_payload_last (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last ), //i
+ .io_ctrl_cmd_payload_fragment_opcode (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode ), //i
+ .io_ctrl_cmd_payload_fragment_address (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address[7:0]), //i
+ .io_ctrl_cmd_payload_fragment_length (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length[1:0] ), //i
+ .io_ctrl_cmd_payload_fragment_data (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data[31:0] ), //i
+ .io_ctrl_cmd_payload_fragment_context (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context[2:0]), //i
+ .io_ctrl_rsp_valid (system_i2c_0_io_logic_io_ctrl_rsp_valid ), //o
+ .io_ctrl_rsp_ready (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready ), //i
+ .io_ctrl_rsp_payload_last (system_i2c_0_io_logic_io_ctrl_rsp_payload_last ), //o
+ .io_ctrl_rsp_payload_fragment_opcode (system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_opcode ), //o
+ .io_ctrl_rsp_payload_fragment_data (system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_data[31:0] ), //o
+ .io_ctrl_rsp_payload_fragment_context (system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_context[2:0] ), //o
+ .io_i2c_sda_write (system_i2c_0_io_logic_io_i2c_sda_write ), //o
+ .io_i2c_sda_read (system_i2c_0_io_sda_read ), //i
+ .io_i2c_scl_write (system_i2c_0_io_logic_io_i2c_scl_write ), //o
+ .io_i2c_scl_read (system_i2c_0_io_scl_read ), //i
+ .system_i2c_0_io_interrupt_source (system_i2c_0_io_logic_system_i2c_0_io_interrupt_source ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbGpio2 system_gpio_0_io_logic (
+ .io_gpio_read (system_gpio_0_io_read[3:0] ), //i
+ .io_gpio_write (system_gpio_0_io_logic_io_gpio_write[3:0] ), //o
+ .io_gpio_writeEnable (system_gpio_0_io_logic_io_gpio_writeEnable[3:0] ), //o
+ .io_bus_cmd_valid (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid ), //i
+ .io_bus_cmd_ready (system_gpio_0_io_logic_io_bus_cmd_ready ), //o
+ .io_bus_cmd_payload_last (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last ), //i
+ .io_bus_cmd_payload_fragment_opcode (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode ), //i
+ .io_bus_cmd_payload_fragment_address (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address[7:0]), //i
+ .io_bus_cmd_payload_fragment_length (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length[1:0] ), //i
+ .io_bus_cmd_payload_fragment_data (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data[31:0] ), //i
+ .io_bus_cmd_payload_fragment_context (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context[2:0]), //i
+ .io_bus_rsp_valid (system_gpio_0_io_logic_io_bus_rsp_valid ), //o
+ .io_bus_rsp_ready (system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready ), //i
+ .io_bus_rsp_payload_last (system_gpio_0_io_logic_io_bus_rsp_payload_last ), //o
+ .io_bus_rsp_payload_fragment_opcode (system_gpio_0_io_logic_io_bus_rsp_payload_fragment_opcode ), //o
+ .io_bus_rsp_payload_fragment_data (system_gpio_0_io_logic_io_bus_rsp_payload_fragment_data[31:0] ), //o
+ .io_bus_rsp_payload_fragment_context (system_gpio_0_io_logic_io_bus_rsp_payload_fragment_context[2:0] ), //o
+ .io_interrupt (system_gpio_0_io_logic_io_interrupt[3:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbWatchdog system_watchdog_logic_logic (
+ .io_bus_cmd_valid (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid ), //i
+ .io_bus_cmd_ready (system_watchdog_logic_logic_io_bus_cmd_ready ), //o
+ .io_bus_cmd_payload_last (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last ), //i
+ .io_bus_cmd_payload_fragment_opcode (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode ), //i
+ .io_bus_cmd_payload_fragment_address (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address[7:0]), //i
+ .io_bus_cmd_payload_fragment_length (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length[1:0] ), //i
+ .io_bus_cmd_payload_fragment_data (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data[31:0] ), //i
+ .io_bus_cmd_payload_fragment_context (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context[2:0]), //i
+ .io_bus_rsp_valid (system_watchdog_logic_logic_io_bus_rsp_valid ), //o
+ .io_bus_rsp_ready (system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready ), //i
+ .io_bus_rsp_payload_last (system_watchdog_logic_logic_io_bus_rsp_payload_last ), //o
+ .io_bus_rsp_payload_fragment_opcode (system_watchdog_logic_logic_io_bus_rsp_payload_fragment_opcode ), //o
+ .io_bus_rsp_payload_fragment_data (system_watchdog_logic_logic_io_bus_rsp_payload_fragment_data[31:0] ), //o
+ .io_bus_rsp_payload_fragment_context (system_watchdog_logic_logic_io_bus_rsp_payload_fragment_context[2:0] ), //o
+ .io_panics (system_watchdog_logic_logic_io_panics[1:0] ), //o
+ .io_heartBeat (1'b0 ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralBmbToApb3Bridge io_apbSlave_0_logic (
+ .io_input_cmd_valid (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid ), //i
+ .io_input_cmd_ready (io_apbSlave_0_logic_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address[15:0]), //i
+ .io_input_cmd_payload_fragment_length (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length[1:0] ), //i
+ .io_input_cmd_payload_fragment_data (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data[31:0] ), //i
+ .io_input_cmd_payload_fragment_context (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context[2:0] ), //i
+ .io_input_rsp_valid (io_apbSlave_0_logic_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready ), //i
+ .io_input_rsp_payload_last (io_apbSlave_0_logic_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (io_apbSlave_0_logic_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (io_apbSlave_0_logic_io_input_rsp_payload_fragment_data[31:0] ), //o
+ .io_input_rsp_payload_fragment_context (io_apbSlave_0_logic_io_input_rsp_payload_fragment_context[2:0] ), //o
+ .io_output_PADDR (io_apbSlave_0_logic_io_output_PADDR[15:0] ), //o
+ .io_output_PSEL (io_apbSlave_0_logic_io_output_PSEL ), //o
+ .io_output_PENABLE (io_apbSlave_0_logic_io_output_PENABLE ), //o
+ .io_output_PREADY (io_apbSlave_0_PREADY ), //i
+ .io_output_PWRITE (io_apbSlave_0_logic_io_output_PWRITE ), //o
+ .io_output_PWDATA (io_apbSlave_0_logic_io_output_PWDATA[31:0] ), //o
+ .io_output_PRDATA (io_apbSlave_0_PRDATA[31:0] ), //i
+ .io_output_PSLVERROR (io_apbSlave_0_PSLVERROR ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign axi_aw_halfPipe_fire = (axi_aw_halfPipe_valid && axi_aw_halfPipe_ready);
+ assign axi_awready = (! axi_aw_rValid);
+ assign axi_aw_halfPipe_valid = axi_aw_rValid;
+ assign axi_aw_halfPipe_payload_addr = axi_aw_rData_addr;
+ assign axi_aw_halfPipe_payload_len = axi_aw_rData_len;
+ assign axi_aw_halfPipe_payload_size = axi_aw_rData_size;
+ assign axi_aw_halfPipe_payload_cache = axi_aw_rData_cache;
+ assign axi_aw_halfPipe_payload_prot = axi_aw_rData_prot;
+ assign axi_aw_halfPipe_ready = streamArbiter_io_inputs_1_ready;
+ assign axi_w_halfPipe_fire = (axi_w_halfPipe_valid && axi_w_halfPipe_ready);
+ assign axi_wready = (! axi_w_rValid);
+ assign axi_w_halfPipe_valid = axi_w_rValid;
+ assign axi_w_halfPipe_payload_data = axi_w_rData_data;
+ assign axi_w_halfPipe_payload_strb = axi_w_rData_strb;
+ assign axi_w_halfPipe_payload_last = axi_w_rData_last;
+ assign axi_w_halfPipe_ready = axiShared_w_ready;
+ assign _zz_axiShared_b_ready = (! _zz_axi_bvalid_1);
+ assign _zz_axi_bvalid = _zz_axi_bvalid_1;
+ assign axi_bvalid = _zz_axi_bvalid;
+ assign axi_bresp = _zz_axi_bresp;
+ assign axi_ar_halfPipe_fire = (axi_ar_halfPipe_valid && axi_ar_halfPipe_ready);
+ assign axi_arready = (! axi_ar_rValid);
+ assign axi_ar_halfPipe_valid = axi_ar_rValid;
+ assign axi_ar_halfPipe_payload_addr = axi_ar_rData_addr;
+ assign axi_ar_halfPipe_payload_len = axi_ar_rData_len;
+ assign axi_ar_halfPipe_payload_size = axi_ar_rData_size;
+ assign axi_ar_halfPipe_payload_cache = axi_ar_rData_cache;
+ assign axi_ar_halfPipe_payload_prot = axi_ar_rData_prot;
+ assign axi_ar_halfPipe_ready = streamArbiter_io_inputs_0_ready;
+ assign _zz_axiShared_r_ready = (! _zz_axi_rvalid_1);
+ assign _zz_axi_rvalid = _zz_axi_rvalid_1;
+ assign axi_rvalid = _zz_axi_rvalid;
+ assign axi_rdata = _zz_axi_rdata;
+ assign axi_rresp = _zz_axi_rresp;
+ assign axi_rlast = _zz_axi_rlast;
+ assign axiShared_arw_valid = streamArbiter_io_output_valid;
+ assign axiShared_arw_payload_addr = streamArbiter_io_output_payload_addr;
+ assign axiShared_arw_payload_len = streamArbiter_io_output_payload_len;
+ assign axiShared_arw_payload_size = streamArbiter_io_output_payload_size;
+ assign axiShared_arw_payload_cache = streamArbiter_io_output_payload_cache;
+ assign axiShared_arw_payload_prot = streamArbiter_io_output_payload_prot;
+ assign axiShared_arw_payload_write = streamArbiter_io_chosenOH[1];
+ assign axiShared_w_valid = axi_w_halfPipe_valid;
+ assign axiShared_w_payload_data = axi_w_halfPipe_payload_data;
+ assign axiShared_w_payload_strb = axi_w_halfPipe_payload_strb;
+ assign axiShared_w_payload_last = axi_w_halfPipe_payload_last;
+ assign axiShared_b_ready = _zz_axiShared_b_ready;
+ assign axiShared_r_ready = _zz_axiShared_r_ready;
+ assign axiShared_arw_ready = axiToBmb_io_axi_arw_ready;
+ assign axiShared_w_ready = axiToBmb_io_axi_w_ready;
+ assign axiShared_b_valid = axiToBmb_io_axi_b_valid;
+ assign axiShared_b_payload_resp = axiToBmb_io_axi_b_payload_resp;
+ assign axiShared_r_valid = axiToBmb_io_axi_r_valid;
+ assign axiShared_r_payload_data = axiToBmb_io_axi_r_payload_data;
+ assign axiShared_r_payload_last = axiToBmb_io_axi_r_payload_last;
+ assign axiShared_r_payload_resp = axiToBmb_io_axi_r_payload_resp;
+ assign bmbPeripheral_bmb_cmd_valid = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = bmbPeripheral_bmb_cmd_ready;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = bmbPeripheral_bmb_rsp_valid;
+ assign bmbPeripheral_bmb_rsp_ready = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready;
+ assign bmbPeripheral_bmb_cmd_payload_last = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = bmbPeripheral_bmb_rsp_payload_last;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_opcode = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_address = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_length = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_data = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_mask = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_mask;
+ assign bmbPeripheral_bmb_cmd_payload_fragment_context = bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = bmbPeripheral_bmb_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = bmbPeripheral_bmb_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = bmbPeripheral_bmb_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbHandle_unburstify_io_output_cmd_valid;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbHandle_unburstify_io_output_rsp_ready;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbHandle_unburstify_io_output_cmd_payload_last;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbHandle_unburstify_io_output_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbHandle_unburstify_io_output_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbHandle_unburstify_io_output_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbHandle_unburstify_io_output_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_mask = bmbHandle_unburstify_io_output_cmd_payload_fragment_mask;
+ assign bmbPeripheral_bmb_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbHandle_unburstify_io_output_cmd_payload_fragment_context;
+ assign bmbPeripheral_bmb_cmd_ready = bmbPeripheral_bmb_decoder_io_input_cmd_ready;
+ assign bmbPeripheral_bmb_rsp_valid = bmbPeripheral_bmb_decoder_io_input_rsp_valid;
+ assign bmbPeripheral_bmb_rsp_payload_last = bmbPeripheral_bmb_decoder_io_input_rsp_payload_last;
+ assign bmbPeripheral_bmb_rsp_payload_fragment_opcode = bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_rsp_payload_fragment_data = bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_rsp_payload_fragment_context = bmbPeripheral_bmb_decoder_io_input_rsp_payload_fragment_context;
+ assign system_uart_0_io_txd = system_uart_0_io_logic_io_uart_txd;
+ assign system_i2c_0_io_sda_write = system_i2c_0_io_logic_io_i2c_sda_write;
+ assign system_i2c_0_io_scl_write = system_i2c_0_io_logic_io_i2c_scl_write;
+ assign system_gpio_0_io_write = system_gpio_0_io_logic_io_gpio_write;
+ assign system_gpio_0_io_writeEnable = system_gpio_0_io_logic_io_gpio_writeEnable;
+ assign system_gpio_0_io_interrupts_0_source = system_gpio_0_io_logic_io_interrupt[0];
+ assign system_gpio_0_io_interrupts_1_source = system_gpio_0_io_logic_io_interrupt[1];
+ assign system_gpio_0_io_interrupts_2 = system_gpio_0_io_logic_io_interrupt[2];
+ assign system_gpio_0_io_interrupts_3 = system_gpio_0_io_logic_io_interrupt[3];
+ assign system_watchdog_logic_panics_0_source = system_watchdog_logic_logic_io_panics[0];
+ assign io_apbSlave_0_PADDR = io_apbSlave_0_logic_io_output_PADDR;
+ assign io_apbSlave_0_PSEL = io_apbSlave_0_logic_io_output_PSEL;
+ assign io_apbSlave_0_PENABLE = io_apbSlave_0_logic_io_output_PENABLE;
+ assign io_apbSlave_0_PWRITE = io_apbSlave_0_logic_io_output_PWRITE;
+ assign io_apbSlave_0_PWDATA = io_apbSlave_0_logic_io_output_PWDATA;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire = (system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid && system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready);
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = (! system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid);
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready = system_uart_0_io_logic_io_bus_cmd_ready;
+ assign _zz_io_bus_rsp_ready = (! _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1);
+ assign _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign system_uart_0_io_interrupt = system_uart_0_io_logic_system_uart_0_io_interrupt_source;
+ assign system_spi_0_io_interrupt = system_spi_0_io_logic_system_spi_0_io_interrupt_source;
+ assign system_spi_0_io_sclk_write = system_spi_0_io_logic_io_spi_sclk_write;
+ assign system_spi_0_io_data_0_writeEnable = system_spi_0_io_logic_io_spi_data_0_writeEnable;
+ assign system_spi_0_io_data_0_write = system_spi_0_io_logic_io_spi_data_0_write;
+ assign system_spi_0_io_data_1_writeEnable = system_spi_0_io_logic_io_spi_data_1_writeEnable;
+ assign system_spi_0_io_data_1_write = system_spi_0_io_logic_io_spi_data_1_write;
+ assign system_spi_0_io_data_2_writeEnable = system_spi_0_io_logic_io_spi_data_2_writeEnable;
+ assign system_spi_0_io_data_2_write = system_spi_0_io_logic_io_spi_data_2_write;
+ assign system_spi_0_io_data_3_writeEnable = system_spi_0_io_logic_io_spi_data_3_writeEnable;
+ assign system_spi_0_io_data_3_write = system_spi_0_io_logic_io_spi_data_3_write;
+ assign system_spi_0_io_ss = system_spi_0_io_logic_io_spi_ss;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire = (system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid && system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready);
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = (! system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid);
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready = system_spi_0_io_logic_io_ctrl_cmd_ready;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = system_spi_0_io_logic_io_ctrl_rsp_valid;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = system_spi_0_io_logic_io_ctrl_rsp_payload_last;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_opcode;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_data;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = system_spi_0_io_logic_io_ctrl_rsp_payload_fragment_context;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire = (system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid && system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready);
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = (! system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid);
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_valid = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_last = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_opcode = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_address = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_length = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_data = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_payload_fragment_context = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_ready = system_i2c_0_io_logic_io_ctrl_cmd_ready;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = system_i2c_0_io_logic_io_ctrl_rsp_valid;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = system_i2c_0_io_logic_io_ctrl_rsp_payload_last;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_opcode;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_data;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = system_i2c_0_io_logic_io_ctrl_rsp_payload_fragment_context;
+ assign system_i2c_0_io_interrupt = system_i2c_0_io_logic_system_i2c_0_io_interrupt_source;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = system_gpio_0_io_logic_io_bus_cmd_ready;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = system_gpio_0_io_logic_io_bus_rsp_valid;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = system_gpio_0_io_logic_io_bus_rsp_payload_last;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = system_gpio_0_io_logic_io_bus_rsp_payload_fragment_opcode;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = system_gpio_0_io_logic_io_bus_rsp_payload_fragment_data;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = system_gpio_0_io_logic_io_bus_rsp_payload_fragment_context;
+ assign system_gpio_0_io_interrupts_0 = system_gpio_0_io_interrupts_0_source;
+ assign system_gpio_0_io_interrupts_1 = system_gpio_0_io_interrupts_1_source;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = system_watchdog_logic_logic_io_bus_cmd_ready;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = system_watchdog_logic_logic_io_bus_rsp_valid;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = system_watchdog_logic_logic_io_bus_rsp_payload_last;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = system_watchdog_logic_logic_io_bus_rsp_payload_fragment_opcode;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = system_watchdog_logic_logic_io_bus_rsp_payload_fragment_data;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = system_watchdog_logic_logic_io_bus_rsp_payload_fragment_context;
+ assign system_watchdog_logic_panics_0 = system_watchdog_logic_panics_0_source;
+ assign system_watchdog_hardPanic_reset = system_watchdog_logic_logic_io_panics[1];
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready = io_apbSlave_0_logic_io_input_cmd_ready;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid = io_apbSlave_0_logic_io_input_rsp_valid;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last = io_apbSlave_0_logic_io_input_rsp_payload_last;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode = io_apbSlave_0_logic_io_input_rsp_payload_fragment_opcode;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data = io_apbSlave_0_logic_io_input_rsp_payload_fragment_data;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context = io_apbSlave_0_logic_io_input_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready = bmbPeripheral_bmb_decoder_io_outputs_0_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context = bmbPeripheral_bmb_decoder_io_outputs_0_cmd_payload_fragment_context;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address[5:0];
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data;
+ assign system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context = system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready_1 = bmbPeripheral_bmb_decoder_io_outputs_1_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_1 = bmbPeripheral_bmb_decoder_io_outputs_1_cmd_payload_fragment_context;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid_1;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready_1;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last_1;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_1;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_1[11:0];
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_1;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_1;
+ assign system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_1;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_1 = system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready_2 = bmbPeripheral_bmb_decoder_io_outputs_2_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_2 = bmbPeripheral_bmb_decoder_io_outputs_2_cmd_payload_fragment_context;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid_2;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready_2;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last_2;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_2;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_2[7:0];
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_2;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_2;
+ assign system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_2;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_2 = system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready_3 = bmbPeripheral_bmb_decoder_io_outputs_3_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_3 = bmbPeripheral_bmb_decoder_io_outputs_3_cmd_payload_fragment_context;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid_3;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready_3;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last_3;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_3;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_3[7:0];
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_3;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_3;
+ assign system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_3;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_3 = system_gpio_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready_4 = bmbPeripheral_bmb_decoder_io_outputs_4_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_4 = bmbPeripheral_bmb_decoder_io_outputs_4_cmd_payload_fragment_context;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid_4;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready_4;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last_4;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_4;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_4[7:0];
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_4;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_4;
+ assign system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_4;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_4 = system_watchdog_logic_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ assign bmbPeripheral_bmb_withoutMask_cmd_valid_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_valid;
+ assign bmbPeripheral_bmb_withoutMask_rsp_ready_5 = bmbPeripheral_bmb_decoder_io_outputs_5_rsp_ready;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_last_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_last;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_address;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_length;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_5 = bmbPeripheral_bmb_decoder_io_outputs_5_cmd_payload_fragment_context;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid = bmbPeripheral_bmb_withoutMask_cmd_valid_5;
+ assign bmbPeripheral_bmb_withoutMask_cmd_ready_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready;
+ assign bmbPeripheral_bmb_withoutMask_rsp_valid_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready = bmbPeripheral_bmb_withoutMask_rsp_ready_5;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last = bmbPeripheral_bmb_withoutMask_cmd_payload_last_5;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_last_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_opcode_5;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_address_5[15:0];
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_length_5;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_data_5;
+ assign io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context = bmbPeripheral_bmb_withoutMask_cmd_payload_fragment_context_5;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_opcode_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_data_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data;
+ assign bmbPeripheral_bmb_withoutMask_rsp_payload_fragment_context_5 = io_apbSlave_0_input_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context;
+ always @(posedge clk) begin
+ if(reset) begin
+ axi_aw_rValid <= 1'b0;
+ axi_w_rValid <= 1'b0;
+ _zz_axi_bvalid_1 <= 1'b0;
+ axi_ar_rValid <= 1'b0;
+ _zz_axi_rvalid_1 <= 1'b0;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1 <= 1'b0;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ end else begin
+ if(axi_awvalid) begin
+ axi_aw_rValid <= 1'b1;
+ end
+ if(axi_aw_halfPipe_fire) begin
+ axi_aw_rValid <= 1'b0;
+ end
+ if(axi_wvalid) begin
+ axi_w_rValid <= 1'b1;
+ end
+ if(axi_w_halfPipe_fire) begin
+ axi_w_rValid <= 1'b0;
+ end
+ if(axiShared_b_valid) begin
+ _zz_axi_bvalid_1 <= 1'b1;
+ end
+ if((_zz_axi_bvalid && axi_bready)) begin
+ _zz_axi_bvalid_1 <= 1'b0;
+ end
+ if(axi_arvalid) begin
+ axi_ar_rValid <= 1'b1;
+ end
+ if(axi_ar_halfPipe_fire) begin
+ axi_ar_rValid <= 1'b0;
+ end
+ if(axiShared_r_valid) begin
+ _zz_axi_rvalid_1 <= 1'b1;
+ end
+ if((_zz_axi_rvalid && axi_rready)) begin
+ _zz_axi_rvalid_1 <= 1'b0;
+ end
+ if(system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid) begin
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b1;
+ end
+ if(system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire) begin
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ end
+ if(system_uart_0_io_logic_io_bus_rsp_valid) begin
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1 <= 1'b1;
+ end
+ if((_zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid && system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_ready)) begin
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_valid_1 <= 1'b0;
+ end
+ if(system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid) begin
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b1;
+ end
+ if(system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire) begin
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ end
+ if(system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_valid) begin
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b1;
+ end
+ if(system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_halfPipe_fire) begin
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rValid <= 1'b0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(axi_awready) begin
+ axi_aw_rData_addr <= axi_awaddr;
+ axi_aw_rData_len <= axi_awlen;
+ axi_aw_rData_size <= axi_awsize;
+ axi_aw_rData_cache <= axi_awcache;
+ axi_aw_rData_prot <= axi_awprot;
+ end
+ if(axi_wready) begin
+ axi_w_rData_data <= axi_wdata;
+ axi_w_rData_strb <= axi_wstrb;
+ axi_w_rData_last <= axi_wlast;
+ end
+ if(_zz_axiShared_b_ready) begin
+ _zz_axi_bresp <= axiShared_b_payload_resp;
+ end
+ if(axi_arready) begin
+ axi_ar_rData_addr <= axi_araddr;
+ axi_ar_rData_len <= axi_arlen;
+ axi_ar_rData_size <= axi_arsize;
+ axi_ar_rData_cache <= axi_arcache;
+ axi_ar_rData_prot <= axi_arprot;
+ end
+ if(_zz_axiShared_r_ready) begin
+ _zz_axi_rdata <= axiShared_r_payload_data;
+ _zz_axi_rresp <= axiShared_r_payload_resp;
+ _zz_axi_rlast <= axiShared_r_payload_last;
+ end
+ if(system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready) begin
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context <= system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ end
+ if(_zz_io_bus_rsp_ready) begin
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_last <= system_uart_0_io_logic_io_bus_rsp_payload_last;
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_opcode <= system_uart_0_io_logic_io_bus_rsp_payload_fragment_opcode;
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_data <= system_uart_0_io_logic_io_bus_rsp_payload_fragment_data;
+ _zz_system_uart_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_rsp_payload_fragment_context <= system_uart_0_io_logic_io_bus_rsp_payload_fragment_context;
+ end
+ if(system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready) begin
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context <= system_spi_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ end
+ if(system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_ready) begin
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_last <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_last;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_opcode <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_opcode;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_address <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_address;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_length <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_length;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_data <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_data;
+ system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_rData_fragment_context <= system_i2c_0_io_ctrl_slaveModel_arbiterGen_oneToOne_arbiter_cmd_payload_fragment_context;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbToApb3Bridge (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [15:0] io_input_cmd_payload_fragment_address,
+ input wire [1:0] io_input_cmd_payload_fragment_length,
+ input wire [31:0] io_input_cmd_payload_fragment_data,
+ input wire [2:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [31:0] io_input_rsp_payload_fragment_data,
+ output wire [2:0] io_input_rsp_payload_fragment_context,
+ output wire [15:0] io_output_PADDR,
+ output wire [0:0] io_output_PSEL,
+ output wire io_output_PENABLE,
+ input wire io_output_PREADY,
+ output wire io_output_PWRITE,
+ output wire [31:0] io_output_PWDATA,
+ input wire [31:0] io_output_PRDATA,
+ input wire io_output_PSLVERROR,
+ input wire clk,
+ input wire reset
+);
+
+ wire bmbBuffer_cmd_valid;
+ reg bmbBuffer_cmd_ready;
+ wire bmbBuffer_cmd_payload_last;
+ wire [0:0] bmbBuffer_cmd_payload_fragment_opcode;
+ wire [15:0] bmbBuffer_cmd_payload_fragment_address;
+ wire [1:0] bmbBuffer_cmd_payload_fragment_length;
+ wire [31:0] bmbBuffer_cmd_payload_fragment_data;
+ wire [2:0] bmbBuffer_cmd_payload_fragment_context;
+ reg bmbBuffer_rsp_valid;
+ reg bmbBuffer_rsp_ready;
+ wire bmbBuffer_rsp_payload_last;
+ reg [0:0] bmbBuffer_rsp_payload_fragment_opcode;
+ wire [31:0] bmbBuffer_rsp_payload_fragment_data;
+ wire [2:0] bmbBuffer_rsp_payload_fragment_context;
+ wire io_input_rsp_isStall;
+ wire _zz_io_input_cmd_ready;
+ wire bmbBuffer_rsp_m2sPipe_valid;
+ wire bmbBuffer_rsp_m2sPipe_ready;
+ wire bmbBuffer_rsp_m2sPipe_payload_last;
+ wire [0:0] bmbBuffer_rsp_m2sPipe_payload_fragment_opcode;
+ wire [31:0] bmbBuffer_rsp_m2sPipe_payload_fragment_data;
+ wire [2:0] bmbBuffer_rsp_m2sPipe_payload_fragment_context;
+ reg bmbBuffer_rsp_rValid;
+ reg bmbBuffer_rsp_rData_last;
+ reg [0:0] bmbBuffer_rsp_rData_fragment_opcode;
+ reg [31:0] bmbBuffer_rsp_rData_fragment_data;
+ reg [2:0] bmbBuffer_rsp_rData_fragment_context;
+ wire when_Stream_l375;
+ reg state;
+ wire when_BmbToApb3Bridge_l46;
+
+ assign io_input_rsp_isStall = (io_input_rsp_valid && (! io_input_rsp_ready));
+ assign _zz_io_input_cmd_ready = (! io_input_rsp_isStall);
+ assign io_input_cmd_ready = (bmbBuffer_cmd_ready && _zz_io_input_cmd_ready);
+ assign bmbBuffer_cmd_valid = (io_input_cmd_valid && _zz_io_input_cmd_ready);
+ assign bmbBuffer_cmd_payload_last = io_input_cmd_payload_last;
+ assign bmbBuffer_cmd_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign bmbBuffer_cmd_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign bmbBuffer_cmd_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign bmbBuffer_cmd_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign bmbBuffer_cmd_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ always @(*) begin
+ bmbBuffer_rsp_ready = bmbBuffer_rsp_m2sPipe_ready;
+ if(when_Stream_l375) begin
+ bmbBuffer_rsp_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! bmbBuffer_rsp_m2sPipe_valid);
+ assign bmbBuffer_rsp_m2sPipe_valid = bmbBuffer_rsp_rValid;
+ assign bmbBuffer_rsp_m2sPipe_payload_last = bmbBuffer_rsp_rData_last;
+ assign bmbBuffer_rsp_m2sPipe_payload_fragment_opcode = bmbBuffer_rsp_rData_fragment_opcode;
+ assign bmbBuffer_rsp_m2sPipe_payload_fragment_data = bmbBuffer_rsp_rData_fragment_data;
+ assign bmbBuffer_rsp_m2sPipe_payload_fragment_context = bmbBuffer_rsp_rData_fragment_context;
+ assign io_input_rsp_valid = bmbBuffer_rsp_m2sPipe_valid;
+ assign bmbBuffer_rsp_m2sPipe_ready = io_input_rsp_ready;
+ assign io_input_rsp_payload_last = bmbBuffer_rsp_m2sPipe_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = bmbBuffer_rsp_m2sPipe_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_data = bmbBuffer_rsp_m2sPipe_payload_fragment_data;
+ assign io_input_rsp_payload_fragment_context = bmbBuffer_rsp_m2sPipe_payload_fragment_context;
+ always @(*) begin
+ bmbBuffer_cmd_ready = 1'b0;
+ if(!when_BmbToApb3Bridge_l46) begin
+ if(io_output_PREADY) begin
+ bmbBuffer_cmd_ready = 1'b1;
+ end
+ end
+ end
+
+ assign io_output_PSEL[0] = bmbBuffer_cmd_valid;
+ assign io_output_PENABLE = state;
+ assign io_output_PWRITE = (bmbBuffer_cmd_payload_fragment_opcode == 1'b1);
+ assign io_output_PADDR = bmbBuffer_cmd_payload_fragment_address;
+ assign io_output_PWDATA = bmbBuffer_cmd_payload_fragment_data;
+ always @(*) begin
+ bmbBuffer_rsp_valid = 1'b0;
+ if(!when_BmbToApb3Bridge_l46) begin
+ if(io_output_PREADY) begin
+ bmbBuffer_rsp_valid = 1'b1;
+ end
+ end
+ end
+
+ assign bmbBuffer_rsp_payload_fragment_data = io_output_PRDATA;
+ assign when_BmbToApb3Bridge_l46 = (! state);
+ assign bmbBuffer_rsp_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign bmbBuffer_rsp_payload_last = 1'b1;
+ always @(*) begin
+ bmbBuffer_rsp_payload_fragment_opcode = 1'b0;
+ if(io_output_PSLVERROR) begin
+ bmbBuffer_rsp_payload_fragment_opcode = 1'b1;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ bmbBuffer_rsp_rValid <= 1'b0;
+ state <= 1'b0;
+ end else begin
+ if(bmbBuffer_rsp_ready) begin
+ bmbBuffer_rsp_rValid <= bmbBuffer_rsp_valid;
+ end
+ if(when_BmbToApb3Bridge_l46) begin
+ state <= bmbBuffer_cmd_valid;
+ end else begin
+ if(io_output_PREADY) begin
+ state <= 1'b0;
+ end
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(bmbBuffer_rsp_ready) begin
+ bmbBuffer_rsp_rData_last <= bmbBuffer_rsp_payload_last;
+ bmbBuffer_rsp_rData_fragment_opcode <= bmbBuffer_rsp_payload_fragment_opcode;
+ bmbBuffer_rsp_rData_fragment_data <= bmbBuffer_rsp_payload_fragment_data;
+ bmbBuffer_rsp_rData_fragment_context <= bmbBuffer_rsp_payload_fragment_context;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbWatchdog (
+ input wire io_bus_cmd_valid,
+ output wire io_bus_cmd_ready,
+ input wire io_bus_cmd_payload_last,
+ input wire [0:0] io_bus_cmd_payload_fragment_opcode,
+ input wire [7:0] io_bus_cmd_payload_fragment_address,
+ input wire [1:0] io_bus_cmd_payload_fragment_length,
+ input wire [31:0] io_bus_cmd_payload_fragment_data,
+ input wire [2:0] io_bus_cmd_payload_fragment_context,
+ output wire io_bus_rsp_valid,
+ input wire io_bus_rsp_ready,
+ output wire io_bus_rsp_payload_last,
+ output wire [0:0] io_bus_rsp_payload_fragment_opcode,
+ output wire [31:0] io_bus_rsp_payload_fragment_data,
+ output wire [2:0] io_bus_rsp_payload_fragment_context,
+ output wire [1:0] io_panics,
+ input wire io_heartBeat,
+ input wire clk,
+ input wire reset
+);
+
+ wire wd_prescaler_io_clear;
+ wire wd_prescaler_io_overflow;
+ wire wd_counters_0_timer_io_full;
+ wire [15:0] wd_counters_0_timer_io_value;
+ wire wd_counters_1_timer_io_full;
+ wire [15:0] wd_counters_1_timer_io_value;
+ reg [1:0] wd_api_enables;
+ reg wd_api_heartbeat;
+ reg [1:0] wd_api_panics;
+ wire wd_counters_0_clear;
+ reg wd_counters_0_full;
+ wire wd_counters_1_clear;
+ reg wd_counters_1_full;
+ wire busCtrl_readErrorFlag;
+ wire busCtrl_writeErrorFlag;
+ wire busCtrl_readHaltTrigger;
+ wire busCtrl_writeHaltTrigger;
+ wire busCtrl_rsp_valid;
+ wire busCtrl_rsp_ready;
+ wire busCtrl_rsp_payload_last;
+ reg [0:0] busCtrl_rsp_payload_fragment_opcode;
+ reg [31:0] busCtrl_rsp_payload_fragment_data;
+ wire [2:0] busCtrl_rsp_payload_fragment_context;
+ wire _zz_busCtrl_rsp_ready;
+ reg _zz_busCtrl_rsp_ready_1;
+ wire _zz_io_bus_rsp_valid;
+ reg _zz_io_bus_rsp_valid_1;
+ reg _zz_io_bus_rsp_payload_last;
+ reg [0:0] _zz_io_bus_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_bus_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_bus_rsp_payload_fragment_context;
+ wire when_Stream_l375;
+ wire busCtrl_askWrite;
+ wire busCtrl_askRead;
+ wire io_bus_cmd_fire;
+ wire busCtrl_doWrite;
+ wire busCtrl_doRead;
+ wire when_BmbSlaveFactory_l33;
+ wire when_BmbSlaveFactory_l35;
+ reg driver_unlocked;
+ reg _zz_when_Watchdog_l42;
+ wire when_Watchdog_l42;
+ reg _zz_when_Watchdog_l43;
+ wire when_Watchdog_l43;
+ reg _zz_wd_api_heartbeat;
+ wire [1:0] _zz_when_Watchdog_l52;
+ reg _zz_when_Watchdog_l50;
+ wire when_Watchdog_l50;
+ wire when_Watchdog_l52;
+ wire when_Watchdog_l52_1;
+ reg _zz_when_Watchdog_l55;
+ wire when_Watchdog_l55;
+ wire when_Watchdog_l57;
+ wire when_Watchdog_l57_1;
+ reg [23:0] _zz_io_limit;
+ reg [15:0] _zz_io_limit_1;
+ reg [15:0] _zz_io_limit_2;
+
+ Axi4PeripheralPrescaler wd_prescaler (
+ .io_clear (wd_prescaler_io_clear ), //i
+ .io_limit (_zz_io_limit[23:0] ), //i
+ .io_overflow (wd_prescaler_io_overflow), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralTimer wd_counters_0_timer (
+ .io_tick (wd_prescaler_io_overflow ), //i
+ .io_clear (wd_counters_0_clear ), //i
+ .io_limit (_zz_io_limit_1[15:0] ), //i
+ .io_full (wd_counters_0_timer_io_full ), //o
+ .io_value (wd_counters_0_timer_io_value[15:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralTimer wd_counters_1_timer (
+ .io_tick (wd_prescaler_io_overflow ), //i
+ .io_clear (wd_counters_1_clear ), //i
+ .io_limit (_zz_io_limit_2[15:0] ), //i
+ .io_full (wd_counters_1_timer_io_full ), //o
+ .io_value (wd_counters_1_timer_io_value[15:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign wd_prescaler_io_clear = (wd_api_heartbeat || (wd_api_enables == 2'b00));
+ assign wd_counters_0_clear = ((! wd_api_enables[0]) || wd_api_heartbeat);
+ always @(*) begin
+ wd_api_panics[0] = wd_counters_0_full;
+ wd_api_panics[1] = wd_counters_1_full;
+ end
+
+ assign wd_counters_1_clear = ((! wd_api_enables[1]) || wd_api_heartbeat);
+ assign busCtrl_readErrorFlag = 1'b0;
+ assign busCtrl_writeErrorFlag = 1'b0;
+ assign busCtrl_readHaltTrigger = 1'b0;
+ assign busCtrl_writeHaltTrigger = 1'b0;
+ assign _zz_busCtrl_rsp_ready = (! (busCtrl_readHaltTrigger || busCtrl_writeHaltTrigger));
+ assign busCtrl_rsp_ready = (_zz_busCtrl_rsp_ready_1 && _zz_busCtrl_rsp_ready);
+ always @(*) begin
+ _zz_busCtrl_rsp_ready_1 = io_bus_rsp_ready;
+ if(when_Stream_l375) begin
+ _zz_busCtrl_rsp_ready_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! _zz_io_bus_rsp_valid);
+ assign _zz_io_bus_rsp_valid = _zz_io_bus_rsp_valid_1;
+ assign io_bus_rsp_valid = _zz_io_bus_rsp_valid;
+ assign io_bus_rsp_payload_last = _zz_io_bus_rsp_payload_last;
+ assign io_bus_rsp_payload_fragment_opcode = _zz_io_bus_rsp_payload_fragment_opcode;
+ assign io_bus_rsp_payload_fragment_data = _zz_io_bus_rsp_payload_fragment_data;
+ assign io_bus_rsp_payload_fragment_context = _zz_io_bus_rsp_payload_fragment_context;
+ assign busCtrl_askWrite = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_askRead = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign io_bus_cmd_fire = (io_bus_cmd_valid && io_bus_cmd_ready);
+ assign busCtrl_doWrite = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_doRead = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign busCtrl_rsp_valid = io_bus_cmd_valid;
+ assign io_bus_cmd_ready = busCtrl_rsp_ready;
+ assign busCtrl_rsp_payload_last = 1'b1;
+ assign when_BmbSlaveFactory_l33 = (busCtrl_doWrite && busCtrl_writeErrorFlag);
+ always @(*) begin
+ if(when_BmbSlaveFactory_l33) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ if(when_BmbSlaveFactory_l35) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b0;
+ end
+ end
+ end
+
+ assign when_BmbSlaveFactory_l35 = (busCtrl_doRead && busCtrl_readErrorFlag);
+ always @(*) begin
+ busCtrl_rsp_payload_fragment_data = 32'h0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'hc0 : begin
+ busCtrl_rsp_payload_fragment_data[15 : 0] = wd_counters_0_timer_io_value;
+ end
+ 8'hc4 : begin
+ busCtrl_rsp_payload_fragment_data[15 : 0] = wd_counters_1_timer_io_value;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign busCtrl_rsp_payload_fragment_context = io_bus_cmd_payload_fragment_context;
+ always @(*) begin
+ _zz_when_Watchdog_l42 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h0 : begin
+ if(busCtrl_doWrite) begin
+ _zz_when_Watchdog_l42 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_Watchdog_l42 = (_zz_when_Watchdog_l42 && (io_bus_cmd_payload_fragment_data[31 : 0] == 32'h3c21b925));
+ always @(*) begin
+ _zz_when_Watchdog_l43 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h0 : begin
+ if(busCtrl_doWrite) begin
+ _zz_when_Watchdog_l43 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_Watchdog_l43 = (_zz_when_Watchdog_l43 && (io_bus_cmd_payload_fragment_data[31 : 0] == 32'h3c21b924));
+ always @(*) begin
+ _zz_wd_api_heartbeat = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h0 : begin
+ if(busCtrl_doWrite) begin
+ _zz_wd_api_heartbeat = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ wd_api_heartbeat = (_zz_wd_api_heartbeat && (io_bus_cmd_payload_fragment_data[31 : 0] == 32'had68e70d));
+ if(io_heartBeat) begin
+ wd_api_heartbeat = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ _zz_when_Watchdog_l50 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h04 : begin
+ if(busCtrl_doWrite) begin
+ _zz_when_Watchdog_l50 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_Watchdog_l50 = (_zz_when_Watchdog_l50 && driver_unlocked);
+ assign when_Watchdog_l52 = _zz_when_Watchdog_l52[0];
+ assign when_Watchdog_l52_1 = _zz_when_Watchdog_l52[1];
+ always @(*) begin
+ _zz_when_Watchdog_l55 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h08 : begin
+ if(busCtrl_doWrite) begin
+ _zz_when_Watchdog_l55 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_Watchdog_l55 = (_zz_when_Watchdog_l55 && driver_unlocked);
+ assign when_Watchdog_l57 = _zz_when_Watchdog_l52[0];
+ assign when_Watchdog_l57_1 = _zz_when_Watchdog_l52[1];
+ assign io_panics = wd_api_panics;
+ assign _zz_when_Watchdog_l52 = io_bus_cmd_payload_fragment_data[1 : 0];
+ always @(posedge clk) begin
+ if(reset) begin
+ wd_counters_0_full <= 1'b0;
+ wd_counters_1_full <= 1'b0;
+ _zz_io_bus_rsp_valid_1 <= 1'b0;
+ driver_unlocked <= 1'b1;
+ wd_api_enables <= 2'b00;
+ _zz_io_limit <= 24'h0;
+ _zz_io_limit_1 <= 16'h0;
+ _zz_io_limit_2 <= 16'h0;
+ end else begin
+ if(wd_counters_0_timer_io_full) begin
+ wd_counters_0_full <= 1'b1;
+ end
+ if(wd_counters_0_clear) begin
+ wd_counters_0_full <= 1'b0;
+ end
+ if(wd_counters_1_timer_io_full) begin
+ wd_counters_1_full <= 1'b1;
+ end
+ if(wd_counters_1_clear) begin
+ wd_counters_1_full <= 1'b0;
+ end
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_bus_rsp_valid_1 <= (busCtrl_rsp_valid && _zz_busCtrl_rsp_ready);
+ end
+ if(when_Watchdog_l42) begin
+ driver_unlocked <= 1'b1;
+ end
+ if(when_Watchdog_l43) begin
+ driver_unlocked <= 1'b0;
+ end
+ if(when_Watchdog_l50) begin
+ if(when_Watchdog_l52) begin
+ wd_api_enables[0] <= 1'b1;
+ end
+ if(when_Watchdog_l52_1) begin
+ wd_api_enables[1] <= 1'b1;
+ end
+ end
+ if(when_Watchdog_l55) begin
+ if(when_Watchdog_l57) begin
+ wd_api_enables[0] <= 1'b0;
+ end
+ if(when_Watchdog_l57_1) begin
+ wd_api_enables[1] <= 1'b0;
+ end
+ end
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ if(driver_unlocked) begin
+ _zz_io_limit <= io_bus_cmd_payload_fragment_data[23 : 0];
+ end
+ end
+ end
+ 8'h80 : begin
+ if(busCtrl_doWrite) begin
+ if(driver_unlocked) begin
+ _zz_io_limit_1 <= io_bus_cmd_payload_fragment_data[15 : 0];
+ end
+ end
+ end
+ 8'h84 : begin
+ if(busCtrl_doWrite) begin
+ if(driver_unlocked) begin
+ _zz_io_limit_2 <= io_bus_cmd_payload_fragment_data[15 : 0];
+ end
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_bus_rsp_payload_last <= busCtrl_rsp_payload_last;
+ _zz_io_bus_rsp_payload_fragment_opcode <= busCtrl_rsp_payload_fragment_opcode;
+ _zz_io_bus_rsp_payload_fragment_data <= busCtrl_rsp_payload_fragment_data;
+ _zz_io_bus_rsp_payload_fragment_context <= busCtrl_rsp_payload_fragment_context;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbGpio2 (
+ input wire [3:0] io_gpio_read,
+ output reg [3:0] io_gpio_write,
+ output reg [3:0] io_gpio_writeEnable,
+ input wire io_bus_cmd_valid,
+ output wire io_bus_cmd_ready,
+ input wire io_bus_cmd_payload_last,
+ input wire [0:0] io_bus_cmd_payload_fragment_opcode,
+ input wire [7:0] io_bus_cmd_payload_fragment_address,
+ input wire [1:0] io_bus_cmd_payload_fragment_length,
+ input wire [31:0] io_bus_cmd_payload_fragment_data,
+ input wire [2:0] io_bus_cmd_payload_fragment_context,
+ output wire io_bus_rsp_valid,
+ input wire io_bus_rsp_ready,
+ output wire io_bus_rsp_payload_last,
+ output wire [0:0] io_bus_rsp_payload_fragment_opcode,
+ output wire [31:0] io_bus_rsp_payload_fragment_data,
+ output wire [2:0] io_bus_rsp_payload_fragment_context,
+ output reg [3:0] io_interrupt,
+ input wire clk,
+ input wire reset
+);
+
+ wire mapper_readErrorFlag;
+ wire mapper_writeErrorFlag;
+ wire mapper_readHaltTrigger;
+ wire mapper_writeHaltTrigger;
+ wire mapper_rsp_valid;
+ wire mapper_rsp_ready;
+ wire mapper_rsp_payload_last;
+ reg [0:0] mapper_rsp_payload_fragment_opcode;
+ reg [31:0] mapper_rsp_payload_fragment_data;
+ wire [2:0] mapper_rsp_payload_fragment_context;
+ wire _zz_mapper_rsp_ready;
+ reg _zz_mapper_rsp_ready_1;
+ wire _zz_io_bus_rsp_valid;
+ reg _zz_io_bus_rsp_valid_1;
+ reg _zz_io_bus_rsp_payload_last;
+ reg [0:0] _zz_io_bus_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_bus_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_bus_rsp_payload_fragment_context;
+ wire when_Stream_l375;
+ wire mapper_askWrite;
+ wire mapper_askRead;
+ wire io_bus_cmd_fire;
+ wire mapper_doWrite;
+ wire mapper_doRead;
+ wire when_BmbSlaveFactory_l33;
+ wire when_BmbSlaveFactory_l35;
+ reg [3:0] io_gpio_read_delay_1;
+ reg [3:0] syncronized;
+ reg [3:0] last;
+ reg _zz_io_gpio_write;
+ reg _zz_io_gpio_writeEnable;
+ reg _zz_io_gpio_write_1;
+ reg _zz_io_gpio_writeEnable_1;
+ reg _zz_io_gpio_write_2;
+ reg _zz_io_gpio_writeEnable_2;
+ reg _zz_io_gpio_write_3;
+ reg _zz_io_gpio_writeEnable_3;
+ reg [3:0] interrupt_enable_high;
+ reg [3:0] interrupt_enable_low;
+ reg [3:0] interrupt_enable_rise;
+ reg [3:0] interrupt_enable_fall;
+ wire [3:0] interrupt_valid;
+ reg _zz_mapper_rsp_payload_fragment_data;
+ reg _zz_mapper_rsp_payload_fragment_data_1;
+ reg _zz_mapper_rsp_payload_fragment_data_2;
+ reg _zz_mapper_rsp_payload_fragment_data_3;
+ reg _zz_mapper_rsp_payload_fragment_data_4;
+ reg _zz_mapper_rsp_payload_fragment_data_5;
+ reg _zz_mapper_rsp_payload_fragment_data_6;
+ reg _zz_mapper_rsp_payload_fragment_data_7;
+
+ assign mapper_readErrorFlag = 1'b0;
+ assign mapper_writeErrorFlag = 1'b0;
+ assign mapper_readHaltTrigger = 1'b0;
+ assign mapper_writeHaltTrigger = 1'b0;
+ assign _zz_mapper_rsp_ready = (! (mapper_readHaltTrigger || mapper_writeHaltTrigger));
+ assign mapper_rsp_ready = (_zz_mapper_rsp_ready_1 && _zz_mapper_rsp_ready);
+ always @(*) begin
+ _zz_mapper_rsp_ready_1 = io_bus_rsp_ready;
+ if(when_Stream_l375) begin
+ _zz_mapper_rsp_ready_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! _zz_io_bus_rsp_valid);
+ assign _zz_io_bus_rsp_valid = _zz_io_bus_rsp_valid_1;
+ assign io_bus_rsp_valid = _zz_io_bus_rsp_valid;
+ assign io_bus_rsp_payload_last = _zz_io_bus_rsp_payload_last;
+ assign io_bus_rsp_payload_fragment_opcode = _zz_io_bus_rsp_payload_fragment_opcode;
+ assign io_bus_rsp_payload_fragment_data = _zz_io_bus_rsp_payload_fragment_data;
+ assign io_bus_rsp_payload_fragment_context = _zz_io_bus_rsp_payload_fragment_context;
+ assign mapper_askWrite = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign mapper_askRead = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign io_bus_cmd_fire = (io_bus_cmd_valid && io_bus_cmd_ready);
+ assign mapper_doWrite = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign mapper_doRead = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign mapper_rsp_valid = io_bus_cmd_valid;
+ assign io_bus_cmd_ready = mapper_rsp_ready;
+ assign mapper_rsp_payload_last = 1'b1;
+ assign when_BmbSlaveFactory_l33 = (mapper_doWrite && mapper_writeErrorFlag);
+ always @(*) begin
+ if(when_BmbSlaveFactory_l33) begin
+ mapper_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ if(when_BmbSlaveFactory_l35) begin
+ mapper_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ mapper_rsp_payload_fragment_opcode = 1'b0;
+ end
+ end
+ end
+
+ assign when_BmbSlaveFactory_l35 = (mapper_doRead && mapper_readErrorFlag);
+ always @(*) begin
+ mapper_rsp_payload_fragment_data = 32'h0;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h0 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = syncronized[0];
+ mapper_rsp_payload_fragment_data[1 : 1] = syncronized[1];
+ mapper_rsp_payload_fragment_data[2 : 2] = syncronized[2];
+ mapper_rsp_payload_fragment_data[3 : 3] = syncronized[3];
+ end
+ 8'h04 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_io_gpio_write;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_io_gpio_write_1;
+ mapper_rsp_payload_fragment_data[2 : 2] = _zz_io_gpio_write_2;
+ mapper_rsp_payload_fragment_data[3 : 3] = _zz_io_gpio_write_3;
+ end
+ 8'h08 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_io_gpio_writeEnable;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_io_gpio_writeEnable_1;
+ mapper_rsp_payload_fragment_data[2 : 2] = _zz_io_gpio_writeEnable_2;
+ mapper_rsp_payload_fragment_data[3 : 3] = _zz_io_gpio_writeEnable_3;
+ end
+ 8'h20 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_mapper_rsp_payload_fragment_data;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_mapper_rsp_payload_fragment_data_4;
+ end
+ 8'h24 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_mapper_rsp_payload_fragment_data_1;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_mapper_rsp_payload_fragment_data_5;
+ end
+ 8'h28 : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_mapper_rsp_payload_fragment_data_2;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_mapper_rsp_payload_fragment_data_6;
+ end
+ 8'h2c : begin
+ mapper_rsp_payload_fragment_data[0 : 0] = _zz_mapper_rsp_payload_fragment_data_3;
+ mapper_rsp_payload_fragment_data[1 : 1] = _zz_mapper_rsp_payload_fragment_data_7;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign mapper_rsp_payload_fragment_context = io_bus_cmd_payload_fragment_context;
+ always @(*) begin
+ io_gpio_write[0] = _zz_io_gpio_write;
+ io_gpio_write[1] = _zz_io_gpio_write_1;
+ io_gpio_write[2] = _zz_io_gpio_write_2;
+ io_gpio_write[3] = _zz_io_gpio_write_3;
+ end
+
+ always @(*) begin
+ io_gpio_writeEnable[0] = _zz_io_gpio_writeEnable;
+ io_gpio_writeEnable[1] = _zz_io_gpio_writeEnable_1;
+ io_gpio_writeEnable[2] = _zz_io_gpio_writeEnable_2;
+ io_gpio_writeEnable[3] = _zz_io_gpio_writeEnable_3;
+ end
+
+ assign interrupt_valid = ((((interrupt_enable_high & syncronized) | (interrupt_enable_low & (~ syncronized))) | (interrupt_enable_rise & (syncronized & (~ last)))) | (interrupt_enable_fall & ((~ syncronized) & last)));
+ always @(*) begin
+ io_interrupt[0] = interrupt_valid[0];
+ io_interrupt[1] = interrupt_valid[1];
+ io_interrupt[2] = 1'b0;
+ io_interrupt[3] = 1'b0;
+ end
+
+ always @(*) begin
+ interrupt_enable_rise[0] = _zz_mapper_rsp_payload_fragment_data;
+ interrupt_enable_rise[1] = _zz_mapper_rsp_payload_fragment_data_4;
+ interrupt_enable_rise[2] = 1'b0;
+ interrupt_enable_rise[3] = 1'b0;
+ end
+
+ always @(*) begin
+ interrupt_enable_fall[0] = _zz_mapper_rsp_payload_fragment_data_1;
+ interrupt_enable_fall[1] = _zz_mapper_rsp_payload_fragment_data_5;
+ interrupt_enable_fall[2] = 1'b0;
+ interrupt_enable_fall[3] = 1'b0;
+ end
+
+ always @(*) begin
+ interrupt_enable_high[0] = _zz_mapper_rsp_payload_fragment_data_2;
+ interrupt_enable_high[1] = _zz_mapper_rsp_payload_fragment_data_6;
+ interrupt_enable_high[2] = 1'b0;
+ interrupt_enable_high[3] = 1'b0;
+ end
+
+ always @(*) begin
+ interrupt_enable_low[0] = _zz_mapper_rsp_payload_fragment_data_3;
+ interrupt_enable_low[1] = _zz_mapper_rsp_payload_fragment_data_7;
+ interrupt_enable_low[2] = 1'b0;
+ interrupt_enable_low[3] = 1'b0;
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ _zz_io_bus_rsp_valid_1 <= 1'b0;
+ _zz_io_gpio_writeEnable <= 1'b0;
+ _zz_io_gpio_writeEnable_1 <= 1'b0;
+ _zz_io_gpio_writeEnable_2 <= 1'b0;
+ _zz_io_gpio_writeEnable_3 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_1 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_2 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_3 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_4 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_5 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_6 <= 1'b0;
+ _zz_mapper_rsp_payload_fragment_data_7 <= 1'b0;
+ end else begin
+ if(_zz_mapper_rsp_ready_1) begin
+ _zz_io_bus_rsp_valid_1 <= (mapper_rsp_valid && _zz_mapper_rsp_ready);
+ end
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h08 : begin
+ if(mapper_doWrite) begin
+ _zz_io_gpio_writeEnable <= io_bus_cmd_payload_fragment_data[0];
+ _zz_io_gpio_writeEnable_1 <= io_bus_cmd_payload_fragment_data[1];
+ _zz_io_gpio_writeEnable_2 <= io_bus_cmd_payload_fragment_data[2];
+ _zz_io_gpio_writeEnable_3 <= io_bus_cmd_payload_fragment_data[3];
+ end
+ end
+ 8'h20 : begin
+ if(mapper_doWrite) begin
+ _zz_mapper_rsp_payload_fragment_data <= io_bus_cmd_payload_fragment_data[0];
+ _zz_mapper_rsp_payload_fragment_data_4 <= io_bus_cmd_payload_fragment_data[1];
+ end
+ end
+ 8'h24 : begin
+ if(mapper_doWrite) begin
+ _zz_mapper_rsp_payload_fragment_data_1 <= io_bus_cmd_payload_fragment_data[0];
+ _zz_mapper_rsp_payload_fragment_data_5 <= io_bus_cmd_payload_fragment_data[1];
+ end
+ end
+ 8'h28 : begin
+ if(mapper_doWrite) begin
+ _zz_mapper_rsp_payload_fragment_data_2 <= io_bus_cmd_payload_fragment_data[0];
+ _zz_mapper_rsp_payload_fragment_data_6 <= io_bus_cmd_payload_fragment_data[1];
+ end
+ end
+ 8'h2c : begin
+ if(mapper_doWrite) begin
+ _zz_mapper_rsp_payload_fragment_data_3 <= io_bus_cmd_payload_fragment_data[0];
+ _zz_mapper_rsp_payload_fragment_data_7 <= io_bus_cmd_payload_fragment_data[1];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_mapper_rsp_ready_1) begin
+ _zz_io_bus_rsp_payload_last <= mapper_rsp_payload_last;
+ _zz_io_bus_rsp_payload_fragment_opcode <= mapper_rsp_payload_fragment_opcode;
+ _zz_io_bus_rsp_payload_fragment_data <= mapper_rsp_payload_fragment_data;
+ _zz_io_bus_rsp_payload_fragment_context <= mapper_rsp_payload_fragment_context;
+ end
+ io_gpio_read_delay_1 <= io_gpio_read;
+ syncronized <= io_gpio_read_delay_1;
+ last <= syncronized;
+ case(io_bus_cmd_payload_fragment_address)
+ 8'h04 : begin
+ if(mapper_doWrite) begin
+ _zz_io_gpio_write <= io_bus_cmd_payload_fragment_data[0];
+ _zz_io_gpio_write_1 <= io_bus_cmd_payload_fragment_data[1];
+ _zz_io_gpio_write_2 <= io_bus_cmd_payload_fragment_data[2];
+ _zz_io_gpio_write_3 <= io_bus_cmd_payload_fragment_data[3];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbI2cCtrl (
+ input wire io_ctrl_cmd_valid,
+ output wire io_ctrl_cmd_ready,
+ input wire io_ctrl_cmd_payload_last,
+ input wire [0:0] io_ctrl_cmd_payload_fragment_opcode,
+ input wire [7:0] io_ctrl_cmd_payload_fragment_address,
+ input wire [1:0] io_ctrl_cmd_payload_fragment_length,
+ input wire [31:0] io_ctrl_cmd_payload_fragment_data,
+ input wire [2:0] io_ctrl_cmd_payload_fragment_context,
+ output wire io_ctrl_rsp_valid,
+ input wire io_ctrl_rsp_ready,
+ output wire io_ctrl_rsp_payload_last,
+ output wire [0:0] io_ctrl_rsp_payload_fragment_opcode,
+ output wire [31:0] io_ctrl_rsp_payload_fragment_data,
+ output wire [2:0] io_ctrl_rsp_payload_fragment_context,
+ output wire io_i2c_sda_write,
+ input wire io_i2c_sda_read,
+ output wire io_i2c_scl_write,
+ input wire io_i2c_scl_read,
+ output wire system_i2c_0_io_interrupt_source,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_BOOT = 4'd0;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE = 4'd1;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 = 4'd2;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 = 4'd3;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 = 4'd4;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW = 4'd5;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH = 4'd6;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART = 4'd7;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 = 4'd8;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 = 4'd9;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 = 4'd10;
+ localparam Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF = 4'd11;
+ localparam Axi4PeripheralI2cSlaveCmdMode_NONE = 3'd0;
+ localparam Axi4PeripheralI2cSlaveCmdMode_START = 3'd1;
+ localparam Axi4PeripheralI2cSlaveCmdMode_RESTART = 3'd2;
+ localparam Axi4PeripheralI2cSlaveCmdMode_STOP = 3'd3;
+ localparam Axi4PeripheralI2cSlaveCmdMode_DROP = 3'd4;
+ localparam Axi4PeripheralI2cSlaveCmdMode_DRIVE = 3'd5;
+ localparam Axi4PeripheralI2cSlaveCmdMode_READ = 3'd6;
+
+ reg i2cCtrl_io_config_timeoutClear;
+ reg i2cCtrl_io_bus_rsp_valid;
+ reg i2cCtrl_io_bus_rsp_enable;
+ reg i2cCtrl_io_bus_rsp_data;
+ wire i2cCtrl_io_i2c_scl_write;
+ wire i2cCtrl_io_i2c_sda_write;
+ wire [2:0] i2cCtrl_io_bus_cmd_kind;
+ wire i2cCtrl_io_bus_cmd_data;
+ wire i2cCtrl_io_timeout;
+ wire i2cCtrl_io_internals_inFrame;
+ wire i2cCtrl_io_internals_sdaRead;
+ wire i2cCtrl_io_internals_sclRead;
+ wire [6:0] _zz_bridge_addressFilter_hits_0;
+ wire [6:0] _zz_bridge_addressFilter_hits_1;
+ wire [0:0] _zz_bridge_masterLogic_start;
+ wire [0:0] _zz_bridge_masterLogic_stop;
+ wire [0:0] _zz_bridge_masterLogic_drop;
+ wire [0:0] _zz_bridge_masterLogic_recover;
+ wire [11:0] _zz_bridge_masterLogic_timer_value;
+ wire [0:0] _zz_bridge_masterLogic_timer_value_1;
+ wire [0:0] _zz_bridge_masterLogic_fsm_dropped_start;
+ wire [0:0] _zz_bridge_masterLogic_fsm_dropped_stop;
+ wire [0:0] _zz_bridge_masterLogic_fsm_dropped_recover;
+ wire [2:0] _zz_io_bus_rsp_data;
+ wire [2:0] _zz_bridge_rxData_value;
+ wire [0:0] _zz_bridge_interruptCtrl_start_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_restart_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_end_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_drop_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_filterGen_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_clockGenExit_flag;
+ wire [0:0] _zz_bridge_interruptCtrl_clockGenEnter_flag;
+ wire busCtrl_readErrorFlag;
+ wire busCtrl_writeErrorFlag;
+ wire busCtrl_readHaltTrigger;
+ wire busCtrl_writeHaltTrigger;
+ wire busCtrl_rsp_valid;
+ wire busCtrl_rsp_ready;
+ wire busCtrl_rsp_payload_last;
+ reg [0:0] busCtrl_rsp_payload_fragment_opcode;
+ reg [31:0] busCtrl_rsp_payload_fragment_data;
+ wire [2:0] busCtrl_rsp_payload_fragment_context;
+ wire _zz_busCtrl_rsp_ready;
+ reg _zz_busCtrl_rsp_ready_1;
+ wire _zz_io_ctrl_rsp_valid;
+ reg _zz_io_ctrl_rsp_valid_1;
+ reg _zz_io_ctrl_rsp_payload_last;
+ reg [0:0] _zz_io_ctrl_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_ctrl_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_ctrl_rsp_payload_fragment_context;
+ wire when_Stream_l375;
+ wire busCtrl_askWrite;
+ wire busCtrl_askRead;
+ wire io_ctrl_cmd_fire;
+ wire busCtrl_doWrite;
+ wire busCtrl_doRead;
+ wire when_BmbSlaveFactory_l33;
+ wire when_BmbSlaveFactory_l35;
+ wire bridge_busCtrlWithOffset_readErrorFlag;
+ wire bridge_busCtrlWithOffset_writeErrorFlag;
+ reg bridge_frameReset;
+ reg bridge_i2cBuffer_sda_write;
+ wire bridge_i2cBuffer_sda_read;
+ reg bridge_i2cBuffer_scl_write;
+ wire bridge_i2cBuffer_scl_read;
+ reg bridge_rxData_event;
+ reg bridge_rxData_listen;
+ reg bridge_rxData_valid;
+ reg [7:0] bridge_rxData_value;
+ reg when_I2cCtrl_l224;
+ reg bridge_rxAck_listen;
+ reg bridge_rxAck_valid;
+ reg bridge_rxAck_value;
+ reg when_I2cCtrl_l237;
+ reg bridge_txData_valid;
+ reg bridge_txData_repeat;
+ reg bridge_txData_enable;
+ reg [7:0] bridge_txData_value;
+ reg bridge_txData_forceDisable;
+ reg bridge_txData_disableOnDataConflict;
+ reg bridge_txAck_valid;
+ reg bridge_txAck_repeat;
+ reg bridge_txAck_enable;
+ reg bridge_txAck_value;
+ reg bridge_txAck_forceAck;
+ reg bridge_txAck_disableOnDataConflict;
+ reg bridge_addressFilter_addresses_0_enable;
+ reg [9:0] bridge_addressFilter_addresses_0_value;
+ reg bridge_addressFilter_addresses_0_is10Bit;
+ reg bridge_addressFilter_addresses_1_enable;
+ reg [9:0] bridge_addressFilter_addresses_1_value;
+ reg bridge_addressFilter_addresses_1_is10Bit;
+ reg [1:0] bridge_addressFilter_state;
+ reg [7:0] bridge_addressFilter_byte0;
+ reg [7:0] bridge_addressFilter_byte1;
+ wire bridge_addressFilter_byte0Is10Bit;
+ wire bridge_addressFilter_hits_0;
+ wire bridge_addressFilter_hits_1;
+ wire when_I2cCtrl_l306;
+ wire _zz_when_I2cCtrl_l310;
+ reg _zz_when_I2cCtrl_l310_1;
+ wire when_I2cCtrl_l310;
+ reg bridge_masterLogic_start;
+ reg when_BusSlaveFactory_l377;
+ wire when_BusSlaveFactory_l379;
+ reg bridge_masterLogic_stop;
+ reg when_BusSlaveFactory_l377_1;
+ wire when_BusSlaveFactory_l379_1;
+ reg bridge_masterLogic_drop;
+ reg when_BusSlaveFactory_l377_2;
+ wire when_BusSlaveFactory_l379_2;
+ reg bridge_masterLogic_recover;
+ reg when_BusSlaveFactory_l377_3;
+ wire when_BusSlaveFactory_l379_3;
+ reg [11:0] bridge_masterLogic_timer_value;
+ reg [11:0] bridge_masterLogic_timer_tLow;
+ reg [11:0] bridge_masterLogic_timer_tHigh;
+ reg [11:0] bridge_masterLogic_timer_tBuf;
+ wire bridge_masterLogic_timer_done;
+ wire bridge_masterLogic_txReady;
+ wire bridge_masterLogic_fsm_wantExit;
+ reg bridge_masterLogic_fsm_wantStart;
+ wire bridge_masterLogic_fsm_wantKill;
+ reg bridge_masterLogic_fsm_dropped_start;
+ reg bridge_masterLogic_fsm_dropped_stop;
+ reg bridge_masterLogic_fsm_dropped_recover;
+ reg bridge_masterLogic_fsm_dropped_trigger;
+ reg bridge_masterLogic_fsm_inFrameLate;
+ wire when_I2cCtrl_l363;
+ wire when_I2cCtrl_l363_1;
+ wire bridge_masterLogic_fsm_outOfSync;
+ wire bridge_masterLogic_fsm_isBusy;
+ reg when_BusSlaveFactory_l341;
+ wire when_BusSlaveFactory_l347;
+ reg when_BusSlaveFactory_l341_1;
+ wire when_BusSlaveFactory_l347_1;
+ reg when_BusSlaveFactory_l341_2;
+ wire when_BusSlaveFactory_l347_2;
+ reg [2:0] bridge_dataCounter;
+ reg bridge_inAckState;
+ reg bridge_wasntAck;
+ wire when_I2cCtrl_l523;
+ wire when_I2cCtrl_l546;
+ wire when_I2cCtrl_l566;
+ wire when_I2cCtrl_l570;
+ wire when_I2cCtrl_l574;
+ wire when_I2cCtrl_l578;
+ wire when_I2cCtrl_l588;
+ wire when_I2cCtrl_l601;
+ reg bridge_interruptCtrl_rxDataEnable;
+ reg bridge_interruptCtrl_rxAckEnable;
+ reg bridge_interruptCtrl_txDataEnable;
+ reg bridge_interruptCtrl_txAckEnable;
+ reg bridge_interruptCtrl_interrupt;
+ wire when_I2cCtrl_l634;
+ reg bridge_interruptCtrl_start_enable;
+ reg bridge_interruptCtrl_start_flag;
+ wire when_I2cCtrl_l634_1;
+ reg when_BusSlaveFactory_l341_3;
+ wire when_BusSlaveFactory_l347_3;
+ wire when_I2cCtrl_l634_2;
+ reg bridge_interruptCtrl_restart_enable;
+ reg bridge_interruptCtrl_restart_flag;
+ wire when_I2cCtrl_l634_3;
+ reg when_BusSlaveFactory_l341_4;
+ wire when_BusSlaveFactory_l347_4;
+ wire when_I2cCtrl_l634_4;
+ reg bridge_interruptCtrl_end_enable;
+ reg bridge_interruptCtrl_end_flag;
+ wire when_I2cCtrl_l634_5;
+ reg when_BusSlaveFactory_l341_5;
+ wire when_BusSlaveFactory_l347_5;
+ wire when_I2cCtrl_l634_6;
+ reg bridge_interruptCtrl_drop_enable;
+ reg bridge_interruptCtrl_drop_flag;
+ wire when_I2cCtrl_l634_7;
+ reg when_BusSlaveFactory_l341_6;
+ wire when_BusSlaveFactory_l347_6;
+ wire _zz_when_I2cCtrl_l634;
+ reg _zz_when_I2cCtrl_l634_1;
+ wire when_I2cCtrl_l634_8;
+ reg bridge_interruptCtrl_filterGen_enable;
+ reg bridge_interruptCtrl_filterGen_flag;
+ wire when_I2cCtrl_l634_9;
+ reg when_BusSlaveFactory_l341_7;
+ wire when_BusSlaveFactory_l347_7;
+ reg bridge_masterLogic_fsm_isBusy_regNext;
+ wire when_I2cCtrl_l634_10;
+ reg bridge_interruptCtrl_clockGenExit_enable;
+ reg bridge_interruptCtrl_clockGenExit_flag;
+ wire when_I2cCtrl_l634_11;
+ reg when_BusSlaveFactory_l341_8;
+ wire when_BusSlaveFactory_l347_8;
+ reg bridge_masterLogic_fsm_isBusy_regNext_1;
+ wire when_I2cCtrl_l634_12;
+ reg bridge_interruptCtrl_clockGenEnter_enable;
+ reg bridge_interruptCtrl_clockGenEnter_flag;
+ wire when_I2cCtrl_l634_13;
+ reg when_BusSlaveFactory_l341_9;
+ wire when_BusSlaveFactory_l347_9;
+ reg [9:0] _zz_io_config_samplingClockDivider;
+ reg [19:0] _zz_io_config_timeout;
+ reg [5:0] _zz_io_config_tsuData;
+ reg bridge_timeoutClear;
+ wire when_I2cCtrl_l659;
+ reg [3:0] bridge_masterLogic_fsm_stateReg;
+ reg [3:0] bridge_masterLogic_fsm_stateNext;
+ reg i2cCtrl_io_internals_inFrame_regNext;
+ wire when_I2cCtrl_l367;
+ wire when_I2cCtrl_l369;
+ wire when_I2cCtrl_l380;
+ wire when_I2cCtrl_l392;
+ wire when_I2cCtrl_l418;
+ wire when_I2cCtrl_l422;
+ wire when_I2cCtrl_l442;
+ wire when_I2cCtrl_l450;
+ wire when_I2cCtrl_l474;
+ wire when_StateMachine_l253;
+ wire when_StateMachine_l253_1;
+ wire when_StateMachine_l253_2;
+ wire when_StateMachine_l253_3;
+ wire when_StateMachine_l253_4;
+ wire when_StateMachine_l253_5;
+ wire when_I2cCtrl_l350;
+ reg bridge_slaveOverride_sda;
+ reg bridge_slaveOverride_scl;
+ wire when_I2cCtrl_l673;
+ wire when_I2cCtrl_l674;
+ reg bridge_i2cBuffer_scl_write_regNext;
+ reg bridge_i2cBuffer_sda_write_regNext;
+ `ifndef SYNTHESIS
+ reg [55:0] bridge_masterLogic_fsm_stateReg_string;
+ reg [55:0] bridge_masterLogic_fsm_stateNext_string;
+ `endif
+
+
+ assign _zz_bridge_addressFilter_hits_0 = (bridge_addressFilter_byte0 >>> 1'd1);
+ assign _zz_bridge_addressFilter_hits_1 = (bridge_addressFilter_byte0 >>> 1'd1);
+ assign _zz_bridge_masterLogic_start = 1'b1;
+ assign _zz_bridge_masterLogic_stop = 1'b1;
+ assign _zz_bridge_masterLogic_drop = 1'b1;
+ assign _zz_bridge_masterLogic_recover = 1'b1;
+ assign _zz_bridge_masterLogic_timer_value_1 = (! bridge_masterLogic_timer_done);
+ assign _zz_bridge_masterLogic_timer_value = {11'd0, _zz_bridge_masterLogic_timer_value_1};
+ assign _zz_bridge_masterLogic_fsm_dropped_start = 1'b0;
+ assign _zz_bridge_masterLogic_fsm_dropped_stop = 1'b0;
+ assign _zz_bridge_masterLogic_fsm_dropped_recover = 1'b0;
+ assign _zz_io_bus_rsp_data = (3'b111 - bridge_dataCounter);
+ assign _zz_bridge_rxData_value = (3'b111 - bridge_dataCounter);
+ assign _zz_bridge_interruptCtrl_start_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_restart_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_end_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_drop_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_filterGen_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_clockGenExit_flag = 1'b0;
+ assign _zz_bridge_interruptCtrl_clockGenEnter_flag = 1'b0;
+ Axi4PeripheralI2cSlave i2cCtrl (
+ .io_i2c_sda_write (i2cCtrl_io_i2c_sda_write ), //o
+ .io_i2c_sda_read (bridge_i2cBuffer_sda_read ), //i
+ .io_i2c_scl_write (i2cCtrl_io_i2c_scl_write ), //o
+ .io_i2c_scl_read (bridge_i2cBuffer_scl_read ), //i
+ .io_config_samplingClockDivider (_zz_io_config_samplingClockDivider[9:0]), //i
+ .io_config_timeout (_zz_io_config_timeout[19:0] ), //i
+ .io_config_tsuData (_zz_io_config_tsuData[5:0] ), //i
+ .io_config_timeoutClear (i2cCtrl_io_config_timeoutClear ), //i
+ .io_bus_cmd_kind (i2cCtrl_io_bus_cmd_kind[2:0] ), //o
+ .io_bus_cmd_data (i2cCtrl_io_bus_cmd_data ), //o
+ .io_bus_rsp_valid (i2cCtrl_io_bus_rsp_valid ), //i
+ .io_bus_rsp_enable (i2cCtrl_io_bus_rsp_enable ), //i
+ .io_bus_rsp_data (i2cCtrl_io_bus_rsp_data ), //i
+ .io_timeout (i2cCtrl_io_timeout ), //o
+ .io_internals_inFrame (i2cCtrl_io_internals_inFrame ), //o
+ .io_internals_sdaRead (i2cCtrl_io_internals_sdaRead ), //o
+ .io_internals_sclRead (i2cCtrl_io_internals_sclRead ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ initial begin
+ `ifndef SYNTHESIS
+ _zz_io_config_timeout = {$urandom};
+ _zz_io_config_tsuData = {$urandom};
+ `endif
+ end
+
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_BOOT : bridge_masterLogic_fsm_stateReg_string = "BOOT ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : bridge_masterLogic_fsm_stateReg_string = "IDLE ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : bridge_masterLogic_fsm_stateReg_string = "START1 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : bridge_masterLogic_fsm_stateReg_string = "START2 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : bridge_masterLogic_fsm_stateReg_string = "START3 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : bridge_masterLogic_fsm_stateReg_string = "LOW ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : bridge_masterLogic_fsm_stateReg_string = "HIGH ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : bridge_masterLogic_fsm_stateReg_string = "RESTART";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : bridge_masterLogic_fsm_stateReg_string = "STOP1 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : bridge_masterLogic_fsm_stateReg_string = "STOP2 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : bridge_masterLogic_fsm_stateReg_string = "STOP3 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : bridge_masterLogic_fsm_stateReg_string = "TBUF ";
+ default : bridge_masterLogic_fsm_stateReg_string = "???????";
+ endcase
+ end
+ always @(*) begin
+ case(bridge_masterLogic_fsm_stateNext)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_BOOT : bridge_masterLogic_fsm_stateNext_string = "BOOT ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : bridge_masterLogic_fsm_stateNext_string = "IDLE ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : bridge_masterLogic_fsm_stateNext_string = "START1 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : bridge_masterLogic_fsm_stateNext_string = "START2 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : bridge_masterLogic_fsm_stateNext_string = "START3 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : bridge_masterLogic_fsm_stateNext_string = "LOW ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : bridge_masterLogic_fsm_stateNext_string = "HIGH ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : bridge_masterLogic_fsm_stateNext_string = "RESTART";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : bridge_masterLogic_fsm_stateNext_string = "STOP1 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : bridge_masterLogic_fsm_stateNext_string = "STOP2 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : bridge_masterLogic_fsm_stateNext_string = "STOP3 ";
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : bridge_masterLogic_fsm_stateNext_string = "TBUF ";
+ default : bridge_masterLogic_fsm_stateNext_string = "???????";
+ endcase
+ end
+ `endif
+
+ assign busCtrl_readErrorFlag = 1'b0;
+ assign busCtrl_writeErrorFlag = 1'b0;
+ assign busCtrl_readHaltTrigger = 1'b0;
+ assign busCtrl_writeHaltTrigger = 1'b0;
+ assign _zz_busCtrl_rsp_ready = (! (busCtrl_readHaltTrigger || busCtrl_writeHaltTrigger));
+ assign busCtrl_rsp_ready = (_zz_busCtrl_rsp_ready_1 && _zz_busCtrl_rsp_ready);
+ always @(*) begin
+ _zz_busCtrl_rsp_ready_1 = io_ctrl_rsp_ready;
+ if(when_Stream_l375) begin
+ _zz_busCtrl_rsp_ready_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! _zz_io_ctrl_rsp_valid);
+ assign _zz_io_ctrl_rsp_valid = _zz_io_ctrl_rsp_valid_1;
+ assign io_ctrl_rsp_valid = _zz_io_ctrl_rsp_valid;
+ assign io_ctrl_rsp_payload_last = _zz_io_ctrl_rsp_payload_last;
+ assign io_ctrl_rsp_payload_fragment_opcode = _zz_io_ctrl_rsp_payload_fragment_opcode;
+ assign io_ctrl_rsp_payload_fragment_data = _zz_io_ctrl_rsp_payload_fragment_data;
+ assign io_ctrl_rsp_payload_fragment_context = _zz_io_ctrl_rsp_payload_fragment_context;
+ assign busCtrl_askWrite = (io_ctrl_cmd_valid && (io_ctrl_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_askRead = (io_ctrl_cmd_valid && (io_ctrl_cmd_payload_fragment_opcode == 1'b0));
+ assign io_ctrl_cmd_fire = (io_ctrl_cmd_valid && io_ctrl_cmd_ready);
+ assign busCtrl_doWrite = (io_ctrl_cmd_fire && (io_ctrl_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_doRead = (io_ctrl_cmd_fire && (io_ctrl_cmd_payload_fragment_opcode == 1'b0));
+ assign busCtrl_rsp_valid = io_ctrl_cmd_valid;
+ assign io_ctrl_cmd_ready = busCtrl_rsp_ready;
+ assign busCtrl_rsp_payload_last = 1'b1;
+ assign when_BmbSlaveFactory_l33 = (busCtrl_doWrite && busCtrl_writeErrorFlag);
+ always @(*) begin
+ if(when_BmbSlaveFactory_l33) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ if(when_BmbSlaveFactory_l35) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b0;
+ end
+ end
+ end
+
+ assign when_BmbSlaveFactory_l35 = (busCtrl_doRead && busCtrl_readErrorFlag);
+ always @(*) begin
+ busCtrl_rsp_payload_fragment_data = 32'h0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h08 : begin
+ busCtrl_rsp_payload_fragment_data[8 : 8] = bridge_rxData_valid;
+ busCtrl_rsp_payload_fragment_data[7 : 0] = bridge_rxData_value;
+ end
+ 8'h0c : begin
+ busCtrl_rsp_payload_fragment_data[8 : 8] = bridge_rxAck_valid;
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_rxAck_value;
+ end
+ 8'h0 : begin
+ busCtrl_rsp_payload_fragment_data[8 : 8] = bridge_txData_valid;
+ busCtrl_rsp_payload_fragment_data[9 : 9] = bridge_txData_enable;
+ end
+ 8'h04 : begin
+ busCtrl_rsp_payload_fragment_data[8 : 8] = bridge_txAck_valid;
+ busCtrl_rsp_payload_fragment_data[9 : 9] = bridge_txAck_enable;
+ end
+ 8'h80 : begin
+ busCtrl_rsp_payload_fragment_data[1 : 0] = {bridge_addressFilter_hits_1,bridge_addressFilter_hits_0};
+ end
+ 8'h84 : begin
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_addressFilter_byte0[0];
+ end
+ 8'h40 : begin
+ busCtrl_rsp_payload_fragment_data[4 : 4] = bridge_masterLogic_start;
+ busCtrl_rsp_payload_fragment_data[5 : 5] = bridge_masterLogic_stop;
+ busCtrl_rsp_payload_fragment_data[6 : 6] = bridge_masterLogic_drop;
+ busCtrl_rsp_payload_fragment_data[7 : 7] = bridge_masterLogic_recover;
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_masterLogic_fsm_isBusy;
+ busCtrl_rsp_payload_fragment_data[9 : 9] = bridge_masterLogic_fsm_dropped_start;
+ busCtrl_rsp_payload_fragment_data[10 : 10] = bridge_masterLogic_fsm_dropped_stop;
+ busCtrl_rsp_payload_fragment_data[11 : 11] = bridge_masterLogic_fsm_dropped_recover;
+ end
+ 8'h20 : begin
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_interruptCtrl_rxDataEnable;
+ busCtrl_rsp_payload_fragment_data[1 : 1] = bridge_interruptCtrl_rxAckEnable;
+ busCtrl_rsp_payload_fragment_data[2 : 2] = bridge_interruptCtrl_txDataEnable;
+ busCtrl_rsp_payload_fragment_data[3 : 3] = bridge_interruptCtrl_txAckEnable;
+ busCtrl_rsp_payload_fragment_data[4 : 4] = bridge_interruptCtrl_start_enable;
+ busCtrl_rsp_payload_fragment_data[5 : 5] = bridge_interruptCtrl_restart_enable;
+ busCtrl_rsp_payload_fragment_data[6 : 6] = bridge_interruptCtrl_end_enable;
+ busCtrl_rsp_payload_fragment_data[7 : 7] = bridge_interruptCtrl_drop_enable;
+ busCtrl_rsp_payload_fragment_data[17 : 17] = bridge_interruptCtrl_filterGen_enable;
+ busCtrl_rsp_payload_fragment_data[15 : 15] = bridge_interruptCtrl_clockGenExit_enable;
+ busCtrl_rsp_payload_fragment_data[16 : 16] = bridge_interruptCtrl_clockGenEnter_enable;
+ end
+ 8'h24 : begin
+ busCtrl_rsp_payload_fragment_data[4 : 4] = bridge_interruptCtrl_start_flag;
+ busCtrl_rsp_payload_fragment_data[5 : 5] = bridge_interruptCtrl_restart_flag;
+ busCtrl_rsp_payload_fragment_data[6 : 6] = bridge_interruptCtrl_end_flag;
+ busCtrl_rsp_payload_fragment_data[7 : 7] = bridge_interruptCtrl_drop_flag;
+ busCtrl_rsp_payload_fragment_data[17 : 17] = bridge_interruptCtrl_filterGen_flag;
+ busCtrl_rsp_payload_fragment_data[15 : 15] = bridge_interruptCtrl_clockGenExit_flag;
+ busCtrl_rsp_payload_fragment_data[16 : 16] = bridge_interruptCtrl_clockGenEnter_flag;
+ end
+ 8'h44 : begin
+ busCtrl_rsp_payload_fragment_data[0 : 0] = i2cCtrl_io_internals_inFrame;
+ busCtrl_rsp_payload_fragment_data[1 : 1] = i2cCtrl_io_internals_sdaRead;
+ busCtrl_rsp_payload_fragment_data[2 : 2] = i2cCtrl_io_internals_sclRead;
+ end
+ 8'h48 : begin
+ busCtrl_rsp_payload_fragment_data[1 : 1] = bridge_slaveOverride_sda;
+ busCtrl_rsp_payload_fragment_data[2 : 2] = bridge_slaveOverride_scl;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign busCtrl_rsp_payload_fragment_context = io_ctrl_cmd_payload_fragment_context;
+ assign bridge_busCtrlWithOffset_readErrorFlag = 1'b0;
+ assign bridge_busCtrlWithOffset_writeErrorFlag = 1'b0;
+ always @(*) begin
+ bridge_frameReset = 1'b0;
+ case(i2cCtrl_io_bus_cmd_kind)
+ Axi4PeripheralI2cSlaveCmdMode_START : begin
+ bridge_frameReset = 1'b1;
+ end
+ Axi4PeripheralI2cSlaveCmdMode_RESTART : begin
+ bridge_frameReset = 1'b1;
+ end
+ Axi4PeripheralI2cSlaveCmdMode_STOP : begin
+ bridge_frameReset = 1'b1;
+ end
+ Axi4PeripheralI2cSlaveCmdMode_DROP : begin
+ bridge_frameReset = 1'b1;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ bridge_i2cBuffer_sda_write = i2cCtrl_io_i2c_sda_write;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ bridge_i2cBuffer_sda_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ bridge_i2cBuffer_sda_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ bridge_i2cBuffer_sda_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ bridge_i2cBuffer_sda_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ end
+ endcase
+ if(when_I2cCtrl_l673) begin
+ bridge_i2cBuffer_sda_write = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ bridge_i2cBuffer_scl_write = i2cCtrl_io_i2c_scl_write;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ if(bridge_masterLogic_timer_done) begin
+ if(when_I2cCtrl_l418) begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end else begin
+ if(when_I2cCtrl_l422) begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end
+ end
+ end else begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ end
+ endcase
+ if(when_I2cCtrl_l674) begin
+ bridge_i2cBuffer_scl_write = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ when_I2cCtrl_l224 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h08 : begin
+ if(busCtrl_doRead) begin
+ when_I2cCtrl_l224 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ when_I2cCtrl_l237 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h0c : begin
+ if(busCtrl_doRead) begin
+ when_I2cCtrl_l237 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ bridge_txData_forceDisable = 1'b0;
+ if(when_I2cCtrl_l601) begin
+ bridge_txData_forceDisable = 1'b0;
+ end
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ if(bridge_masterLogic_timer_done) begin
+ if(when_I2cCtrl_l418) begin
+ bridge_txData_forceDisable = 1'b1;
+ end else begin
+ if(when_I2cCtrl_l422) begin
+ bridge_txData_forceDisable = 1'b1;
+ end
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ bridge_txAck_forceAck = 1'b0;
+ if(when_I2cCtrl_l306) begin
+ bridge_txAck_forceAck = 1'b1;
+ end
+ end
+
+ assign bridge_addressFilter_byte0Is10Bit = (bridge_addressFilter_byte0[7 : 3] == 5'h1e);
+ assign bridge_addressFilter_hits_0 = (bridge_addressFilter_addresses_0_enable && ((! bridge_addressFilter_addresses_0_is10Bit) ? ((_zz_bridge_addressFilter_hits_0 == bridge_addressFilter_addresses_0_value[6 : 0]) && (bridge_addressFilter_state != 2'b00)) : (({bridge_addressFilter_byte0[2 : 1],bridge_addressFilter_byte1} == bridge_addressFilter_addresses_0_value) && (bridge_addressFilter_state == 2'b10))));
+ assign bridge_addressFilter_hits_1 = (bridge_addressFilter_addresses_1_enable && ((! bridge_addressFilter_addresses_1_is10Bit) ? ((_zz_bridge_addressFilter_hits_1 == bridge_addressFilter_addresses_1_value[6 : 0]) && (bridge_addressFilter_state != 2'b00)) : (({bridge_addressFilter_byte0[2 : 1],bridge_addressFilter_byte1} == bridge_addressFilter_addresses_1_value) && (bridge_addressFilter_state == 2'b10))));
+ assign when_I2cCtrl_l306 = ((bridge_addressFilter_byte0Is10Bit && (bridge_addressFilter_state == 2'b01)) && (|{((bridge_addressFilter_addresses_1_enable && bridge_addressFilter_addresses_1_is10Bit) && (bridge_addressFilter_byte0[2 : 1] == bridge_addressFilter_addresses_1_value[9 : 8])),((bridge_addressFilter_addresses_0_enable && bridge_addressFilter_addresses_0_is10Bit) && (bridge_addressFilter_byte0[2 : 1] == bridge_addressFilter_addresses_0_value[9 : 8]))}));
+ assign _zz_when_I2cCtrl_l310 = (|{bridge_addressFilter_hits_1,bridge_addressFilter_hits_0});
+ assign when_I2cCtrl_l310 = (_zz_when_I2cCtrl_l310 && (! _zz_when_I2cCtrl_l310_1));
+ always @(*) begin
+ when_BusSlaveFactory_l377 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l377 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379 = io_ctrl_cmd_payload_fragment_data[4];
+ always @(*) begin
+ when_BusSlaveFactory_l377_1 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l377_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_1 = io_ctrl_cmd_payload_fragment_data[5];
+ always @(*) begin
+ when_BusSlaveFactory_l377_2 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l377_2 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_2 = io_ctrl_cmd_payload_fragment_data[6];
+ always @(*) begin
+ when_BusSlaveFactory_l377_3 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l377_3 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_3 = io_ctrl_cmd_payload_fragment_data[7];
+ assign bridge_masterLogic_timer_done = (bridge_masterLogic_timer_value == 12'h0);
+ assign bridge_masterLogic_fsm_wantExit = 1'b0;
+ always @(*) begin
+ bridge_masterLogic_fsm_wantStart = 1'b0;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ bridge_masterLogic_fsm_wantStart = 1'b1;
+ end
+ endcase
+ end
+
+ assign bridge_masterLogic_fsm_wantKill = 1'b0;
+ always @(*) begin
+ bridge_masterLogic_fsm_dropped_trigger = 1'b0;
+ if(when_I2cCtrl_l350) begin
+ bridge_masterLogic_fsm_dropped_trigger = 1'b1;
+ end
+ end
+
+ assign when_I2cCtrl_l363 = (! i2cCtrl_io_internals_sclRead);
+ assign when_I2cCtrl_l363_1 = (! i2cCtrl_io_internals_inFrame);
+ assign bridge_masterLogic_fsm_outOfSync = ((! i2cCtrl_io_internals_inFrame) && ((! i2cCtrl_io_internals_sdaRead) || (! i2cCtrl_io_internals_sclRead)));
+ assign bridge_masterLogic_fsm_isBusy = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE)) && (! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF)));
+ always @(*) begin
+ when_BusSlaveFactory_l341 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347 = io_ctrl_cmd_payload_fragment_data[9];
+ always @(*) begin
+ when_BusSlaveFactory_l341_1 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_1 = io_ctrl_cmd_payload_fragment_data[10];
+ always @(*) begin
+ when_BusSlaveFactory_l341_2 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h40 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_2 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_2 = io_ctrl_cmd_payload_fragment_data[11];
+ assign bridge_masterLogic_txReady = (bridge_inAckState ? bridge_txAck_valid : bridge_txData_valid);
+ assign when_I2cCtrl_l523 = (! bridge_inAckState);
+ always @(*) begin
+ if(when_I2cCtrl_l523) begin
+ i2cCtrl_io_bus_rsp_valid = ((bridge_txData_valid && (! (bridge_rxData_valid && bridge_rxData_listen))) && (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DRIVE));
+ if(bridge_txData_forceDisable) begin
+ i2cCtrl_io_bus_rsp_valid = 1'b1;
+ end
+ end else begin
+ i2cCtrl_io_bus_rsp_valid = ((bridge_txAck_valid && (! (bridge_rxAck_valid && bridge_rxAck_listen))) && (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DRIVE));
+ if(bridge_txAck_forceAck) begin
+ i2cCtrl_io_bus_rsp_valid = 1'b1;
+ end
+ end
+ if(when_I2cCtrl_l546) begin
+ i2cCtrl_io_bus_rsp_valid = (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DRIVE);
+ end
+ end
+
+ always @(*) begin
+ if(when_I2cCtrl_l523) begin
+ i2cCtrl_io_bus_rsp_enable = bridge_txData_enable;
+ if(bridge_txData_forceDisable) begin
+ i2cCtrl_io_bus_rsp_enable = 1'b0;
+ end
+ end else begin
+ i2cCtrl_io_bus_rsp_enable = bridge_txAck_enable;
+ if(bridge_txAck_forceAck) begin
+ i2cCtrl_io_bus_rsp_enable = 1'b1;
+ end
+ end
+ if(when_I2cCtrl_l546) begin
+ i2cCtrl_io_bus_rsp_enable = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_I2cCtrl_l523) begin
+ i2cCtrl_io_bus_rsp_data = bridge_txData_value[_zz_io_bus_rsp_data];
+ end else begin
+ i2cCtrl_io_bus_rsp_data = bridge_txAck_value;
+ if(bridge_txAck_forceAck) begin
+ i2cCtrl_io_bus_rsp_data = 1'b0;
+ end
+ end
+ end
+
+ assign when_I2cCtrl_l546 = (bridge_wasntAck && (! bridge_masterLogic_fsm_isBusy));
+ assign when_I2cCtrl_l566 = (! bridge_inAckState);
+ assign when_I2cCtrl_l570 = (i2cCtrl_io_bus_rsp_data != i2cCtrl_io_bus_cmd_data);
+ assign when_I2cCtrl_l574 = (bridge_dataCounter == 3'b111);
+ assign when_I2cCtrl_l578 = (bridge_txData_valid && (! bridge_txData_repeat));
+ assign when_I2cCtrl_l588 = (bridge_txAck_valid && (! bridge_txAck_repeat));
+ assign when_I2cCtrl_l601 = ((i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_STOP) || (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DROP));
+ always @(*) begin
+ bridge_interruptCtrl_interrupt = ((((bridge_interruptCtrl_rxDataEnable && bridge_rxData_valid) || (bridge_interruptCtrl_rxAckEnable && bridge_rxAck_valid)) || (bridge_interruptCtrl_txDataEnable && (! bridge_txData_valid))) || (bridge_interruptCtrl_txAckEnable && (! bridge_txAck_valid)));
+ if(bridge_interruptCtrl_start_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_restart_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_end_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_drop_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_filterGen_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_clockGenExit_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ if(bridge_interruptCtrl_clockGenEnter_flag) begin
+ bridge_interruptCtrl_interrupt = 1'b1;
+ end
+ end
+
+ assign when_I2cCtrl_l634 = (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_START);
+ assign when_I2cCtrl_l634_1 = (! bridge_interruptCtrl_start_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_3 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_3 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_3 = io_ctrl_cmd_payload_fragment_data[4];
+ assign when_I2cCtrl_l634_2 = (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_RESTART);
+ assign when_I2cCtrl_l634_3 = (! bridge_interruptCtrl_restart_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_4 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_4 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_4 = io_ctrl_cmd_payload_fragment_data[5];
+ assign when_I2cCtrl_l634_4 = (i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_STOP);
+ assign when_I2cCtrl_l634_5 = (! bridge_interruptCtrl_end_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_5 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_5 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_5 = io_ctrl_cmd_payload_fragment_data[6];
+ assign when_I2cCtrl_l634_6 = ((i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DROP) || bridge_masterLogic_fsm_dropped_trigger);
+ assign when_I2cCtrl_l634_7 = (! bridge_interruptCtrl_drop_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_6 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_6 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_6 = io_ctrl_cmd_payload_fragment_data[7];
+ assign _zz_when_I2cCtrl_l634 = (|{bridge_addressFilter_hits_1,bridge_addressFilter_hits_0});
+ assign when_I2cCtrl_l634_8 = (_zz_when_I2cCtrl_l634 && (! _zz_when_I2cCtrl_l634_1));
+ assign when_I2cCtrl_l634_9 = (! bridge_interruptCtrl_filterGen_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_7 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_7 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_7 = io_ctrl_cmd_payload_fragment_data[17];
+ assign when_I2cCtrl_l634_10 = ((! bridge_masterLogic_fsm_isBusy) && bridge_masterLogic_fsm_isBusy_regNext);
+ assign when_I2cCtrl_l634_11 = (! bridge_interruptCtrl_clockGenExit_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_8 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_8 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_8 = io_ctrl_cmd_payload_fragment_data[15];
+ assign when_I2cCtrl_l634_12 = (bridge_masterLogic_fsm_isBusy && (! bridge_masterLogic_fsm_isBusy_regNext_1));
+ assign when_I2cCtrl_l634_13 = (! bridge_interruptCtrl_clockGenEnter_enable);
+ always @(*) begin
+ when_BusSlaveFactory_l341_9 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h24 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_9 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_9 = io_ctrl_cmd_payload_fragment_data[16];
+ always @(*) begin
+ i2cCtrl_io_config_timeoutClear = bridge_timeoutClear;
+ if(when_I2cCtrl_l659) begin
+ i2cCtrl_io_config_timeoutClear = 1'b1;
+ end
+ end
+
+ assign when_I2cCtrl_l659 = ((! i2cCtrl_io_internals_inFrame) && (! bridge_masterLogic_fsm_isBusy));
+ always @(*) begin
+ bridge_masterLogic_fsm_stateNext = bridge_masterLogic_fsm_stateReg;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ if(when_I2cCtrl_l367) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF;
+ end else begin
+ if(when_I2cCtrl_l369) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1;
+ end else begin
+ if(bridge_masterLogic_recover) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW;
+ end
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ if(when_I2cCtrl_l380) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ if(when_I2cCtrl_l392) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ if(bridge_masterLogic_timer_done) begin
+ if(when_I2cCtrl_l418) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1;
+ end else begin
+ if(when_I2cCtrl_l422) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART;
+ end else begin
+ if(i2cCtrl_io_internals_sclRead) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH;
+ end
+ end
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ if(when_I2cCtrl_l442) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ if(!when_I2cCtrl_l450) begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1;
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ if(!when_I2cCtrl_l474) begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3;
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ if(i2cCtrl_io_internals_sdaRead) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE;
+ end
+ end
+ default : begin
+ end
+ endcase
+ if(when_I2cCtrl_l350) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF;
+ end
+ if(bridge_masterLogic_fsm_wantStart) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE;
+ end
+ if(bridge_masterLogic_fsm_wantKill) begin
+ bridge_masterLogic_fsm_stateNext = Axi4Peripheralbridge_masterLogic_fsm_enumDef_BOOT;
+ end
+ end
+
+ assign when_I2cCtrl_l367 = ((! i2cCtrl_io_internals_inFrame) && i2cCtrl_io_internals_inFrame_regNext);
+ assign when_I2cCtrl_l369 = (bridge_masterLogic_start && (! bridge_masterLogic_fsm_inFrameLate));
+ assign when_I2cCtrl_l380 = (! bridge_masterLogic_fsm_outOfSync);
+ assign when_I2cCtrl_l392 = (bridge_masterLogic_timer_done || (! i2cCtrl_io_internals_sclRead));
+ assign when_I2cCtrl_l418 = ((bridge_masterLogic_stop && (! bridge_inAckState)) || (bridge_masterLogic_recover && i2cCtrl_io_internals_sdaRead));
+ assign when_I2cCtrl_l422 = (bridge_masterLogic_start && (! bridge_inAckState));
+ assign when_I2cCtrl_l442 = (bridge_masterLogic_timer_done || (! i2cCtrl_io_internals_sclRead));
+ assign when_I2cCtrl_l450 = (! i2cCtrl_io_internals_sclRead);
+ assign when_I2cCtrl_l474 = (! i2cCtrl_io_internals_sclRead);
+ assign when_StateMachine_l253 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2));
+ assign when_StateMachine_l253_1 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3));
+ assign when_StateMachine_l253_2 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW));
+ assign when_StateMachine_l253_3 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH));
+ assign when_StateMachine_l253_4 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1));
+ assign when_StateMachine_l253_5 = ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF)) && (bridge_masterLogic_fsm_stateNext == Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF));
+ assign when_I2cCtrl_l350 = (bridge_masterLogic_drop || ((! (bridge_masterLogic_fsm_stateReg == Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE)) && ((i2cCtrl_io_bus_cmd_kind == Axi4PeripheralI2cSlaveCmdMode_DROP) || i2cCtrl_io_timeout)));
+ assign when_I2cCtrl_l673 = (! bridge_slaveOverride_sda);
+ assign when_I2cCtrl_l674 = (! bridge_slaveOverride_scl);
+ assign io_i2c_scl_write = bridge_i2cBuffer_scl_write_regNext;
+ assign io_i2c_sda_write = bridge_i2cBuffer_sda_write_regNext;
+ assign bridge_i2cBuffer_scl_read = io_i2c_scl_read;
+ assign bridge_i2cBuffer_sda_read = io_i2c_sda_read;
+ assign system_i2c_0_io_interrupt_source = bridge_interruptCtrl_interrupt;
+ always @(posedge clk) begin
+ if(reset) begin
+ _zz_io_ctrl_rsp_valid_1 <= 1'b0;
+ bridge_rxData_event <= 1'b0;
+ bridge_rxData_listen <= 1'b0;
+ bridge_rxData_valid <= 1'b0;
+ bridge_rxAck_listen <= 1'b0;
+ bridge_rxAck_valid <= 1'b0;
+ bridge_txData_valid <= 1'b1;
+ bridge_txData_repeat <= 1'b1;
+ bridge_txData_enable <= 1'b0;
+ bridge_txAck_valid <= 1'b1;
+ bridge_txAck_repeat <= 1'b1;
+ bridge_txAck_enable <= 1'b0;
+ bridge_addressFilter_addresses_0_enable <= 1'b0;
+ bridge_addressFilter_addresses_1_enable <= 1'b0;
+ bridge_addressFilter_state <= 2'b00;
+ bridge_masterLogic_start <= 1'b0;
+ bridge_masterLogic_stop <= 1'b0;
+ bridge_masterLogic_drop <= 1'b0;
+ bridge_masterLogic_recover <= 1'b0;
+ bridge_masterLogic_fsm_dropped_start <= 1'b0;
+ bridge_masterLogic_fsm_dropped_stop <= 1'b0;
+ bridge_masterLogic_fsm_dropped_recover <= 1'b0;
+ bridge_dataCounter <= 3'b000;
+ bridge_inAckState <= 1'b0;
+ bridge_wasntAck <= 1'b0;
+ bridge_interruptCtrl_rxDataEnable <= 1'b0;
+ bridge_interruptCtrl_rxAckEnable <= 1'b0;
+ bridge_interruptCtrl_txDataEnable <= 1'b0;
+ bridge_interruptCtrl_txAckEnable <= 1'b0;
+ bridge_interruptCtrl_start_enable <= 1'b0;
+ bridge_interruptCtrl_start_flag <= 1'b0;
+ bridge_interruptCtrl_restart_enable <= 1'b0;
+ bridge_interruptCtrl_restart_flag <= 1'b0;
+ bridge_interruptCtrl_end_enable <= 1'b0;
+ bridge_interruptCtrl_end_flag <= 1'b0;
+ bridge_interruptCtrl_drop_enable <= 1'b0;
+ bridge_interruptCtrl_drop_flag <= 1'b0;
+ bridge_interruptCtrl_filterGen_enable <= 1'b0;
+ bridge_interruptCtrl_filterGen_flag <= 1'b0;
+ bridge_interruptCtrl_clockGenExit_enable <= 1'b0;
+ bridge_interruptCtrl_clockGenExit_flag <= 1'b0;
+ bridge_interruptCtrl_clockGenEnter_enable <= 1'b0;
+ bridge_interruptCtrl_clockGenEnter_flag <= 1'b0;
+ _zz_io_config_samplingClockDivider <= 10'h0;
+ bridge_masterLogic_fsm_stateReg <= Axi4Peripheralbridge_masterLogic_fsm_enumDef_BOOT;
+ bridge_slaveOverride_sda <= 1'b1;
+ bridge_slaveOverride_scl <= 1'b1;
+ bridge_i2cBuffer_scl_write_regNext <= 1'b1;
+ bridge_i2cBuffer_sda_write_regNext <= 1'b1;
+ end else begin
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_ctrl_rsp_valid_1 <= (busCtrl_rsp_valid && _zz_busCtrl_rsp_ready);
+ end
+ bridge_rxData_event <= 1'b0;
+ if(when_I2cCtrl_l224) begin
+ bridge_rxData_valid <= 1'b0;
+ end
+ if(when_I2cCtrl_l237) begin
+ bridge_rxAck_valid <= 1'b0;
+ end
+ if(bridge_rxData_event) begin
+ case(bridge_addressFilter_state)
+ 2'b00 : begin
+ bridge_addressFilter_state <= 2'b01;
+ end
+ 2'b01 : begin
+ bridge_addressFilter_state <= 2'b10;
+ end
+ default : begin
+ end
+ endcase
+ end
+ if(bridge_frameReset) begin
+ bridge_addressFilter_state <= 2'b00;
+ end
+ if(when_I2cCtrl_l310) begin
+ bridge_txAck_valid <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l377) begin
+ if(when_BusSlaveFactory_l379) begin
+ bridge_masterLogic_start <= _zz_bridge_masterLogic_start[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_1) begin
+ if(when_BusSlaveFactory_l379_1) begin
+ bridge_masterLogic_stop <= _zz_bridge_masterLogic_stop[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_2) begin
+ if(when_BusSlaveFactory_l379_2) begin
+ bridge_masterLogic_drop <= _zz_bridge_masterLogic_drop[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_3) begin
+ if(when_BusSlaveFactory_l379_3) begin
+ bridge_masterLogic_recover <= _zz_bridge_masterLogic_recover[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341) begin
+ if(when_BusSlaveFactory_l347) begin
+ bridge_masterLogic_fsm_dropped_start <= _zz_bridge_masterLogic_fsm_dropped_start[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_1) begin
+ if(when_BusSlaveFactory_l347_1) begin
+ bridge_masterLogic_fsm_dropped_stop <= _zz_bridge_masterLogic_fsm_dropped_stop[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_2) begin
+ if(when_BusSlaveFactory_l347_2) begin
+ bridge_masterLogic_fsm_dropped_recover <= _zz_bridge_masterLogic_fsm_dropped_recover[0];
+ end
+ end
+ case(i2cCtrl_io_bus_cmd_kind)
+ Axi4PeripheralI2cSlaveCmdMode_READ : begin
+ if(when_I2cCtrl_l566) begin
+ bridge_dataCounter <= (bridge_dataCounter + 3'b001);
+ if(when_I2cCtrl_l570) begin
+ if(bridge_txData_disableOnDataConflict) begin
+ bridge_txData_enable <= 1'b0;
+ end
+ if(bridge_txAck_disableOnDataConflict) begin
+ bridge_txAck_enable <= 1'b0;
+ end
+ end
+ if(when_I2cCtrl_l574) begin
+ if(bridge_rxData_listen) begin
+ bridge_rxData_valid <= 1'b1;
+ end
+ bridge_rxData_event <= 1'b1;
+ bridge_inAckState <= 1'b1;
+ if(when_I2cCtrl_l578) begin
+ bridge_txData_valid <= 1'b0;
+ end
+ end
+ end else begin
+ if(bridge_rxAck_listen) begin
+ bridge_rxAck_valid <= 1'b1;
+ end
+ bridge_inAckState <= 1'b0;
+ bridge_wasntAck <= i2cCtrl_io_bus_cmd_data;
+ if(when_I2cCtrl_l588) begin
+ bridge_txAck_valid <= 1'b0;
+ end
+ end
+ end
+ default : begin
+ end
+ endcase
+ if(bridge_frameReset) begin
+ bridge_inAckState <= 1'b0;
+ bridge_dataCounter <= 3'b000;
+ bridge_wasntAck <= 1'b0;
+ end
+ if(when_I2cCtrl_l601) begin
+ bridge_txData_valid <= 1'b1;
+ bridge_txData_enable <= 1'b0;
+ bridge_txData_repeat <= 1'b1;
+ bridge_txAck_valid <= 1'b1;
+ bridge_txAck_enable <= 1'b0;
+ bridge_txAck_repeat <= 1'b1;
+ bridge_rxData_listen <= 1'b0;
+ bridge_rxAck_listen <= 1'b0;
+ end
+ if(when_I2cCtrl_l634) begin
+ bridge_interruptCtrl_start_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_1) begin
+ bridge_interruptCtrl_start_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_3) begin
+ if(when_BusSlaveFactory_l347_3) begin
+ bridge_interruptCtrl_start_flag <= _zz_bridge_interruptCtrl_start_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_2) begin
+ bridge_interruptCtrl_restart_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_3) begin
+ bridge_interruptCtrl_restart_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_4) begin
+ if(when_BusSlaveFactory_l347_4) begin
+ bridge_interruptCtrl_restart_flag <= _zz_bridge_interruptCtrl_restart_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_4) begin
+ bridge_interruptCtrl_end_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_5) begin
+ bridge_interruptCtrl_end_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_5) begin
+ if(when_BusSlaveFactory_l347_5) begin
+ bridge_interruptCtrl_end_flag <= _zz_bridge_interruptCtrl_end_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_6) begin
+ bridge_interruptCtrl_drop_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_7) begin
+ bridge_interruptCtrl_drop_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_6) begin
+ if(when_BusSlaveFactory_l347_6) begin
+ bridge_interruptCtrl_drop_flag <= _zz_bridge_interruptCtrl_drop_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_8) begin
+ bridge_interruptCtrl_filterGen_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_9) begin
+ bridge_interruptCtrl_filterGen_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_7) begin
+ if(when_BusSlaveFactory_l347_7) begin
+ bridge_interruptCtrl_filterGen_flag <= _zz_bridge_interruptCtrl_filterGen_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_10) begin
+ bridge_interruptCtrl_clockGenExit_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_11) begin
+ bridge_interruptCtrl_clockGenExit_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_8) begin
+ if(when_BusSlaveFactory_l347_8) begin
+ bridge_interruptCtrl_clockGenExit_flag <= _zz_bridge_interruptCtrl_clockGenExit_flag[0];
+ end
+ end
+ if(when_I2cCtrl_l634_12) begin
+ bridge_interruptCtrl_clockGenEnter_flag <= 1'b1;
+ end
+ if(when_I2cCtrl_l634_13) begin
+ bridge_interruptCtrl_clockGenEnter_flag <= 1'b0;
+ end
+ if(when_BusSlaveFactory_l341_9) begin
+ if(when_BusSlaveFactory_l347_9) begin
+ bridge_interruptCtrl_clockGenEnter_flag <= _zz_bridge_interruptCtrl_clockGenEnter_flag[0];
+ end
+ end
+ bridge_masterLogic_fsm_stateReg <= bridge_masterLogic_fsm_stateNext;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ if(!when_I2cCtrl_l367) begin
+ if(when_I2cCtrl_l369) begin
+ bridge_txData_valid <= 1'b0;
+ end
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ if(bridge_masterLogic_timer_done) begin
+ bridge_masterLogic_start <= 1'b0;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ if(i2cCtrl_io_internals_sdaRead) begin
+ bridge_masterLogic_stop <= 1'b0;
+ bridge_masterLogic_recover <= 1'b0;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ end
+ endcase
+ if(when_I2cCtrl_l350) begin
+ bridge_masterLogic_start <= 1'b0;
+ bridge_masterLogic_stop <= 1'b0;
+ bridge_masterLogic_drop <= 1'b0;
+ bridge_masterLogic_recover <= 1'b0;
+ if(bridge_masterLogic_start) begin
+ bridge_masterLogic_fsm_dropped_start <= 1'b1;
+ end
+ if(bridge_masterLogic_stop) begin
+ bridge_masterLogic_fsm_dropped_stop <= 1'b1;
+ end
+ end
+ bridge_i2cBuffer_scl_write_regNext <= bridge_i2cBuffer_scl_write;
+ bridge_i2cBuffer_sda_write_regNext <= bridge_i2cBuffer_sda_write;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h08 : begin
+ if(busCtrl_doWrite) begin
+ bridge_rxData_listen <= io_ctrl_cmd_payload_fragment_data[9];
+ end
+ end
+ 8'h0c : begin
+ if(busCtrl_doWrite) begin
+ bridge_rxAck_listen <= io_ctrl_cmd_payload_fragment_data[9];
+ end
+ end
+ 8'h0 : begin
+ if(busCtrl_doWrite) begin
+ bridge_txData_repeat <= io_ctrl_cmd_payload_fragment_data[10];
+ bridge_txData_valid <= io_ctrl_cmd_payload_fragment_data[8];
+ bridge_txData_enable <= io_ctrl_cmd_payload_fragment_data[9];
+ end
+ end
+ 8'h04 : begin
+ if(busCtrl_doWrite) begin
+ bridge_txAck_repeat <= io_ctrl_cmd_payload_fragment_data[10];
+ bridge_txAck_valid <= io_ctrl_cmd_payload_fragment_data[8];
+ bridge_txAck_enable <= io_ctrl_cmd_payload_fragment_data[9];
+ end
+ end
+ 8'h88 : begin
+ if(busCtrl_doWrite) begin
+ bridge_addressFilter_addresses_0_enable <= io_ctrl_cmd_payload_fragment_data[15];
+ end
+ end
+ 8'h8c : begin
+ if(busCtrl_doWrite) begin
+ bridge_addressFilter_addresses_1_enable <= io_ctrl_cmd_payload_fragment_data[15];
+ end
+ end
+ 8'h20 : begin
+ if(busCtrl_doWrite) begin
+ bridge_interruptCtrl_rxDataEnable <= io_ctrl_cmd_payload_fragment_data[0];
+ bridge_interruptCtrl_rxAckEnable <= io_ctrl_cmd_payload_fragment_data[1];
+ bridge_interruptCtrl_txDataEnable <= io_ctrl_cmd_payload_fragment_data[2];
+ bridge_interruptCtrl_txAckEnable <= io_ctrl_cmd_payload_fragment_data[3];
+ bridge_interruptCtrl_start_enable <= io_ctrl_cmd_payload_fragment_data[4];
+ bridge_interruptCtrl_restart_enable <= io_ctrl_cmd_payload_fragment_data[5];
+ bridge_interruptCtrl_end_enable <= io_ctrl_cmd_payload_fragment_data[6];
+ bridge_interruptCtrl_drop_enable <= io_ctrl_cmd_payload_fragment_data[7];
+ bridge_interruptCtrl_filterGen_enable <= io_ctrl_cmd_payload_fragment_data[17];
+ bridge_interruptCtrl_clockGenExit_enable <= io_ctrl_cmd_payload_fragment_data[15];
+ bridge_interruptCtrl_clockGenEnter_enable <= io_ctrl_cmd_payload_fragment_data[16];
+ end
+ end
+ 8'h28 : begin
+ if(busCtrl_doWrite) begin
+ _zz_io_config_samplingClockDivider <= io_ctrl_cmd_payload_fragment_data[9 : 0];
+ end
+ end
+ 8'h48 : begin
+ if(busCtrl_doWrite) begin
+ bridge_slaveOverride_sda <= io_ctrl_cmd_payload_fragment_data[1];
+ bridge_slaveOverride_scl <= io_ctrl_cmd_payload_fragment_data[2];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_ctrl_rsp_payload_last <= busCtrl_rsp_payload_last;
+ _zz_io_ctrl_rsp_payload_fragment_opcode <= busCtrl_rsp_payload_fragment_opcode;
+ _zz_io_ctrl_rsp_payload_fragment_data <= busCtrl_rsp_payload_fragment_data;
+ _zz_io_ctrl_rsp_payload_fragment_context <= busCtrl_rsp_payload_fragment_context;
+ end
+ if(bridge_rxData_event) begin
+ case(bridge_addressFilter_state)
+ 2'b00 : begin
+ bridge_addressFilter_byte0 <= bridge_rxData_value;
+ end
+ 2'b01 : begin
+ bridge_addressFilter_byte1 <= bridge_rxData_value;
+ end
+ default : begin
+ end
+ endcase
+ end
+ _zz_when_I2cCtrl_l310_1 <= _zz_when_I2cCtrl_l310;
+ bridge_masterLogic_timer_value <= (bridge_masterLogic_timer_value - _zz_bridge_masterLogic_timer_value);
+ if(when_I2cCtrl_l363) begin
+ bridge_masterLogic_fsm_inFrameLate <= 1'b1;
+ end
+ if(when_I2cCtrl_l363_1) begin
+ bridge_masterLogic_fsm_inFrameLate <= 1'b0;
+ end
+ case(i2cCtrl_io_bus_cmd_kind)
+ Axi4PeripheralI2cSlaveCmdMode_READ : begin
+ if(when_I2cCtrl_l566) begin
+ bridge_rxData_value[_zz_bridge_rxData_value] <= i2cCtrl_io_bus_cmd_data;
+ end else begin
+ bridge_rxAck_value <= i2cCtrl_io_bus_cmd_data;
+ end
+ end
+ default : begin
+ end
+ endcase
+ if(when_I2cCtrl_l601) begin
+ bridge_txData_disableOnDataConflict <= 1'b0;
+ bridge_txAck_disableOnDataConflict <= 1'b0;
+ end
+ _zz_when_I2cCtrl_l634_1 <= _zz_when_I2cCtrl_l634;
+ bridge_masterLogic_fsm_isBusy_regNext <= bridge_masterLogic_fsm_isBusy;
+ bridge_masterLogic_fsm_isBusy_regNext_1 <= bridge_masterLogic_fsm_isBusy;
+ bridge_timeoutClear <= 1'b0;
+ case(bridge_masterLogic_fsm_stateReg)
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_IDLE : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START2 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_START3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_LOW : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_HIGH : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_RESTART : begin
+ if(when_I2cCtrl_l450) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tHigh;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP1 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP2 : begin
+ if(when_I2cCtrl_l474) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tHigh;
+ end
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_STOP3 : begin
+ end
+ Axi4Peripheralbridge_masterLogic_fsm_enumDef_TBUF : begin
+ end
+ default : begin
+ end
+ endcase
+ if(when_StateMachine_l253) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tHigh;
+ end
+ if(when_StateMachine_l253_1) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tLow;
+ end
+ if(when_StateMachine_l253_2) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tLow;
+ end
+ if(when_StateMachine_l253_3) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tHigh;
+ end
+ if(when_StateMachine_l253_4) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tHigh;
+ end
+ if(when_StateMachine_l253_5) begin
+ bridge_masterLogic_timer_value <= bridge_masterLogic_timer_tBuf;
+ end
+ case(io_ctrl_cmd_payload_fragment_address)
+ 8'h0 : begin
+ if(busCtrl_doWrite) begin
+ bridge_txData_value <= io_ctrl_cmd_payload_fragment_data[7 : 0];
+ bridge_txData_disableOnDataConflict <= io_ctrl_cmd_payload_fragment_data[11];
+ end
+ end
+ 8'h04 : begin
+ if(busCtrl_doWrite) begin
+ bridge_txAck_value <= io_ctrl_cmd_payload_fragment_data[0];
+ bridge_txAck_disableOnDataConflict <= io_ctrl_cmd_payload_fragment_data[11];
+ end
+ end
+ 8'h88 : begin
+ if(busCtrl_doWrite) begin
+ bridge_addressFilter_addresses_0_value <= io_ctrl_cmd_payload_fragment_data[9 : 0];
+ bridge_addressFilter_addresses_0_is10Bit <= io_ctrl_cmd_payload_fragment_data[14];
+ end
+ end
+ 8'h8c : begin
+ if(busCtrl_doWrite) begin
+ bridge_addressFilter_addresses_1_value <= io_ctrl_cmd_payload_fragment_data[9 : 0];
+ bridge_addressFilter_addresses_1_is10Bit <= io_ctrl_cmd_payload_fragment_data[14];
+ end
+ end
+ 8'h50 : begin
+ if(busCtrl_doWrite) begin
+ bridge_masterLogic_timer_tLow <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 8'h54 : begin
+ if(busCtrl_doWrite) begin
+ bridge_masterLogic_timer_tHigh <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 8'h58 : begin
+ if(busCtrl_doWrite) begin
+ bridge_masterLogic_timer_tBuf <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 8'h2c : begin
+ if(busCtrl_doWrite) begin
+ _zz_io_config_timeout <= io_ctrl_cmd_payload_fragment_data[19 : 0];
+ bridge_timeoutClear <= 1'b1;
+ end
+ end
+ 8'h30 : begin
+ if(busCtrl_doWrite) begin
+ _zz_io_config_tsuData <= io_ctrl_cmd_payload_fragment_data[5 : 0];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ i2cCtrl_io_internals_inFrame_regNext <= 1'b0;
+ end else begin
+ i2cCtrl_io_internals_inFrame_regNext <= i2cCtrl_io_internals_inFrame;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbSpiXdrMasterCtrl (
+ input wire io_ctrl_cmd_valid,
+ output wire io_ctrl_cmd_ready,
+ input wire io_ctrl_cmd_payload_last,
+ input wire [0:0] io_ctrl_cmd_payload_fragment_opcode,
+ input wire [11:0] io_ctrl_cmd_payload_fragment_address,
+ input wire [1:0] io_ctrl_cmd_payload_fragment_length,
+ input wire [31:0] io_ctrl_cmd_payload_fragment_data,
+ input wire [2:0] io_ctrl_cmd_payload_fragment_context,
+ output wire io_ctrl_rsp_valid,
+ input wire io_ctrl_rsp_ready,
+ output wire io_ctrl_rsp_payload_last,
+ output wire [0:0] io_ctrl_rsp_payload_fragment_opcode,
+ output wire [31:0] io_ctrl_rsp_payload_fragment_data,
+ output wire [2:0] io_ctrl_rsp_payload_fragment_context,
+ output wire [0:0] io_spi_sclk_write,
+ output wire io_spi_data_0_writeEnable,
+ input wire [0:0] io_spi_data_0_read,
+ output wire [0:0] io_spi_data_0_write,
+ output wire io_spi_data_1_writeEnable,
+ input wire [0:0] io_spi_data_1_read,
+ output wire [0:0] io_spi_data_1_write,
+ output wire io_spi_data_2_writeEnable,
+ input wire [0:0] io_spi_data_2_read,
+ output wire [0:0] io_spi_data_2_write,
+ output wire io_spi_data_3_writeEnable,
+ input wire [0:0] io_spi_data_3_read,
+ output wire [0:0] io_spi_data_3_write,
+ output wire [3:0] io_spi_ss,
+ output wire system_spi_0_io_interrupt_source,
+ input wire clk,
+ input wire reset
+);
+
+ wire ctrl_io_rsp_queueWithOccupancy_io_pop_ready;
+ wire ctrl_io_cmd_ready;
+ wire ctrl_io_rsp_valid;
+ wire [7:0] ctrl_io_rsp_payload_data;
+ wire [0:0] ctrl_io_spi_sclk_write;
+ wire [3:0] ctrl_io_spi_ss;
+ wire [0:0] ctrl_io_spi_data_0_write;
+ wire ctrl_io_spi_data_0_writeEnable;
+ wire [0:0] ctrl_io_spi_data_1_write;
+ wire ctrl_io_spi_data_1_writeEnable;
+ wire [0:0] ctrl_io_spi_data_2_write;
+ wire ctrl_io_spi_data_2_writeEnable;
+ wire [0:0] ctrl_io_spi_data_3_write;
+ wire ctrl_io_spi_data_3_writeEnable;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_push_ready;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_valid;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_kind;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_read;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_write;
+ wire [7:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_data;
+ wire [8:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_occupancy;
+ wire [8:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_availability;
+ wire ctrl_io_rsp_queueWithOccupancy_io_push_ready;
+ wire ctrl_io_rsp_queueWithOccupancy_io_pop_valid;
+ wire [7:0] ctrl_io_rsp_queueWithOccupancy_io_pop_payload_data;
+ wire [8:0] ctrl_io_rsp_queueWithOccupancy_io_occupancy;
+ wire [8:0] ctrl_io_rsp_queueWithOccupancy_io_availability;
+ wire factory_readErrorFlag;
+ wire factory_writeErrorFlag;
+ wire factory_readHaltTrigger;
+ wire factory_writeHaltTrigger;
+ wire factory_rsp_valid;
+ wire factory_rsp_ready;
+ wire factory_rsp_payload_last;
+ reg [0:0] factory_rsp_payload_fragment_opcode;
+ reg [31:0] factory_rsp_payload_fragment_data;
+ wire [2:0] factory_rsp_payload_fragment_context;
+ wire _zz_factory_rsp_ready;
+ reg _zz_factory_rsp_ready_1;
+ wire _zz_io_ctrl_rsp_valid;
+ reg _zz_io_ctrl_rsp_valid_1;
+ reg _zz_io_ctrl_rsp_payload_last;
+ reg [0:0] _zz_io_ctrl_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_ctrl_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_ctrl_rsp_payload_fragment_context;
+ wire when_Stream_l375;
+ wire factory_askWrite;
+ wire factory_askRead;
+ wire io_ctrl_cmd_fire;
+ wire factory_doWrite;
+ wire factory_doRead;
+ wire when_BmbSlaveFactory_l33;
+ wire when_BmbSlaveFactory_l35;
+ wire [31:0] mapping_cmdLogic_writeData;
+ reg mapping_cmdLogic_doRegular;
+ reg mapping_cmdLogic_doWriteLarge;
+ reg mapping_cmdLogic_doReadWriteLarge;
+ wire mapping_cmdLogic_streamUnbuffered_valid;
+ wire mapping_cmdLogic_streamUnbuffered_ready;
+ wire mapping_cmdLogic_streamUnbuffered_payload_kind;
+ wire mapping_cmdLogic_streamUnbuffered_payload_read;
+ wire mapping_cmdLogic_streamUnbuffered_payload_write;
+ wire [7:0] mapping_cmdLogic_streamUnbuffered_payload_data;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_valid;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_kind;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_read;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_write;
+ wire [7:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_data;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_kind;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_read;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_write;
+ reg [7:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_data;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_valid;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_ready;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_kind;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_read;
+ wire mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_write;
+ wire [7:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_data;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rValid;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_kind;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_read;
+ reg mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_write;
+ reg [7:0] mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_data;
+ wire when_Stream_l375_1;
+ wire ctrl_io_rsp_toStream_valid;
+ wire ctrl_io_rsp_toStream_ready;
+ wire [7:0] ctrl_io_rsp_toStream_payload_data;
+ reg _zz_io_pop_ready;
+ reg _zz_io_pop_ready_1;
+ reg mapping_interruptCtrl_cmdIntEnable;
+ reg mapping_interruptCtrl_rspIntEnable;
+ wire mapping_interruptCtrl_cmdInt;
+ wire mapping_interruptCtrl_rspInt;
+ wire mapping_interruptCtrl_interrupt;
+ reg _zz_io_config_kind_cpol;
+ reg _zz_io_config_kind_cpha;
+ reg [1:0] _zz_io_config_mod;
+ reg [11:0] _zz_io_config_sclkToggle;
+ reg [11:0] _zz_io_config_ss_setup;
+ reg [11:0] _zz_io_config_ss_hold;
+ reg [11:0] _zz_io_config_ss_disable;
+ reg [3:0] _zz_io_config_ss_activeHigh;
+ wire [1:0] _zz_io_config_kind_cpol_1;
+
+ Axi4PeripheralTopLevel ctrl (
+ .io_config_kind_cpol (_zz_io_config_kind_cpol ), //i
+ .io_config_kind_cpha (_zz_io_config_kind_cpha ), //i
+ .io_config_sclkToggle (_zz_io_config_sclkToggle[11:0] ), //i
+ .io_config_mod (_zz_io_config_mod[1:0] ), //i
+ .io_config_ss_activeHigh (_zz_io_config_ss_activeHigh[3:0] ), //i
+ .io_config_ss_setup (_zz_io_config_ss_setup[11:0] ), //i
+ .io_config_ss_hold (_zz_io_config_ss_hold[11:0] ), //i
+ .io_config_ss_disable (_zz_io_config_ss_disable[11:0] ), //i
+ .io_cmd_valid (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_valid ), //i
+ .io_cmd_ready (ctrl_io_cmd_ready ), //o
+ .io_cmd_payload_kind (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_kind ), //i
+ .io_cmd_payload_read (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_read ), //i
+ .io_cmd_payload_write (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_write ), //i
+ .io_cmd_payload_data (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_data[7:0]), //i
+ .io_rsp_valid (ctrl_io_rsp_valid ), //o
+ .io_rsp_payload_data (ctrl_io_rsp_payload_data[7:0] ), //o
+ .io_spi_sclk_write (ctrl_io_spi_sclk_write ), //o
+ .io_spi_data_0_writeEnable (ctrl_io_spi_data_0_writeEnable ), //o
+ .io_spi_data_0_read (io_spi_data_0_read ), //i
+ .io_spi_data_0_write (ctrl_io_spi_data_0_write ), //o
+ .io_spi_data_1_writeEnable (ctrl_io_spi_data_1_writeEnable ), //o
+ .io_spi_data_1_read (io_spi_data_1_read ), //i
+ .io_spi_data_1_write (ctrl_io_spi_data_1_write ), //o
+ .io_spi_data_2_writeEnable (ctrl_io_spi_data_2_writeEnable ), //o
+ .io_spi_data_2_read (io_spi_data_2_read ), //i
+ .io_spi_data_2_write (ctrl_io_spi_data_2_write ), //o
+ .io_spi_data_3_writeEnable (ctrl_io_spi_data_3_writeEnable ), //o
+ .io_spi_data_3_read (io_spi_data_3_read ), //i
+ .io_spi_data_3_write (ctrl_io_spi_data_3_write ), //o
+ .io_spi_ss (ctrl_io_spi_ss[3:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralStreamFifo_2 mapping_cmdLogic_streamUnbuffered_queueWithAvailability (
+ .io_push_valid (mapping_cmdLogic_streamUnbuffered_valid ), //i
+ .io_push_ready (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_push_ready ), //o
+ .io_push_payload_kind (mapping_cmdLogic_streamUnbuffered_payload_kind ), //i
+ .io_push_payload_read (mapping_cmdLogic_streamUnbuffered_payload_read ), //i
+ .io_push_payload_write (mapping_cmdLogic_streamUnbuffered_payload_write ), //i
+ .io_push_payload_data (mapping_cmdLogic_streamUnbuffered_payload_data[7:0] ), //i
+ .io_pop_valid (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_valid ), //o
+ .io_pop_ready (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN ), //i
+ .io_pop_payload_kind (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_kind ), //o
+ .io_pop_payload_read (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_read ), //o
+ .io_pop_payload_write (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_write ), //o
+ .io_pop_payload_data (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_data[7:0]), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_occupancy[8:0] ), //o
+ .io_availability (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_availability[8:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralStreamFifo_3 ctrl_io_rsp_queueWithOccupancy (
+ .io_push_valid (ctrl_io_rsp_toStream_valid ), //i
+ .io_push_ready (ctrl_io_rsp_queueWithOccupancy_io_push_ready ), //o
+ .io_push_payload_data (ctrl_io_rsp_toStream_payload_data[7:0] ), //i
+ .io_pop_valid (ctrl_io_rsp_queueWithOccupancy_io_pop_valid ), //o
+ .io_pop_ready (ctrl_io_rsp_queueWithOccupancy_io_pop_ready ), //i
+ .io_pop_payload_data (ctrl_io_rsp_queueWithOccupancy_io_pop_payload_data[7:0]), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (ctrl_io_rsp_queueWithOccupancy_io_occupancy[8:0] ), //o
+ .io_availability (ctrl_io_rsp_queueWithOccupancy_io_availability[8:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign factory_readErrorFlag = 1'b0;
+ assign factory_writeErrorFlag = 1'b0;
+ assign factory_readHaltTrigger = 1'b0;
+ assign factory_writeHaltTrigger = 1'b0;
+ assign _zz_factory_rsp_ready = (! (factory_readHaltTrigger || factory_writeHaltTrigger));
+ assign factory_rsp_ready = (_zz_factory_rsp_ready_1 && _zz_factory_rsp_ready);
+ always @(*) begin
+ _zz_factory_rsp_ready_1 = io_ctrl_rsp_ready;
+ if(when_Stream_l375) begin
+ _zz_factory_rsp_ready_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! _zz_io_ctrl_rsp_valid);
+ assign _zz_io_ctrl_rsp_valid = _zz_io_ctrl_rsp_valid_1;
+ assign io_ctrl_rsp_valid = _zz_io_ctrl_rsp_valid;
+ assign io_ctrl_rsp_payload_last = _zz_io_ctrl_rsp_payload_last;
+ assign io_ctrl_rsp_payload_fragment_opcode = _zz_io_ctrl_rsp_payload_fragment_opcode;
+ assign io_ctrl_rsp_payload_fragment_data = _zz_io_ctrl_rsp_payload_fragment_data;
+ assign io_ctrl_rsp_payload_fragment_context = _zz_io_ctrl_rsp_payload_fragment_context;
+ assign factory_askWrite = (io_ctrl_cmd_valid && (io_ctrl_cmd_payload_fragment_opcode == 1'b1));
+ assign factory_askRead = (io_ctrl_cmd_valid && (io_ctrl_cmd_payload_fragment_opcode == 1'b0));
+ assign io_ctrl_cmd_fire = (io_ctrl_cmd_valid && io_ctrl_cmd_ready);
+ assign factory_doWrite = (io_ctrl_cmd_fire && (io_ctrl_cmd_payload_fragment_opcode == 1'b1));
+ assign factory_doRead = (io_ctrl_cmd_fire && (io_ctrl_cmd_payload_fragment_opcode == 1'b0));
+ assign factory_rsp_valid = io_ctrl_cmd_valid;
+ assign io_ctrl_cmd_ready = factory_rsp_ready;
+ assign factory_rsp_payload_last = 1'b1;
+ assign when_BmbSlaveFactory_l33 = (factory_doWrite && factory_writeErrorFlag);
+ always @(*) begin
+ if(when_BmbSlaveFactory_l33) begin
+ factory_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ if(when_BmbSlaveFactory_l35) begin
+ factory_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ factory_rsp_payload_fragment_opcode = 1'b0;
+ end
+ end
+ end
+
+ assign when_BmbSlaveFactory_l35 = (factory_doRead && factory_readErrorFlag);
+ always @(*) begin
+ factory_rsp_payload_fragment_data = 32'h0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h0 : begin
+ factory_rsp_payload_fragment_data[31 : 31] = (! ctrl_io_rsp_queueWithOccupancy_io_pop_valid);
+ factory_rsp_payload_fragment_data[7 : 0] = ctrl_io_rsp_queueWithOccupancy_io_pop_payload_data;
+ end
+ 12'h004 : begin
+ factory_rsp_payload_fragment_data[8 : 0] = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_availability;
+ factory_rsp_payload_fragment_data[24 : 16] = ctrl_io_rsp_queueWithOccupancy_io_occupancy;
+ end
+ 12'h00c : begin
+ factory_rsp_payload_fragment_data[16 : 16] = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_valid;
+ factory_rsp_payload_fragment_data[0 : 0] = mapping_interruptCtrl_cmdIntEnable;
+ factory_rsp_payload_fragment_data[1 : 1] = mapping_interruptCtrl_rspIntEnable;
+ factory_rsp_payload_fragment_data[8 : 8] = mapping_interruptCtrl_cmdInt;
+ factory_rsp_payload_fragment_data[9 : 9] = mapping_interruptCtrl_rspInt;
+ end
+ 12'h058 : begin
+ factory_rsp_payload_fragment_data[7 : 0] = ctrl_io_rsp_queueWithOccupancy_io_pop_payload_data;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign factory_rsp_payload_fragment_context = io_ctrl_cmd_payload_fragment_context;
+ always @(*) begin
+ mapping_cmdLogic_doRegular = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h0 : begin
+ if(factory_doWrite) begin
+ mapping_cmdLogic_doRegular = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ mapping_cmdLogic_doWriteLarge = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h050 : begin
+ if(factory_doWrite) begin
+ mapping_cmdLogic_doWriteLarge = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ mapping_cmdLogic_doReadWriteLarge = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h054 : begin
+ if(factory_doWrite) begin
+ mapping_cmdLogic_doReadWriteLarge = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign mapping_cmdLogic_streamUnbuffered_valid = ((mapping_cmdLogic_doRegular || mapping_cmdLogic_doWriteLarge) || mapping_cmdLogic_doReadWriteLarge);
+ assign mapping_cmdLogic_streamUnbuffered_payload_write = (((mapping_cmdLogic_doRegular && mapping_cmdLogic_writeData[8]) || mapping_cmdLogic_doWriteLarge) || mapping_cmdLogic_doReadWriteLarge);
+ assign mapping_cmdLogic_streamUnbuffered_payload_read = ((mapping_cmdLogic_doRegular && mapping_cmdLogic_writeData[9]) || mapping_cmdLogic_doReadWriteLarge);
+ assign mapping_cmdLogic_streamUnbuffered_payload_kind = (mapping_cmdLogic_doRegular && mapping_cmdLogic_writeData[11]);
+ assign mapping_cmdLogic_streamUnbuffered_payload_data = mapping_cmdLogic_writeData[7:0];
+ assign mapping_cmdLogic_streamUnbuffered_ready = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_push_ready;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_valid = (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_valid || (! mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN));
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_kind = (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN ? mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_kind : mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_kind);
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_read = (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN ? mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_read : mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_read);
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_write = (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN ? mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_write : mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_write);
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_data = (mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN ? mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_data : mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_data);
+ always @(*) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_ready;
+ if(when_Stream_l375_1) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_1 = (! mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_valid);
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_valid = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rValid;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_kind = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_kind;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_read = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_read;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_write = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_write;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_payload_data = mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_data;
+ assign mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_m2sPipe_ready = ctrl_io_cmd_ready;
+ assign ctrl_io_rsp_toStream_valid = ctrl_io_rsp_valid;
+ assign ctrl_io_rsp_toStream_payload_data = ctrl_io_rsp_payload_data;
+ assign ctrl_io_rsp_toStream_ready = ctrl_io_rsp_queueWithOccupancy_io_push_ready;
+ always @(*) begin
+ _zz_io_pop_ready = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h0 : begin
+ if(factory_doRead) begin
+ _zz_io_pop_ready = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ _zz_io_pop_ready_1 = 1'b0;
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h058 : begin
+ if(factory_doRead) begin
+ _zz_io_pop_ready_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign ctrl_io_rsp_queueWithOccupancy_io_pop_ready = (_zz_io_pop_ready || _zz_io_pop_ready_1);
+ assign mapping_interruptCtrl_cmdInt = (mapping_interruptCtrl_cmdIntEnable && (! mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_valid));
+ assign mapping_interruptCtrl_rspInt = (mapping_interruptCtrl_rspIntEnable && ctrl_io_rsp_queueWithOccupancy_io_pop_valid);
+ assign mapping_interruptCtrl_interrupt = (mapping_interruptCtrl_rspInt || mapping_interruptCtrl_cmdInt);
+ assign io_spi_sclk_write = ctrl_io_spi_sclk_write;
+ assign io_spi_data_0_writeEnable = ctrl_io_spi_data_0_writeEnable;
+ assign io_spi_data_0_write = ctrl_io_spi_data_0_write;
+ assign io_spi_data_1_writeEnable = ctrl_io_spi_data_1_writeEnable;
+ assign io_spi_data_1_write = ctrl_io_spi_data_1_write;
+ assign io_spi_data_2_writeEnable = ctrl_io_spi_data_2_writeEnable;
+ assign io_spi_data_2_write = ctrl_io_spi_data_2_write;
+ assign io_spi_data_3_writeEnable = ctrl_io_spi_data_3_writeEnable;
+ assign io_spi_data_3_write = ctrl_io_spi_data_3_write;
+ assign io_spi_ss = ctrl_io_spi_ss;
+ assign system_spi_0_io_interrupt_source = mapping_interruptCtrl_interrupt;
+ assign mapping_cmdLogic_writeData = io_ctrl_cmd_payload_fragment_data[31 : 0];
+ assign _zz_io_config_kind_cpol_1 = io_ctrl_cmd_payload_fragment_data[1 : 0];
+ always @(posedge clk) begin
+ if(reset) begin
+ _zz_io_ctrl_rsp_valid_1 <= 1'b0;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN <= 1'b1;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rValid <= 1'b0;
+ mapping_interruptCtrl_cmdIntEnable <= 1'b0;
+ mapping_interruptCtrl_rspIntEnable <= 1'b0;
+ _zz_io_config_ss_activeHigh <= 4'b0000;
+ end else begin
+ if(_zz_factory_rsp_ready_1) begin
+ _zz_io_ctrl_rsp_valid_1 <= (factory_rsp_valid && _zz_factory_rsp_ready);
+ end
+ if(mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_valid) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN <= 1'b0;
+ end
+ if(mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN <= 1'b1;
+ end
+ if(mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rValid <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_valid;
+ end
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h00c : begin
+ if(factory_doWrite) begin
+ mapping_interruptCtrl_cmdIntEnable <= io_ctrl_cmd_payload_fragment_data[0];
+ mapping_interruptCtrl_rspIntEnable <= io_ctrl_cmd_payload_fragment_data[1];
+ end
+ end
+ 12'h030 : begin
+ if(factory_doWrite) begin
+ _zz_io_config_ss_activeHigh <= io_ctrl_cmd_payload_fragment_data[3 : 0];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_factory_rsp_ready_1) begin
+ _zz_io_ctrl_rsp_payload_last <= factory_rsp_payload_last;
+ _zz_io_ctrl_rsp_payload_fragment_opcode <= factory_rsp_payload_fragment_opcode;
+ _zz_io_ctrl_rsp_payload_fragment_data <= factory_rsp_payload_fragment_data;
+ _zz_io_ctrl_rsp_payload_fragment_context <= factory_rsp_payload_fragment_context;
+ end
+ if(mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rValidN) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_kind <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_kind;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_read <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_read;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_write <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_write;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_rData_data <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_payload_data;
+ end
+ if(mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_ready) begin
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_kind <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_kind;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_read <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_read;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_write <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_write;
+ mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_rData_data <= mapping_cmdLogic_streamUnbuffered_queueWithAvailability_io_pop_s2mPipe_payload_data;
+ end
+ case(io_ctrl_cmd_payload_fragment_address)
+ 12'h008 : begin
+ if(factory_doWrite) begin
+ _zz_io_config_kind_cpol <= _zz_io_config_kind_cpol_1[0];
+ _zz_io_config_kind_cpha <= _zz_io_config_kind_cpol_1[1];
+ _zz_io_config_mod <= io_ctrl_cmd_payload_fragment_data[5 : 4];
+ end
+ end
+ 12'h020 : begin
+ if(factory_doWrite) begin
+ _zz_io_config_sclkToggle <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 12'h024 : begin
+ if(factory_doWrite) begin
+ _zz_io_config_ss_setup <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 12'h028 : begin
+ if(factory_doWrite) begin
+ _zz_io_config_ss_hold <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ 12'h02c : begin
+ if(factory_doWrite) begin
+ _zz_io_config_ss_disable <= io_ctrl_cmd_payload_fragment_data[11 : 0];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbUartCtrl (
+ input wire io_bus_cmd_valid,
+ output wire io_bus_cmd_ready,
+ input wire io_bus_cmd_payload_last,
+ input wire [0:0] io_bus_cmd_payload_fragment_opcode,
+ input wire [5:0] io_bus_cmd_payload_fragment_address,
+ input wire [1:0] io_bus_cmd_payload_fragment_length,
+ input wire [31:0] io_bus_cmd_payload_fragment_data,
+ input wire [2:0] io_bus_cmd_payload_fragment_context,
+ output wire io_bus_rsp_valid,
+ input wire io_bus_rsp_ready,
+ output wire io_bus_rsp_payload_last,
+ output wire [0:0] io_bus_rsp_payload_fragment_opcode,
+ output wire [31:0] io_bus_rsp_payload_fragment_data,
+ output wire [2:0] io_bus_rsp_payload_fragment_context,
+ output wire io_uart_txd,
+ input wire io_uart_rxd,
+ output wire system_uart_0_io_interrupt_source,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4PeripheralUartStopType_ONE = 1'd0;
+ localparam Axi4PeripheralUartStopType_TWO = 1'd1;
+ localparam Axi4PeripheralUartParityType_NONE = 2'd0;
+ localparam Axi4PeripheralUartParityType_EVEN = 2'd1;
+ localparam Axi4PeripheralUartParityType_ODD = 2'd2;
+
+ reg uartCtrl_io_read_queueWithOccupancy_io_pop_ready;
+ wire uartCtrl_io_write_ready;
+ wire uartCtrl_io_read_valid;
+ wire [7:0] uartCtrl_io_read_payload;
+ wire uartCtrl_io_uart_txd;
+ wire uartCtrl_io_readError;
+ wire uartCtrl_io_readBreak;
+ wire bridge_write_streamUnbuffered_queueWithOccupancy_io_push_ready;
+ wire bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_valid;
+ wire [7:0] bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_payload;
+ wire [7:0] bridge_write_streamUnbuffered_queueWithOccupancy_io_occupancy;
+ wire [7:0] bridge_write_streamUnbuffered_queueWithOccupancy_io_availability;
+ wire uartCtrl_io_read_queueWithOccupancy_io_push_ready;
+ wire uartCtrl_io_read_queueWithOccupancy_io_pop_valid;
+ wire [7:0] uartCtrl_io_read_queueWithOccupancy_io_pop_payload;
+ wire [7:0] uartCtrl_io_read_queueWithOccupancy_io_occupancy;
+ wire [7:0] uartCtrl_io_read_queueWithOccupancy_io_availability;
+ wire [0:0] _zz_bridge_misc_readError;
+ wire [0:0] _zz_bridge_misc_readOverflowError;
+ wire [0:0] _zz_bridge_misc_breakDetected;
+ wire [0:0] _zz_bridge_misc_doBreak;
+ wire [0:0] _zz_bridge_misc_doBreak_1;
+ wire [7:0] _zz_busCtrl_rsp_payload_fragment_data;
+ wire busCtrl_readErrorFlag;
+ wire busCtrl_writeErrorFlag;
+ wire busCtrl_readHaltTrigger;
+ wire busCtrl_writeHaltTrigger;
+ wire busCtrl_rsp_valid;
+ wire busCtrl_rsp_ready;
+ wire busCtrl_rsp_payload_last;
+ reg [0:0] busCtrl_rsp_payload_fragment_opcode;
+ reg [31:0] busCtrl_rsp_payload_fragment_data;
+ wire [2:0] busCtrl_rsp_payload_fragment_context;
+ wire _zz_busCtrl_rsp_ready;
+ reg _zz_busCtrl_rsp_ready_1;
+ wire _zz_io_bus_rsp_valid;
+ reg _zz_io_bus_rsp_valid_1;
+ reg _zz_io_bus_rsp_payload_last;
+ reg [0:0] _zz_io_bus_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_bus_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_bus_rsp_payload_fragment_context;
+ wire when_Stream_l375;
+ wire busCtrl_askWrite;
+ wire busCtrl_askRead;
+ wire io_bus_cmd_fire;
+ wire busCtrl_doWrite;
+ wire busCtrl_doRead;
+ wire when_BmbSlaveFactory_l33;
+ wire when_BmbSlaveFactory_l35;
+ wire bridge_busCtrlWrapped_readErrorFlag;
+ wire bridge_busCtrlWrapped_writeErrorFlag;
+ reg [2:0] bridge_uartConfigReg_frame_dataLength;
+ reg [0:0] bridge_uartConfigReg_frame_stop;
+ reg [1:0] bridge_uartConfigReg_frame_parity;
+ reg [19:0] bridge_uartConfigReg_clockDivider;
+ reg _zz_bridge_write_streamUnbuffered_valid;
+ wire bridge_write_streamUnbuffered_valid;
+ wire bridge_write_streamUnbuffered_ready;
+ wire [7:0] bridge_write_streamUnbuffered_payload;
+ reg bridge_read_streamBreaked_valid;
+ reg bridge_read_streamBreaked_ready;
+ wire [7:0] bridge_read_streamBreaked_payload;
+ reg bridge_interruptCtrl_writeIntEnable;
+ reg bridge_interruptCtrl_readIntEnable;
+ wire bridge_interruptCtrl_readInt;
+ wire bridge_interruptCtrl_writeInt;
+ wire bridge_interruptCtrl_interrupt;
+ reg bridge_misc_readError;
+ reg when_BusSlaveFactory_l341;
+ wire when_BusSlaveFactory_l347;
+ reg bridge_misc_readOverflowError;
+ reg when_BusSlaveFactory_l341_1;
+ wire when_BusSlaveFactory_l347_1;
+ wire uartCtrl_io_read_isStall;
+ reg bridge_misc_breakDetected;
+ reg uartCtrl_io_readBreak_regNext;
+ wire when_UartCtrl_l155;
+ reg when_BusSlaveFactory_l341_2;
+ wire when_BusSlaveFactory_l347_2;
+ reg bridge_misc_doBreak;
+ reg when_BusSlaveFactory_l377;
+ wire when_BusSlaveFactory_l379;
+ reg when_BusSlaveFactory_l341_3;
+ wire when_BusSlaveFactory_l347_3;
+ wire [1:0] _zz_bridge_uartConfigReg_frame_parity;
+ wire [0:0] _zz_bridge_uartConfigReg_frame_stop;
+ wire when_BmbSlaveFactory_l77;
+ `ifndef SYNTHESIS
+ reg [23:0] bridge_uartConfigReg_frame_stop_string;
+ reg [31:0] bridge_uartConfigReg_frame_parity_string;
+ reg [31:0] _zz_bridge_uartConfigReg_frame_parity_string;
+ reg [23:0] _zz_bridge_uartConfigReg_frame_stop_string;
+ `endif
+
+
+ assign _zz_bridge_misc_readError = 1'b0;
+ assign _zz_bridge_misc_readOverflowError = 1'b0;
+ assign _zz_bridge_misc_breakDetected = 1'b0;
+ assign _zz_bridge_misc_doBreak = 1'b1;
+ assign _zz_bridge_misc_doBreak_1 = 1'b0;
+ assign _zz_busCtrl_rsp_payload_fragment_data = (8'h80 - bridge_write_streamUnbuffered_queueWithOccupancy_io_occupancy);
+ Axi4PeripheralUartCtrl uartCtrl (
+ .io_config_frame_dataLength (bridge_uartConfigReg_frame_dataLength[2:0] ), //i
+ .io_config_frame_stop (bridge_uartConfigReg_frame_stop ), //i
+ .io_config_frame_parity (bridge_uartConfigReg_frame_parity[1:0] ), //i
+ .io_config_clockDivider (bridge_uartConfigReg_clockDivider[19:0] ), //i
+ .io_write_valid (bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_valid ), //i
+ .io_write_ready (uartCtrl_io_write_ready ), //o
+ .io_write_payload (bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_payload[7:0]), //i
+ .io_read_valid (uartCtrl_io_read_valid ), //o
+ .io_read_ready (uartCtrl_io_read_queueWithOccupancy_io_push_ready ), //i
+ .io_read_payload (uartCtrl_io_read_payload[7:0] ), //o
+ .io_uart_txd (uartCtrl_io_uart_txd ), //o
+ .io_uart_rxd (io_uart_rxd ), //i
+ .io_readError (uartCtrl_io_readError ), //o
+ .io_writeBreak (bridge_misc_doBreak ), //i
+ .io_readBreak (uartCtrl_io_readBreak ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralStreamFifo bridge_write_streamUnbuffered_queueWithOccupancy (
+ .io_push_valid (bridge_write_streamUnbuffered_valid ), //i
+ .io_push_ready (bridge_write_streamUnbuffered_queueWithOccupancy_io_push_ready ), //o
+ .io_push_payload (bridge_write_streamUnbuffered_payload[7:0] ), //i
+ .io_pop_valid (bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_valid ), //o
+ .io_pop_ready (uartCtrl_io_write_ready ), //i
+ .io_pop_payload (bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_payload[7:0] ), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (bridge_write_streamUnbuffered_queueWithOccupancy_io_occupancy[7:0] ), //o
+ .io_availability (bridge_write_streamUnbuffered_queueWithOccupancy_io_availability[7:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralStreamFifo uartCtrl_io_read_queueWithOccupancy (
+ .io_push_valid (uartCtrl_io_read_valid ), //i
+ .io_push_ready (uartCtrl_io_read_queueWithOccupancy_io_push_ready ), //o
+ .io_push_payload (uartCtrl_io_read_payload[7:0] ), //i
+ .io_pop_valid (uartCtrl_io_read_queueWithOccupancy_io_pop_valid ), //o
+ .io_pop_ready (uartCtrl_io_read_queueWithOccupancy_io_pop_ready ), //i
+ .io_pop_payload (uartCtrl_io_read_queueWithOccupancy_io_pop_payload[7:0] ), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (uartCtrl_io_read_queueWithOccupancy_io_occupancy[7:0] ), //o
+ .io_availability (uartCtrl_io_read_queueWithOccupancy_io_availability[7:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(bridge_uartConfigReg_frame_stop)
+ Axi4PeripheralUartStopType_ONE : bridge_uartConfigReg_frame_stop_string = "ONE";
+ Axi4PeripheralUartStopType_TWO : bridge_uartConfigReg_frame_stop_string = "TWO";
+ default : bridge_uartConfigReg_frame_stop_string = "???";
+ endcase
+ end
+ always @(*) begin
+ case(bridge_uartConfigReg_frame_parity)
+ Axi4PeripheralUartParityType_NONE : bridge_uartConfigReg_frame_parity_string = "NONE";
+ Axi4PeripheralUartParityType_EVEN : bridge_uartConfigReg_frame_parity_string = "EVEN";
+ Axi4PeripheralUartParityType_ODD : bridge_uartConfigReg_frame_parity_string = "ODD ";
+ default : bridge_uartConfigReg_frame_parity_string = "????";
+ endcase
+ end
+ always @(*) begin
+ case(_zz_bridge_uartConfigReg_frame_parity)
+ Axi4PeripheralUartParityType_NONE : _zz_bridge_uartConfigReg_frame_parity_string = "NONE";
+ Axi4PeripheralUartParityType_EVEN : _zz_bridge_uartConfigReg_frame_parity_string = "EVEN";
+ Axi4PeripheralUartParityType_ODD : _zz_bridge_uartConfigReg_frame_parity_string = "ODD ";
+ default : _zz_bridge_uartConfigReg_frame_parity_string = "????";
+ endcase
+ end
+ always @(*) begin
+ case(_zz_bridge_uartConfigReg_frame_stop)
+ Axi4PeripheralUartStopType_ONE : _zz_bridge_uartConfigReg_frame_stop_string = "ONE";
+ Axi4PeripheralUartStopType_TWO : _zz_bridge_uartConfigReg_frame_stop_string = "TWO";
+ default : _zz_bridge_uartConfigReg_frame_stop_string = "???";
+ endcase
+ end
+ `endif
+
+ assign io_uart_txd = uartCtrl_io_uart_txd;
+ assign busCtrl_readErrorFlag = 1'b0;
+ assign busCtrl_writeErrorFlag = 1'b0;
+ assign busCtrl_readHaltTrigger = 1'b0;
+ assign busCtrl_writeHaltTrigger = 1'b0;
+ assign _zz_busCtrl_rsp_ready = (! (busCtrl_readHaltTrigger || busCtrl_writeHaltTrigger));
+ assign busCtrl_rsp_ready = (_zz_busCtrl_rsp_ready_1 && _zz_busCtrl_rsp_ready);
+ always @(*) begin
+ _zz_busCtrl_rsp_ready_1 = io_bus_rsp_ready;
+ if(when_Stream_l375) begin
+ _zz_busCtrl_rsp_ready_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! _zz_io_bus_rsp_valid);
+ assign _zz_io_bus_rsp_valid = _zz_io_bus_rsp_valid_1;
+ assign io_bus_rsp_valid = _zz_io_bus_rsp_valid;
+ assign io_bus_rsp_payload_last = _zz_io_bus_rsp_payload_last;
+ assign io_bus_rsp_payload_fragment_opcode = _zz_io_bus_rsp_payload_fragment_opcode;
+ assign io_bus_rsp_payload_fragment_data = _zz_io_bus_rsp_payload_fragment_data;
+ assign io_bus_rsp_payload_fragment_context = _zz_io_bus_rsp_payload_fragment_context;
+ assign busCtrl_askWrite = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_askRead = (io_bus_cmd_valid && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign io_bus_cmd_fire = (io_bus_cmd_valid && io_bus_cmd_ready);
+ assign busCtrl_doWrite = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b1));
+ assign busCtrl_doRead = (io_bus_cmd_fire && (io_bus_cmd_payload_fragment_opcode == 1'b0));
+ assign busCtrl_rsp_valid = io_bus_cmd_valid;
+ assign io_bus_cmd_ready = busCtrl_rsp_ready;
+ assign busCtrl_rsp_payload_last = 1'b1;
+ assign when_BmbSlaveFactory_l33 = (busCtrl_doWrite && busCtrl_writeErrorFlag);
+ always @(*) begin
+ if(when_BmbSlaveFactory_l33) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ if(when_BmbSlaveFactory_l35) begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b1;
+ end else begin
+ busCtrl_rsp_payload_fragment_opcode = 1'b0;
+ end
+ end
+ end
+
+ assign when_BmbSlaveFactory_l35 = (busCtrl_doRead && busCtrl_readErrorFlag);
+ always @(*) begin
+ busCtrl_rsp_payload_fragment_data = 32'h0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h0 : begin
+ busCtrl_rsp_payload_fragment_data[16 : 16] = (bridge_read_streamBreaked_valid ^ 1'b0);
+ busCtrl_rsp_payload_fragment_data[7 : 0] = bridge_read_streamBreaked_payload;
+ end
+ 6'h04 : begin
+ busCtrl_rsp_payload_fragment_data[23 : 16] = _zz_busCtrl_rsp_payload_fragment_data;
+ busCtrl_rsp_payload_fragment_data[15 : 15] = bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_valid;
+ busCtrl_rsp_payload_fragment_data[31 : 24] = uartCtrl_io_read_queueWithOccupancy_io_occupancy;
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_interruptCtrl_writeIntEnable;
+ busCtrl_rsp_payload_fragment_data[1 : 1] = bridge_interruptCtrl_readIntEnable;
+ busCtrl_rsp_payload_fragment_data[8 : 8] = bridge_interruptCtrl_writeInt;
+ busCtrl_rsp_payload_fragment_data[9 : 9] = bridge_interruptCtrl_readInt;
+ end
+ 6'h10 : begin
+ busCtrl_rsp_payload_fragment_data[0 : 0] = bridge_misc_readError;
+ busCtrl_rsp_payload_fragment_data[1 : 1] = bridge_misc_readOverflowError;
+ busCtrl_rsp_payload_fragment_data[8 : 8] = uartCtrl_io_readBreak;
+ busCtrl_rsp_payload_fragment_data[9 : 9] = bridge_misc_breakDetected;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign busCtrl_rsp_payload_fragment_context = io_bus_cmd_payload_fragment_context;
+ assign bridge_busCtrlWrapped_readErrorFlag = 1'b0;
+ assign bridge_busCtrlWrapped_writeErrorFlag = 1'b0;
+ always @(*) begin
+ _zz_bridge_write_streamUnbuffered_valid = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h0 : begin
+ if(busCtrl_doWrite) begin
+ _zz_bridge_write_streamUnbuffered_valid = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign bridge_write_streamUnbuffered_valid = _zz_bridge_write_streamUnbuffered_valid;
+ assign bridge_write_streamUnbuffered_payload = io_bus_cmd_payload_fragment_data[7 : 0];
+ assign bridge_write_streamUnbuffered_ready = bridge_write_streamUnbuffered_queueWithOccupancy_io_push_ready;
+ always @(*) begin
+ bridge_read_streamBreaked_valid = uartCtrl_io_read_queueWithOccupancy_io_pop_valid;
+ if(uartCtrl_io_readBreak) begin
+ bridge_read_streamBreaked_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ uartCtrl_io_read_queueWithOccupancy_io_pop_ready = bridge_read_streamBreaked_ready;
+ if(uartCtrl_io_readBreak) begin
+ uartCtrl_io_read_queueWithOccupancy_io_pop_ready = 1'b1;
+ end
+ end
+
+ assign bridge_read_streamBreaked_payload = uartCtrl_io_read_queueWithOccupancy_io_pop_payload;
+ always @(*) begin
+ bridge_read_streamBreaked_ready = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h0 : begin
+ if(busCtrl_doRead) begin
+ bridge_read_streamBreaked_ready = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign bridge_interruptCtrl_readInt = (bridge_interruptCtrl_readIntEnable && bridge_read_streamBreaked_valid);
+ assign bridge_interruptCtrl_writeInt = (bridge_interruptCtrl_writeIntEnable && (! bridge_write_streamUnbuffered_queueWithOccupancy_io_pop_valid));
+ assign bridge_interruptCtrl_interrupt = (bridge_interruptCtrl_readInt || bridge_interruptCtrl_writeInt);
+ always @(*) begin
+ when_BusSlaveFactory_l341 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h10 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347 = io_bus_cmd_payload_fragment_data[0];
+ always @(*) begin
+ when_BusSlaveFactory_l341_1 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h10 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_1 = io_bus_cmd_payload_fragment_data[1];
+ assign uartCtrl_io_read_isStall = (uartCtrl_io_read_valid && (! uartCtrl_io_read_queueWithOccupancy_io_push_ready));
+ assign when_UartCtrl_l155 = (uartCtrl_io_readBreak && (! uartCtrl_io_readBreak_regNext));
+ always @(*) begin
+ when_BusSlaveFactory_l341_2 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h10 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_2 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_2 = io_bus_cmd_payload_fragment_data[9];
+ always @(*) begin
+ when_BusSlaveFactory_l377 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h10 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l377 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379 = io_bus_cmd_payload_fragment_data[10];
+ always @(*) begin
+ when_BusSlaveFactory_l341_3 = 1'b0;
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h10 : begin
+ if(busCtrl_doWrite) begin
+ when_BusSlaveFactory_l341_3 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_3 = io_bus_cmd_payload_fragment_data[11];
+ assign system_uart_0_io_interrupt_source = bridge_interruptCtrl_interrupt;
+ assign _zz_bridge_uartConfigReg_frame_parity = io_bus_cmd_payload_fragment_data[9 : 8];
+ assign _zz_bridge_uartConfigReg_frame_stop = io_bus_cmd_payload_fragment_data[16 : 16];
+ assign when_BmbSlaveFactory_l77 = ((io_bus_cmd_payload_fragment_address & (~ 6'h03)) == 6'h08);
+ always @(posedge clk) begin
+ if(reset) begin
+ _zz_io_bus_rsp_valid_1 <= 1'b0;
+ bridge_uartConfigReg_clockDivider <= 20'h0;
+ bridge_uartConfigReg_clockDivider <= 20'h000d8;
+ bridge_uartConfigReg_frame_dataLength <= 3'b111;
+ bridge_uartConfigReg_frame_parity <= Axi4PeripheralUartParityType_NONE;
+ bridge_uartConfigReg_frame_stop <= Axi4PeripheralUartStopType_ONE;
+ bridge_interruptCtrl_writeIntEnable <= 1'b0;
+ bridge_interruptCtrl_readIntEnable <= 1'b0;
+ bridge_misc_readError <= 1'b0;
+ bridge_misc_readOverflowError <= 1'b0;
+ bridge_misc_breakDetected <= 1'b0;
+ bridge_misc_doBreak <= 1'b0;
+ end else begin
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_bus_rsp_valid_1 <= (busCtrl_rsp_valid && _zz_busCtrl_rsp_ready);
+ end
+ if(when_BusSlaveFactory_l341) begin
+ if(when_BusSlaveFactory_l347) begin
+ bridge_misc_readError <= _zz_bridge_misc_readError[0];
+ end
+ end
+ if(uartCtrl_io_readError) begin
+ bridge_misc_readError <= 1'b1;
+ end
+ if(when_BusSlaveFactory_l341_1) begin
+ if(when_BusSlaveFactory_l347_1) begin
+ bridge_misc_readOverflowError <= _zz_bridge_misc_readOverflowError[0];
+ end
+ end
+ if(uartCtrl_io_read_isStall) begin
+ bridge_misc_readOverflowError <= 1'b1;
+ end
+ if(when_UartCtrl_l155) begin
+ bridge_misc_breakDetected <= 1'b1;
+ end
+ if(when_BusSlaveFactory_l341_2) begin
+ if(when_BusSlaveFactory_l347_2) begin
+ bridge_misc_breakDetected <= _zz_bridge_misc_breakDetected[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377) begin
+ if(when_BusSlaveFactory_l379) begin
+ bridge_misc_doBreak <= _zz_bridge_misc_doBreak[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_3) begin
+ if(when_BusSlaveFactory_l347_3) begin
+ bridge_misc_doBreak <= _zz_bridge_misc_doBreak_1[0];
+ end
+ end
+ case(io_bus_cmd_payload_fragment_address)
+ 6'h0c : begin
+ if(busCtrl_doWrite) begin
+ bridge_uartConfigReg_frame_dataLength <= io_bus_cmd_payload_fragment_data[2 : 0];
+ bridge_uartConfigReg_frame_parity <= _zz_bridge_uartConfigReg_frame_parity;
+ bridge_uartConfigReg_frame_stop <= _zz_bridge_uartConfigReg_frame_stop;
+ end
+ end
+ 6'h04 : begin
+ if(busCtrl_doWrite) begin
+ bridge_interruptCtrl_writeIntEnable <= io_bus_cmd_payload_fragment_data[0];
+ bridge_interruptCtrl_readIntEnable <= io_bus_cmd_payload_fragment_data[1];
+ end
+ end
+ default : begin
+ end
+ endcase
+ if(when_BmbSlaveFactory_l77) begin
+ if(busCtrl_doWrite) begin
+ bridge_uartConfigReg_clockDivider[19 : 0] <= io_bus_cmd_payload_fragment_data[19 : 0];
+ end
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_busCtrl_rsp_ready_1) begin
+ _zz_io_bus_rsp_payload_last <= busCtrl_rsp_payload_last;
+ _zz_io_bus_rsp_payload_fragment_opcode <= busCtrl_rsp_payload_fragment_opcode;
+ _zz_io_bus_rsp_payload_fragment_data <= busCtrl_rsp_payload_fragment_data;
+ _zz_io_bus_rsp_payload_fragment_context <= busCtrl_rsp_payload_fragment_context;
+ end
+ uartCtrl_io_readBreak_regNext <= uartCtrl_io_readBreak;
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbDecoder_1 (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [23:0] io_input_cmd_payload_fragment_address,
+ input wire [1:0] io_input_cmd_payload_fragment_length,
+ input wire [31:0] io_input_cmd_payload_fragment_data,
+ input wire [3:0] io_input_cmd_payload_fragment_mask,
+ input wire [2:0] io_input_cmd_payload_fragment_context,
+ output reg io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output reg io_input_rsp_payload_last,
+ output reg [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [31:0] io_input_rsp_payload_fragment_data,
+ output reg [2:0] io_input_rsp_payload_fragment_context,
+ output reg io_outputs_0_cmd_valid,
+ input wire io_outputs_0_cmd_ready,
+ output wire io_outputs_0_cmd_payload_last,
+ output wire [0:0] io_outputs_0_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_0_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_0_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_0_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_0_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_0_cmd_payload_fragment_context,
+ input wire io_outputs_0_rsp_valid,
+ output wire io_outputs_0_rsp_ready,
+ input wire io_outputs_0_rsp_payload_last,
+ input wire [0:0] io_outputs_0_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_0_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_0_rsp_payload_fragment_context,
+ output reg io_outputs_1_cmd_valid,
+ input wire io_outputs_1_cmd_ready,
+ output wire io_outputs_1_cmd_payload_last,
+ output wire [0:0] io_outputs_1_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_1_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_1_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_1_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_1_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_1_cmd_payload_fragment_context,
+ input wire io_outputs_1_rsp_valid,
+ output wire io_outputs_1_rsp_ready,
+ input wire io_outputs_1_rsp_payload_last,
+ input wire [0:0] io_outputs_1_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_1_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_1_rsp_payload_fragment_context,
+ output reg io_outputs_2_cmd_valid,
+ input wire io_outputs_2_cmd_ready,
+ output wire io_outputs_2_cmd_payload_last,
+ output wire [0:0] io_outputs_2_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_2_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_2_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_2_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_2_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_2_cmd_payload_fragment_context,
+ input wire io_outputs_2_rsp_valid,
+ output wire io_outputs_2_rsp_ready,
+ input wire io_outputs_2_rsp_payload_last,
+ input wire [0:0] io_outputs_2_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_2_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_2_rsp_payload_fragment_context,
+ output reg io_outputs_3_cmd_valid,
+ input wire io_outputs_3_cmd_ready,
+ output wire io_outputs_3_cmd_payload_last,
+ output wire [0:0] io_outputs_3_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_3_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_3_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_3_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_3_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_3_cmd_payload_fragment_context,
+ input wire io_outputs_3_rsp_valid,
+ output wire io_outputs_3_rsp_ready,
+ input wire io_outputs_3_rsp_payload_last,
+ input wire [0:0] io_outputs_3_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_3_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_3_rsp_payload_fragment_context,
+ output reg io_outputs_4_cmd_valid,
+ input wire io_outputs_4_cmd_ready,
+ output wire io_outputs_4_cmd_payload_last,
+ output wire [0:0] io_outputs_4_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_4_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_4_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_4_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_4_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_4_cmd_payload_fragment_context,
+ input wire io_outputs_4_rsp_valid,
+ output wire io_outputs_4_rsp_ready,
+ input wire io_outputs_4_rsp_payload_last,
+ input wire [0:0] io_outputs_4_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_4_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_4_rsp_payload_fragment_context,
+ output reg io_outputs_5_cmd_valid,
+ input wire io_outputs_5_cmd_ready,
+ output wire io_outputs_5_cmd_payload_last,
+ output wire [0:0] io_outputs_5_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_5_cmd_payload_fragment_address,
+ output wire [1:0] io_outputs_5_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_5_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_5_cmd_payload_fragment_mask,
+ output wire [2:0] io_outputs_5_cmd_payload_fragment_context,
+ input wire io_outputs_5_rsp_valid,
+ output wire io_outputs_5_rsp_ready,
+ input wire io_outputs_5_rsp_payload_last,
+ input wire [0:0] io_outputs_5_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_5_rsp_payload_fragment_data,
+ input wire [2:0] io_outputs_5_rsp_payload_fragment_context,
+ input wire clk,
+ input wire reset
+);
+
+ wire [6:0] _zz_logic_rspPendingCounter;
+ wire [6:0] _zz_logic_rspPendingCounter_1;
+ wire [0:0] _zz_logic_rspPendingCounter_2;
+ wire [6:0] _zz_logic_rspPendingCounter_3;
+ wire [0:0] _zz_logic_rspPendingCounter_4;
+ reg _zz_io_input_rsp_payload_last_4;
+ reg [0:0] _zz_io_input_rsp_payload_fragment_opcode;
+ reg [31:0] _zz_io_input_rsp_payload_fragment_data;
+ reg [2:0] _zz_io_input_rsp_payload_fragment_context;
+ wire logic_input_valid;
+ reg logic_input_ready;
+ wire logic_input_payload_last;
+ wire [0:0] logic_input_payload_fragment_opcode;
+ wire [23:0] logic_input_payload_fragment_address;
+ wire [1:0] logic_input_payload_fragment_length;
+ wire [31:0] logic_input_payload_fragment_data;
+ wire [3:0] logic_input_payload_fragment_mask;
+ wire [2:0] logic_input_payload_fragment_context;
+ wire logic_hitsS0_0;
+ wire logic_hitsS0_1;
+ wire logic_hitsS0_2;
+ wire logic_hitsS0_3;
+ wire logic_hitsS0_4;
+ wire logic_hitsS0_5;
+ wire logic_noHitS0;
+ wire _zz_io_outputs_0_cmd_payload_last;
+ wire _zz_io_outputs_1_cmd_payload_last;
+ wire _zz_io_outputs_2_cmd_payload_last;
+ wire _zz_io_outputs_3_cmd_payload_last;
+ wire _zz_io_outputs_4_cmd_payload_last;
+ wire _zz_io_outputs_5_cmd_payload_last;
+ reg [6:0] logic_rspPendingCounter;
+ wire logic_input_fire;
+ wire io_input_rsp_fire;
+ wire logic_cmdWait;
+ wire when_BmbDecoder_l56;
+ reg logic_rspHits_0;
+ reg logic_rspHits_1;
+ reg logic_rspHits_2;
+ reg logic_rspHits_3;
+ reg logic_rspHits_4;
+ reg logic_rspHits_5;
+ wire logic_rspPending;
+ wire logic_rspNoHitValid;
+ reg logic_rspNoHit_doIt;
+ wire when_BmbDecoder_l60;
+ wire when_BmbDecoder_l60_1;
+ reg logic_rspNoHit_singleBeatRsp;
+ reg [2:0] logic_rspNoHit_context;
+ wire _zz_io_input_rsp_payload_last;
+ wire _zz_io_input_rsp_payload_last_1;
+ wire _zz_io_input_rsp_payload_last_2;
+ wire [2:0] _zz_io_input_rsp_payload_last_3;
+
+ assign _zz_logic_rspPendingCounter = (logic_rspPendingCounter + _zz_logic_rspPendingCounter_1);
+ assign _zz_logic_rspPendingCounter_2 = (logic_input_fire && logic_input_payload_last);
+ assign _zz_logic_rspPendingCounter_1 = {6'd0, _zz_logic_rspPendingCounter_2};
+ assign _zz_logic_rspPendingCounter_4 = (io_input_rsp_fire && io_input_rsp_payload_last);
+ assign _zz_logic_rspPendingCounter_3 = {6'd0, _zz_logic_rspPendingCounter_4};
+ always @(*) begin
+ case(_zz_io_input_rsp_payload_last_3)
+ 3'b000 : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_0_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_0_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_0_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_0_rsp_payload_fragment_context;
+ end
+ 3'b001 : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_1_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_1_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_1_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_1_rsp_payload_fragment_context;
+ end
+ 3'b010 : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_2_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_2_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_2_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_2_rsp_payload_fragment_context;
+ end
+ 3'b011 : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_3_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_3_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_3_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_3_rsp_payload_fragment_context;
+ end
+ 3'b100 : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_4_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_4_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_4_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_4_rsp_payload_fragment_context;
+ end
+ default : begin
+ _zz_io_input_rsp_payload_last_4 = io_outputs_5_rsp_payload_last;
+ _zz_io_input_rsp_payload_fragment_opcode = io_outputs_5_rsp_payload_fragment_opcode;
+ _zz_io_input_rsp_payload_fragment_data = io_outputs_5_rsp_payload_fragment_data;
+ _zz_io_input_rsp_payload_fragment_context = io_outputs_5_rsp_payload_fragment_context;
+ end
+ endcase
+ end
+
+ assign logic_input_valid = io_input_cmd_valid;
+ assign io_input_cmd_ready = logic_input_ready;
+ assign logic_input_payload_last = io_input_cmd_payload_last;
+ assign logic_input_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign logic_input_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign logic_input_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign logic_input_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign logic_input_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign logic_input_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign logic_noHitS0 = (! (|{logic_hitsS0_5,{logic_hitsS0_4,{logic_hitsS0_3,{logic_hitsS0_2,{logic_hitsS0_1,logic_hitsS0_0}}}}}));
+ assign logic_hitsS0_0 = ((io_input_cmd_payload_fragment_address & (~ 24'h00003f)) == 24'h010000);
+ always @(*) begin
+ io_outputs_0_cmd_valid = (logic_input_valid && logic_hitsS0_0);
+ if(logic_cmdWait) begin
+ io_outputs_0_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_0_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_0_cmd_payload_last = _zz_io_outputs_0_cmd_payload_last;
+ assign io_outputs_0_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_0_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_0_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_0_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_0_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_0_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ assign logic_hitsS0_1 = ((io_input_cmd_payload_fragment_address & (~ 24'h000fff)) == 24'h030000);
+ always @(*) begin
+ io_outputs_1_cmd_valid = (logic_input_valid && logic_hitsS0_1);
+ if(logic_cmdWait) begin
+ io_outputs_1_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_1_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_1_cmd_payload_last = _zz_io_outputs_1_cmd_payload_last;
+ assign io_outputs_1_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_1_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_1_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_1_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_1_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_1_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ assign logic_hitsS0_2 = ((io_input_cmd_payload_fragment_address & (~ 24'h0000ff)) == 24'h020000);
+ always @(*) begin
+ io_outputs_2_cmd_valid = (logic_input_valid && logic_hitsS0_2);
+ if(logic_cmdWait) begin
+ io_outputs_2_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_2_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_2_cmd_payload_last = _zz_io_outputs_2_cmd_payload_last;
+ assign io_outputs_2_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_2_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_2_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_2_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_2_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_2_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ assign logic_hitsS0_3 = ((io_input_cmd_payload_fragment_address & (~ 24'h0000ff)) == 24'h040000);
+ always @(*) begin
+ io_outputs_3_cmd_valid = (logic_input_valid && logic_hitsS0_3);
+ if(logic_cmdWait) begin
+ io_outputs_3_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_3_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_3_cmd_payload_last = _zz_io_outputs_3_cmd_payload_last;
+ assign io_outputs_3_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_3_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_3_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_3_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_3_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_3_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ assign logic_hitsS0_4 = ((io_input_cmd_payload_fragment_address & (~ 24'h0000ff)) == 24'h050000);
+ always @(*) begin
+ io_outputs_4_cmd_valid = (logic_input_valid && logic_hitsS0_4);
+ if(logic_cmdWait) begin
+ io_outputs_4_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_4_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_4_cmd_payload_last = _zz_io_outputs_4_cmd_payload_last;
+ assign io_outputs_4_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_4_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_4_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_4_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_4_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_4_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ assign logic_hitsS0_5 = ((io_input_cmd_payload_fragment_address & (~ 24'h00ffff)) == 24'h100000);
+ always @(*) begin
+ io_outputs_5_cmd_valid = (logic_input_valid && logic_hitsS0_5);
+ if(logic_cmdWait) begin
+ io_outputs_5_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_5_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_5_cmd_payload_last = _zz_io_outputs_5_cmd_payload_last;
+ assign io_outputs_5_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_5_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_5_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_5_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_5_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ assign io_outputs_5_cmd_payload_fragment_context = logic_input_payload_fragment_context;
+ always @(*) begin
+ logic_input_ready = ((|{(logic_hitsS0_5 && io_outputs_5_cmd_ready),{(logic_hitsS0_4 && io_outputs_4_cmd_ready),{(logic_hitsS0_3 && io_outputs_3_cmd_ready),{(logic_hitsS0_2 && io_outputs_2_cmd_ready),{(logic_hitsS0_1 && io_outputs_1_cmd_ready),(logic_hitsS0_0 && io_outputs_0_cmd_ready)}}}}}) || logic_noHitS0);
+ if(logic_cmdWait) begin
+ logic_input_ready = 1'b0;
+ end
+ end
+
+ assign logic_input_fire = (logic_input_valid && logic_input_ready);
+ assign io_input_rsp_fire = (io_input_rsp_valid && io_input_rsp_ready);
+ assign when_BmbDecoder_l56 = (logic_input_valid && (! logic_cmdWait));
+ assign logic_rspPending = (logic_rspPendingCounter != 7'h0);
+ assign logic_rspNoHitValid = (! (|{logic_rspHits_5,{logic_rspHits_4,{logic_rspHits_3,{logic_rspHits_2,{logic_rspHits_1,logic_rspHits_0}}}}}));
+ assign when_BmbDecoder_l60 = (io_input_rsp_fire && io_input_rsp_payload_last);
+ assign when_BmbDecoder_l60_1 = ((logic_input_fire && logic_noHitS0) && logic_input_payload_last);
+ always @(*) begin
+ io_input_rsp_valid = ((|{io_outputs_5_rsp_valid,{io_outputs_4_rsp_valid,{io_outputs_3_rsp_valid,{io_outputs_2_rsp_valid,{io_outputs_1_rsp_valid,io_outputs_0_rsp_valid}}}}}) || (logic_rspPending && logic_rspNoHitValid));
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_valid = 1'b1;
+ end
+ end
+
+ assign _zz_io_input_rsp_payload_last = ((logic_rspHits_1 || logic_rspHits_3) || logic_rspHits_5);
+ assign _zz_io_input_rsp_payload_last_1 = (logic_rspHits_2 || logic_rspHits_3);
+ assign _zz_io_input_rsp_payload_last_2 = (logic_rspHits_4 || logic_rspHits_5);
+ assign _zz_io_input_rsp_payload_last_3 = {_zz_io_input_rsp_payload_last_2,{_zz_io_input_rsp_payload_last_1,_zz_io_input_rsp_payload_last}};
+ always @(*) begin
+ io_input_rsp_payload_last = _zz_io_input_rsp_payload_last_4;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_last = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ io_input_rsp_payload_fragment_opcode = _zz_io_input_rsp_payload_fragment_opcode;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_fragment_opcode = 1'b1;
+ end
+ end
+
+ assign io_input_rsp_payload_fragment_data = _zz_io_input_rsp_payload_fragment_data;
+ always @(*) begin
+ io_input_rsp_payload_fragment_context = _zz_io_input_rsp_payload_fragment_context;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_fragment_context = logic_rspNoHit_context;
+ end
+ end
+
+ assign io_outputs_0_rsp_ready = io_input_rsp_ready;
+ assign io_outputs_1_rsp_ready = io_input_rsp_ready;
+ assign io_outputs_2_rsp_ready = io_input_rsp_ready;
+ assign io_outputs_3_rsp_ready = io_input_rsp_ready;
+ assign io_outputs_4_rsp_ready = io_input_rsp_ready;
+ assign io_outputs_5_rsp_ready = io_input_rsp_ready;
+ assign logic_cmdWait = ((logic_rspPending && (((((((logic_hitsS0_0 != logic_rspHits_0) || (logic_hitsS0_1 != logic_rspHits_1)) || (logic_hitsS0_2 != logic_rspHits_2)) || (logic_hitsS0_3 != logic_rspHits_3)) || (logic_hitsS0_4 != logic_rspHits_4)) || (logic_hitsS0_5 != logic_rspHits_5)) || logic_rspNoHitValid)) || (logic_rspPendingCounter == 7'h40));
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_rspPendingCounter <= 7'h0;
+ logic_rspNoHit_doIt <= 1'b0;
+ end else begin
+ logic_rspPendingCounter <= (_zz_logic_rspPendingCounter - _zz_logic_rspPendingCounter_3);
+ if(when_BmbDecoder_l60) begin
+ logic_rspNoHit_doIt <= 1'b0;
+ end
+ if(when_BmbDecoder_l60_1) begin
+ logic_rspNoHit_doIt <= 1'b1;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(when_BmbDecoder_l56) begin
+ logic_rspHits_0 <= logic_hitsS0_0;
+ logic_rspHits_1 <= logic_hitsS0_1;
+ logic_rspHits_2 <= logic_hitsS0_2;
+ logic_rspHits_3 <= logic_hitsS0_3;
+ logic_rspHits_4 <= logic_hitsS0_4;
+ logic_rspHits_5 <= logic_hitsS0_5;
+ end
+ if(logic_input_fire) begin
+ logic_rspNoHit_singleBeatRsp <= (logic_input_payload_fragment_opcode == 1'b1);
+ end
+ if(logic_input_fire) begin
+ logic_rspNoHit_context <= logic_input_payload_fragment_context;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbUnburstify (
+ input wire io_input_cmd_valid,
+ output reg io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_source,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [23:0] io_input_cmd_payload_fragment_address,
+ input wire [9:0] io_input_cmd_payload_fragment_length,
+ input wire [31:0] io_input_cmd_payload_fragment_data,
+ input wire [3:0] io_input_cmd_payload_fragment_mask,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_source,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [31:0] io_input_rsp_payload_fragment_data,
+ output reg io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output reg [0:0] io_output_cmd_payload_fragment_opcode,
+ output reg [23:0] io_output_cmd_payload_fragment_address,
+ output reg [1:0] io_output_cmd_payload_fragment_length,
+ output wire [31:0] io_output_cmd_payload_fragment_data,
+ output wire [3:0] io_output_cmd_payload_fragment_mask,
+ output wire [2:0] io_output_cmd_payload_fragment_context,
+ input wire io_output_rsp_valid,
+ output reg io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [31:0] io_output_rsp_payload_fragment_data,
+ input wire [2:0] io_output_rsp_payload_fragment_context,
+ input wire clk,
+ input wire reset
+);
+
+ wire [7:0] _zz_buffer_last;
+ wire [0:0] _zz_buffer_last_1;
+ wire [11:0] _zz_buffer_addressIncr;
+ wire doResult;
+ reg buffer_valid;
+ reg [0:0] buffer_opcode;
+ reg [0:0] buffer_source;
+ reg [23:0] buffer_address;
+ reg [7:0] buffer_beat;
+ wire buffer_last;
+ wire [23:0] buffer_addressIncr;
+ wire buffer_isWrite;
+ wire io_output_cmd_fire;
+ wire [7:0] cmdTransferBeatCount;
+ wire requireBuffer;
+ reg cmdContext_drop;
+ reg cmdContext_last;
+ reg [0:0] cmdContext_source;
+ wire rspContext_drop;
+ wire rspContext_last;
+ wire [0:0] rspContext_source;
+ wire [2:0] _zz_rspContext_drop;
+ wire when_Stream_l445;
+ reg io_output_rsp_thrown_valid;
+ wire io_output_rsp_thrown_ready;
+ wire io_output_rsp_thrown_payload_last;
+ wire [0:0] io_output_rsp_thrown_payload_fragment_opcode;
+ wire [31:0] io_output_rsp_thrown_payload_fragment_data;
+ wire [2:0] io_output_rsp_thrown_payload_fragment_context;
+
+ assign _zz_buffer_last_1 = 1'b1;
+ assign _zz_buffer_last = {7'd0, _zz_buffer_last_1};
+ assign _zz_buffer_addressIncr = (buffer_address[11 : 0] + 12'h004);
+ assign buffer_last = (buffer_beat == _zz_buffer_last);
+ assign buffer_addressIncr = {buffer_address[23 : 12],(_zz_buffer_addressIncr & (~ 12'h003))};
+ assign buffer_isWrite = (buffer_opcode == 1'b1);
+ assign io_output_cmd_fire = (io_output_cmd_valid && io_output_cmd_ready);
+ assign cmdTransferBeatCount = io_input_cmd_payload_fragment_length[9 : 2];
+ assign requireBuffer = (cmdTransferBeatCount != 8'h0);
+ assign io_output_cmd_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign io_output_cmd_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign io_output_cmd_payload_last = 1'b1;
+ assign io_output_cmd_payload_fragment_context = {cmdContext_source,{cmdContext_last,cmdContext_drop}};
+ always @(*) begin
+ if(buffer_valid) begin
+ io_output_cmd_payload_fragment_address = buffer_addressIncr;
+ end else begin
+ io_output_cmd_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ if(requireBuffer) begin
+ io_output_cmd_payload_fragment_address[1 : 0] = 2'b00;
+ end
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ io_output_cmd_payload_fragment_opcode = buffer_opcode;
+ end else begin
+ io_output_cmd_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ io_output_cmd_payload_fragment_length = 2'b11;
+ end else begin
+ if(requireBuffer) begin
+ io_output_cmd_payload_fragment_length = 2'b11;
+ end else begin
+ io_output_cmd_payload_fragment_length = io_input_cmd_payload_fragment_length[1:0];
+ end
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ cmdContext_source = buffer_source;
+ end else begin
+ cmdContext_source = io_input_cmd_payload_fragment_source;
+ end
+ end
+
+ always @(*) begin
+ io_input_cmd_ready = 1'b0;
+ if(buffer_valid) begin
+ io_input_cmd_ready = (buffer_isWrite && io_output_cmd_ready);
+ end else begin
+ io_input_cmd_ready = io_output_cmd_ready;
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ io_output_cmd_valid = (! (buffer_isWrite && (! io_input_cmd_valid)));
+ end else begin
+ io_output_cmd_valid = io_input_cmd_valid;
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ cmdContext_last = buffer_last;
+ end else begin
+ cmdContext_last = (! requireBuffer);
+ end
+ end
+
+ always @(*) begin
+ if(buffer_valid) begin
+ cmdContext_drop = buffer_isWrite;
+ end else begin
+ cmdContext_drop = (io_input_cmd_payload_fragment_opcode == 1'b1);
+ end
+ end
+
+ assign _zz_rspContext_drop = io_output_rsp_payload_fragment_context;
+ assign rspContext_drop = _zz_rspContext_drop[0];
+ assign rspContext_last = _zz_rspContext_drop[1];
+ assign rspContext_source = _zz_rspContext_drop[2 : 2];
+ assign when_Stream_l445 = (! (rspContext_last || (! rspContext_drop)));
+ always @(*) begin
+ io_output_rsp_thrown_valid = io_output_rsp_valid;
+ if(when_Stream_l445) begin
+ io_output_rsp_thrown_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ io_output_rsp_ready = io_output_rsp_thrown_ready;
+ if(when_Stream_l445) begin
+ io_output_rsp_ready = 1'b1;
+ end
+ end
+
+ assign io_output_rsp_thrown_payload_last = io_output_rsp_payload_last;
+ assign io_output_rsp_thrown_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_output_rsp_thrown_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ assign io_output_rsp_thrown_payload_fragment_context = io_output_rsp_payload_fragment_context;
+ assign io_input_rsp_valid = io_output_rsp_thrown_valid;
+ assign io_output_rsp_thrown_ready = io_input_rsp_ready;
+ assign io_input_rsp_payload_last = rspContext_last;
+ assign io_input_rsp_payload_fragment_source = rspContext_source;
+ assign io_input_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ always @(posedge clk) begin
+ if(reset) begin
+ buffer_valid <= 1'b0;
+ end else begin
+ if(io_output_cmd_fire) begin
+ if(buffer_last) begin
+ buffer_valid <= 1'b0;
+ end
+ end
+ if(!buffer_valid) begin
+ buffer_valid <= (requireBuffer && io_output_cmd_fire);
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_output_cmd_fire) begin
+ buffer_beat <= (buffer_beat - 8'h01);
+ buffer_address[11 : 0] <= buffer_addressIncr[11 : 0];
+ end
+ if(!buffer_valid) begin
+ buffer_opcode <= io_input_cmd_payload_fragment_opcode;
+ buffer_source <= io_input_cmd_payload_fragment_source;
+ buffer_address <= io_input_cmd_payload_fragment_address;
+ buffer_beat <= cmdTransferBeatCount;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralBmbDecoder (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_source,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [23:0] io_input_cmd_payload_fragment_address,
+ input wire [9:0] io_input_cmd_payload_fragment_length,
+ input wire [31:0] io_input_cmd_payload_fragment_data,
+ input wire [3:0] io_input_cmd_payload_fragment_mask,
+ output reg io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output reg io_input_rsp_payload_last,
+ output reg [0:0] io_input_rsp_payload_fragment_source,
+ output reg [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [31:0] io_input_rsp_payload_fragment_data,
+ output reg io_outputs_0_cmd_valid,
+ input wire io_outputs_0_cmd_ready,
+ output wire io_outputs_0_cmd_payload_last,
+ output wire [0:0] io_outputs_0_cmd_payload_fragment_source,
+ output wire [0:0] io_outputs_0_cmd_payload_fragment_opcode,
+ output wire [23:0] io_outputs_0_cmd_payload_fragment_address,
+ output wire [9:0] io_outputs_0_cmd_payload_fragment_length,
+ output wire [31:0] io_outputs_0_cmd_payload_fragment_data,
+ output wire [3:0] io_outputs_0_cmd_payload_fragment_mask,
+ input wire io_outputs_0_rsp_valid,
+ output wire io_outputs_0_rsp_ready,
+ input wire io_outputs_0_rsp_payload_last,
+ input wire [0:0] io_outputs_0_rsp_payload_fragment_source,
+ input wire [0:0] io_outputs_0_rsp_payload_fragment_opcode,
+ input wire [31:0] io_outputs_0_rsp_payload_fragment_data,
+ input wire clk,
+ input wire reset
+);
+
+ wire [6:0] _zz_logic_rspPendingCounter;
+ wire [6:0] _zz_logic_rspPendingCounter_1;
+ wire [0:0] _zz_logic_rspPendingCounter_2;
+ wire [6:0] _zz_logic_rspPendingCounter_3;
+ wire [0:0] _zz_logic_rspPendingCounter_4;
+ wire logic_input_valid;
+ reg logic_input_ready;
+ wire logic_input_payload_last;
+ wire [0:0] logic_input_payload_fragment_source;
+ wire [0:0] logic_input_payload_fragment_opcode;
+ wire [23:0] logic_input_payload_fragment_address;
+ wire [9:0] logic_input_payload_fragment_length;
+ wire [31:0] logic_input_payload_fragment_data;
+ wire [3:0] logic_input_payload_fragment_mask;
+ wire logic_hitsS0_0;
+ wire logic_noHitS0;
+ wire _zz_io_outputs_0_cmd_payload_last;
+ reg [6:0] logic_rspPendingCounter;
+ wire logic_input_fire;
+ wire io_input_rsp_fire;
+ wire logic_cmdWait;
+ wire when_BmbDecoder_l56;
+ reg logic_rspHits_0;
+ wire logic_rspPending;
+ wire logic_rspNoHitValid;
+ reg logic_rspNoHit_doIt;
+ wire when_BmbDecoder_l60;
+ wire when_BmbDecoder_l60_1;
+ reg logic_rspNoHit_singleBeatRsp;
+ reg [0:0] logic_rspNoHit_source;
+ reg [7:0] logic_rspNoHit_counter;
+ wire when_BmbDecoder_l81;
+
+ assign _zz_logic_rspPendingCounter = (logic_rspPendingCounter + _zz_logic_rspPendingCounter_1);
+ assign _zz_logic_rspPendingCounter_2 = (logic_input_fire && logic_input_payload_last);
+ assign _zz_logic_rspPendingCounter_1 = {6'd0, _zz_logic_rspPendingCounter_2};
+ assign _zz_logic_rspPendingCounter_4 = (io_input_rsp_fire && io_input_rsp_payload_last);
+ assign _zz_logic_rspPendingCounter_3 = {6'd0, _zz_logic_rspPendingCounter_4};
+ assign logic_input_valid = io_input_cmd_valid;
+ assign io_input_cmd_ready = logic_input_ready;
+ assign logic_input_payload_last = io_input_cmd_payload_last;
+ assign logic_input_payload_fragment_source = io_input_cmd_payload_fragment_source;
+ assign logic_input_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign logic_input_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign logic_input_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign logic_input_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign logic_input_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign logic_noHitS0 = (! (|logic_hitsS0_0));
+ assign logic_hitsS0_0 = ((io_input_cmd_payload_fragment_address & (~ 24'hffffff)) == 24'h0);
+ always @(*) begin
+ io_outputs_0_cmd_valid = (logic_input_valid && logic_hitsS0_0);
+ if(logic_cmdWait) begin
+ io_outputs_0_cmd_valid = 1'b0;
+ end
+ end
+
+ assign _zz_io_outputs_0_cmd_payload_last = logic_input_payload_last;
+ assign io_outputs_0_cmd_payload_last = _zz_io_outputs_0_cmd_payload_last;
+ assign io_outputs_0_cmd_payload_fragment_source = logic_input_payload_fragment_source;
+ assign io_outputs_0_cmd_payload_fragment_opcode = logic_input_payload_fragment_opcode;
+ assign io_outputs_0_cmd_payload_fragment_address = logic_input_payload_fragment_address;
+ assign io_outputs_0_cmd_payload_fragment_length = logic_input_payload_fragment_length;
+ assign io_outputs_0_cmd_payload_fragment_data = logic_input_payload_fragment_data;
+ assign io_outputs_0_cmd_payload_fragment_mask = logic_input_payload_fragment_mask;
+ always @(*) begin
+ logic_input_ready = ((|(logic_hitsS0_0 && io_outputs_0_cmd_ready)) || logic_noHitS0);
+ if(logic_cmdWait) begin
+ logic_input_ready = 1'b0;
+ end
+ end
+
+ assign logic_input_fire = (logic_input_valid && logic_input_ready);
+ assign io_input_rsp_fire = (io_input_rsp_valid && io_input_rsp_ready);
+ assign when_BmbDecoder_l56 = (logic_input_valid && (! logic_cmdWait));
+ assign logic_rspPending = (logic_rspPendingCounter != 7'h0);
+ assign logic_rspNoHitValid = (! (|logic_rspHits_0));
+ assign when_BmbDecoder_l60 = (io_input_rsp_fire && io_input_rsp_payload_last);
+ assign when_BmbDecoder_l60_1 = ((logic_input_fire && logic_noHitS0) && logic_input_payload_last);
+ always @(*) begin
+ io_input_rsp_valid = ((|io_outputs_0_rsp_valid) || (logic_rspPending && logic_rspNoHitValid));
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_valid = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ io_input_rsp_payload_last = io_outputs_0_rsp_payload_last;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_last = 1'b0;
+ if(when_BmbDecoder_l81) begin
+ io_input_rsp_payload_last = 1'b1;
+ end
+ if(logic_rspNoHit_singleBeatRsp) begin
+ io_input_rsp_payload_last = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ io_input_rsp_payload_fragment_source = io_outputs_0_rsp_payload_fragment_source;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_fragment_source = logic_rspNoHit_source;
+ end
+ end
+
+ always @(*) begin
+ io_input_rsp_payload_fragment_opcode = io_outputs_0_rsp_payload_fragment_opcode;
+ if(logic_rspNoHit_doIt) begin
+ io_input_rsp_payload_fragment_opcode = 1'b1;
+ end
+ end
+
+ assign io_input_rsp_payload_fragment_data = io_outputs_0_rsp_payload_fragment_data;
+ assign when_BmbDecoder_l81 = (logic_rspNoHit_counter == 8'h0);
+ assign io_outputs_0_rsp_ready = io_input_rsp_ready;
+ assign logic_cmdWait = ((logic_rspPending && ((logic_hitsS0_0 != logic_rspHits_0) || logic_rspNoHitValid)) || (logic_rspPendingCounter == 7'h40));
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_rspPendingCounter <= 7'h0;
+ logic_rspNoHit_doIt <= 1'b0;
+ end else begin
+ logic_rspPendingCounter <= (_zz_logic_rspPendingCounter - _zz_logic_rspPendingCounter_3);
+ if(when_BmbDecoder_l60) begin
+ logic_rspNoHit_doIt <= 1'b0;
+ end
+ if(when_BmbDecoder_l60_1) begin
+ logic_rspNoHit_doIt <= 1'b1;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(when_BmbDecoder_l56) begin
+ logic_rspHits_0 <= logic_hitsS0_0;
+ end
+ if(logic_input_fire) begin
+ logic_rspNoHit_singleBeatRsp <= (logic_input_payload_fragment_opcode == 1'b1);
+ end
+ if(logic_input_fire) begin
+ logic_rspNoHit_source <= logic_input_payload_fragment_source;
+ end
+ if(logic_input_fire) begin
+ logic_rspNoHit_counter <= logic_input_payload_fragment_length[9 : 2];
+ end
+ if(logic_rspNoHit_doIt) begin
+ if(io_input_rsp_fire) begin
+ logic_rspNoHit_counter <= (logic_rspNoHit_counter - 8'h01);
+ end
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralAxi4SharedToBmb (
+ input wire io_axi_arw_valid,
+ output wire io_axi_arw_ready,
+ input wire [23:0] io_axi_arw_payload_addr,
+ input wire [7:0] io_axi_arw_payload_len,
+ input wire [2:0] io_axi_arw_payload_size,
+ input wire [3:0] io_axi_arw_payload_cache,
+ input wire [2:0] io_axi_arw_payload_prot,
+ input wire io_axi_arw_payload_write,
+ input wire io_axi_w_valid,
+ output wire io_axi_w_ready,
+ input wire [31:0] io_axi_w_payload_data,
+ input wire [3:0] io_axi_w_payload_strb,
+ input wire io_axi_w_payload_last,
+ output wire io_axi_b_valid,
+ input wire io_axi_b_ready,
+ output reg [1:0] io_axi_b_payload_resp,
+ output wire io_axi_r_valid,
+ input wire io_axi_r_ready,
+ output wire [31:0] io_axi_r_payload_data,
+ output reg [1:0] io_axi_r_payload_resp,
+ output wire io_axi_r_payload_last,
+ output wire io_bmb_cmd_valid,
+ input wire io_bmb_cmd_ready,
+ output wire io_bmb_cmd_payload_last,
+ output wire [0:0] io_bmb_cmd_payload_fragment_source,
+ output wire [0:0] io_bmb_cmd_payload_fragment_opcode,
+ output wire [23:0] io_bmb_cmd_payload_fragment_address,
+ output wire [9:0] io_bmb_cmd_payload_fragment_length,
+ output wire [31:0] io_bmb_cmd_payload_fragment_data,
+ output wire [3:0] io_bmb_cmd_payload_fragment_mask,
+ input wire io_bmb_rsp_valid,
+ output wire io_bmb_rsp_ready,
+ input wire io_bmb_rsp_payload_last,
+ input wire [0:0] io_bmb_rsp_payload_fragment_source,
+ input wire [0:0] io_bmb_rsp_payload_fragment_opcode,
+ input wire [31:0] io_bmb_rsp_payload_fragment_data
+);
+
+ wire [9:0] _zz_io_bmb_cmd_payload_fragment_length;
+ wire hazard;
+ wire io_bmb_cmd_fire;
+ wire rspIsWrite;
+ wire when_Axi4SharedToBmb_l42;
+ wire when_Axi4SharedToBmb_l49;
+
+ assign _zz_io_bmb_cmd_payload_fragment_length = ({2'd0,io_axi_arw_payload_len} <<< 2'd2);
+ assign hazard = (io_axi_arw_payload_write && (! io_axi_w_valid));
+ assign io_bmb_cmd_valid = (io_axi_arw_valid && (! hazard));
+ assign io_bmb_cmd_payload_fragment_source = io_axi_arw_payload_write;
+ assign io_bmb_cmd_payload_fragment_opcode = io_axi_arw_payload_write;
+ assign io_bmb_cmd_payload_fragment_address = io_axi_arw_payload_addr;
+ assign io_bmb_cmd_payload_fragment_length = (_zz_io_bmb_cmd_payload_fragment_length | 10'h003);
+ assign io_bmb_cmd_payload_fragment_data = io_axi_w_payload_data;
+ assign io_bmb_cmd_payload_fragment_mask = io_axi_w_payload_strb;
+ assign io_bmb_cmd_payload_last = ((! io_axi_arw_payload_write) || io_axi_w_payload_last);
+ assign io_bmb_cmd_fire = (io_bmb_cmd_valid && io_bmb_cmd_ready);
+ assign io_axi_arw_ready = (io_bmb_cmd_fire && io_bmb_cmd_payload_last);
+ assign io_axi_w_ready = (io_bmb_cmd_fire && (io_bmb_cmd_payload_fragment_opcode == 1'b1));
+ assign rspIsWrite = io_bmb_rsp_payload_fragment_source[0];
+ assign io_axi_b_valid = (io_bmb_rsp_valid && rspIsWrite);
+ always @(*) begin
+ io_axi_b_payload_resp = 2'b00;
+ if(when_Axi4SharedToBmb_l42) begin
+ io_axi_b_payload_resp = 2'b11;
+ end
+ end
+
+ assign when_Axi4SharedToBmb_l42 = (io_bmb_rsp_payload_fragment_opcode == 1'b1);
+ assign io_axi_r_valid = (io_bmb_rsp_valid && (! rspIsWrite));
+ assign io_axi_r_payload_data = io_bmb_rsp_payload_fragment_data;
+ assign io_axi_r_payload_last = io_bmb_rsp_payload_last;
+ always @(*) begin
+ io_axi_r_payload_resp = 2'b00;
+ if(when_Axi4SharedToBmb_l49) begin
+ io_axi_r_payload_resp = 2'b11;
+ end
+ end
+
+ assign when_Axi4SharedToBmb_l49 = (io_bmb_rsp_payload_fragment_opcode == 1'b1);
+ assign io_bmb_rsp_ready = (rspIsWrite ? io_axi_b_ready : io_axi_r_ready);
+
+endmodule
+
+module Axi4PeripheralStreamArbiter (
+ input wire io_inputs_0_valid,
+ output wire io_inputs_0_ready,
+ input wire [23:0] io_inputs_0_payload_addr,
+ input wire [7:0] io_inputs_0_payload_len,
+ input wire [2:0] io_inputs_0_payload_size,
+ input wire [3:0] io_inputs_0_payload_cache,
+ input wire [2:0] io_inputs_0_payload_prot,
+ input wire io_inputs_1_valid,
+ output wire io_inputs_1_ready,
+ input wire [23:0] io_inputs_1_payload_addr,
+ input wire [7:0] io_inputs_1_payload_len,
+ input wire [2:0] io_inputs_1_payload_size,
+ input wire [3:0] io_inputs_1_payload_cache,
+ input wire [2:0] io_inputs_1_payload_prot,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire [23:0] io_output_payload_addr,
+ output wire [7:0] io_output_payload_len,
+ output wire [2:0] io_output_payload_size,
+ output wire [3:0] io_output_payload_cache,
+ output wire [2:0] io_output_payload_prot,
+ output wire [0:0] io_chosen,
+ output wire [1:0] io_chosenOH,
+ input wire clk,
+ input wire reset
+);
+
+ wire [3:0] _zz__zz_maskProposal_0_2;
+ wire [3:0] _zz__zz_maskProposal_0_2_1;
+ wire [1:0] _zz__zz_maskProposal_0_2_2;
+ reg locked;
+ wire maskProposal_0;
+ wire maskProposal_1;
+ reg maskLocked_0;
+ reg maskLocked_1;
+ wire maskRouted_0;
+ wire maskRouted_1;
+ wire [1:0] _zz_maskProposal_0;
+ wire [3:0] _zz_maskProposal_0_1;
+ wire [3:0] _zz_maskProposal_0_2;
+ wire [1:0] _zz_maskProposal_0_3;
+ wire io_output_fire;
+ wire _zz_io_chosen;
+
+ assign _zz__zz_maskProposal_0_2 = (_zz_maskProposal_0_1 - _zz__zz_maskProposal_0_2_1);
+ assign _zz__zz_maskProposal_0_2_2 = {maskLocked_0,maskLocked_1};
+ assign _zz__zz_maskProposal_0_2_1 = {2'd0, _zz__zz_maskProposal_0_2_2};
+ assign maskRouted_0 = (locked ? maskLocked_0 : maskProposal_0);
+ assign maskRouted_1 = (locked ? maskLocked_1 : maskProposal_1);
+ assign _zz_maskProposal_0 = {io_inputs_1_valid,io_inputs_0_valid};
+ assign _zz_maskProposal_0_1 = {_zz_maskProposal_0,_zz_maskProposal_0};
+ assign _zz_maskProposal_0_2 = (_zz_maskProposal_0_1 & (~ _zz__zz_maskProposal_0_2));
+ assign _zz_maskProposal_0_3 = (_zz_maskProposal_0_2[3 : 2] | _zz_maskProposal_0_2[1 : 0]);
+ assign maskProposal_0 = _zz_maskProposal_0_3[0];
+ assign maskProposal_1 = _zz_maskProposal_0_3[1];
+ assign io_output_fire = (io_output_valid && io_output_ready);
+ assign io_output_valid = ((io_inputs_0_valid && maskRouted_0) || (io_inputs_1_valid && maskRouted_1));
+ assign io_output_payload_addr = (maskRouted_0 ? io_inputs_0_payload_addr : io_inputs_1_payload_addr);
+ assign io_output_payload_len = (maskRouted_0 ? io_inputs_0_payload_len : io_inputs_1_payload_len);
+ assign io_output_payload_size = (maskRouted_0 ? io_inputs_0_payload_size : io_inputs_1_payload_size);
+ assign io_output_payload_cache = (maskRouted_0 ? io_inputs_0_payload_cache : io_inputs_1_payload_cache);
+ assign io_output_payload_prot = (maskRouted_0 ? io_inputs_0_payload_prot : io_inputs_1_payload_prot);
+ assign io_inputs_0_ready = (maskRouted_0 && io_output_ready);
+ assign io_inputs_1_ready = (maskRouted_1 && io_output_ready);
+ assign io_chosenOH = {maskRouted_1,maskRouted_0};
+ assign _zz_io_chosen = io_chosenOH[1];
+ assign io_chosen = _zz_io_chosen;
+ always @(posedge clk) begin
+ if(reset) begin
+ locked <= 1'b0;
+ maskLocked_0 <= 1'b0;
+ maskLocked_1 <= 1'b1;
+ end else begin
+ if(io_output_valid) begin
+ maskLocked_0 <= maskRouted_0;
+ maskLocked_1 <= maskRouted_1;
+ end
+ if(io_output_valid) begin
+ locked <= 1'b1;
+ end
+ if(io_output_fire) begin
+ locked <= 1'b0;
+ end
+ end
+ end
+
+
+endmodule
+
+//Axi4PeripheralTimer_1 replaced by Axi4PeripheralTimer
+
+module Axi4PeripheralTimer (
+ input wire io_tick,
+ input wire io_clear,
+ input wire [15:0] io_limit,
+ output wire io_full,
+ output wire [15:0] io_value,
+ input wire clk,
+ input wire reset
+);
+
+ wire [15:0] _zz_counter;
+ wire [0:0] _zz_counter_1;
+ reg [15:0] counter;
+ wire limitHit;
+ reg inhibitFull;
+
+ assign _zz_counter_1 = (! limitHit);
+ assign _zz_counter = {15'd0, _zz_counter_1};
+ assign limitHit = (counter == io_limit);
+ assign io_full = ((limitHit && io_tick) && (! inhibitFull));
+ assign io_value = counter;
+ always @(posedge clk) begin
+ if(reset) begin
+ inhibitFull <= 1'b0;
+ end else begin
+ if(io_tick) begin
+ inhibitFull <= limitHit;
+ end
+ if(io_clear) begin
+ inhibitFull <= 1'b0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_tick) begin
+ counter <= (counter + _zz_counter);
+ end
+ if(io_clear) begin
+ counter <= 16'h0;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralPrescaler (
+ input wire io_clear,
+ input wire [23:0] io_limit,
+ output wire io_overflow,
+ input wire clk,
+ input wire reset
+);
+
+ reg [23:0] counter;
+ wire when_Prescaler_l17;
+
+ assign when_Prescaler_l17 = (io_clear || io_overflow);
+ assign io_overflow = (counter == io_limit);
+ always @(posedge clk) begin
+ counter <= (counter + 24'h000001);
+ if(when_Prescaler_l17) begin
+ counter <= 24'h0;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralI2cSlave (
+ output wire io_i2c_sda_write,
+ input wire io_i2c_sda_read,
+ output wire io_i2c_scl_write,
+ input wire io_i2c_scl_read,
+ input wire [9:0] io_config_samplingClockDivider,
+ input wire [19:0] io_config_timeout,
+ input wire [5:0] io_config_tsuData,
+ input wire io_config_timeoutClear,
+ output reg [2:0] io_bus_cmd_kind,
+ output wire io_bus_cmd_data,
+ input wire io_bus_rsp_valid,
+ input wire io_bus_rsp_enable,
+ input wire io_bus_rsp_data,
+ output wire io_timeout,
+ output wire io_internals_inFrame,
+ output wire io_internals_sdaRead,
+ output wire io_internals_sclRead,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4PeripheralI2cSlaveCmdMode_NONE = 3'd0;
+ localparam Axi4PeripheralI2cSlaveCmdMode_START = 3'd1;
+ localparam Axi4PeripheralI2cSlaveCmdMode_RESTART = 3'd2;
+ localparam Axi4PeripheralI2cSlaveCmdMode_STOP = 3'd3;
+ localparam Axi4PeripheralI2cSlaveCmdMode_DROP = 3'd4;
+ localparam Axi4PeripheralI2cSlaveCmdMode_DRIVE = 3'd5;
+ localparam Axi4PeripheralI2cSlaveCmdMode_READ = 3'd6;
+
+ wire io_i2c_scl_read_buffercc_io_dataOut;
+ wire io_i2c_sda_read_buffercc_io_dataOut;
+ reg [9:0] filter_timer_counter;
+ wire filter_timer_tick;
+ wire filter_sampler_sclSync;
+ wire filter_sampler_sdaSync;
+ wire filter_sampler_sclSamples_0;
+ wire filter_sampler_sclSamples_1;
+ wire filter_sampler_sclSamples_2;
+ wire _zz_filter_sampler_sclSamples_0;
+ reg _zz_filter_sampler_sclSamples_1;
+ reg _zz_filter_sampler_sclSamples_2;
+ wire filter_sampler_sdaSamples_0;
+ wire filter_sampler_sdaSamples_1;
+ wire filter_sampler_sdaSamples_2;
+ wire _zz_filter_sampler_sdaSamples_0;
+ reg _zz_filter_sampler_sdaSamples_1;
+ reg _zz_filter_sampler_sdaSamples_2;
+ reg filter_sda;
+ reg filter_scl;
+ wire when_Misc_l82;
+ wire when_Misc_l85;
+ wire sclEdge_rise;
+ wire sclEdge_fall;
+ wire sclEdge_toggle;
+ reg filter_scl_regNext;
+ wire sdaEdge_rise;
+ wire sdaEdge_fall;
+ wire sdaEdge_toggle;
+ reg filter_sda_regNext;
+ wire detector_start;
+ wire detector_stop;
+ reg [5:0] tsuData_counter;
+ wire tsuData_done;
+ reg tsuData_reset;
+ wire when_I2CSlave_l191;
+ reg ctrl_inFrame;
+ reg ctrl_inFrameData;
+ reg ctrl_sdaWrite;
+ reg ctrl_sclWrite;
+ wire ctrl_rspBufferIn_valid;
+ reg ctrl_rspBufferIn_ready;
+ wire ctrl_rspBufferIn_payload_enable;
+ wire ctrl_rspBufferIn_payload_data;
+ wire ctrl_rspBuffer_valid;
+ reg ctrl_rspBuffer_ready;
+ wire ctrl_rspBuffer_payload_enable;
+ wire ctrl_rspBuffer_payload_data;
+ reg ctrl_rspBufferIn_rValid;
+ reg ctrl_rspBufferIn_rData_enable;
+ reg ctrl_rspBufferIn_rData_data;
+ wire when_Stream_l375;
+ wire ctrl_rspAhead_valid;
+ wire ctrl_rspAhead_payload_enable;
+ wire ctrl_rspAhead_payload_data;
+ wire when_I2CSlave_l241;
+ wire when_I2CSlave_l245;
+ wire when_I2CSlave_l251;
+ wire [2:0] _zz_io_bus_cmd_kind;
+ reg timeout_enabled;
+ reg [19:0] timeout_counter;
+ wire timeout_tick;
+ wire when_I2CSlave_l270;
+ wire when_I2CSlave_l276;
+ wire [2:0] _zz_io_bus_cmd_kind_1;
+ `ifndef SYNTHESIS
+ reg [55:0] io_bus_cmd_kind_string;
+ reg [55:0] _zz_io_bus_cmd_kind_string;
+ reg [55:0] _zz_io_bus_cmd_kind_1_string;
+ `endif
+
+
+ (* keep_hierarchy = "TRUE" *) Axi4PeripheralBufferCC_1 io_i2c_scl_read_buffercc (
+ .io_dataIn (io_i2c_scl_read ), //i
+ .io_dataOut (io_i2c_scl_read_buffercc_io_dataOut), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ (* keep_hierarchy = "TRUE" *) Axi4PeripheralBufferCC_1 io_i2c_sda_read_buffercc (
+ .io_dataIn (io_i2c_sda_read ), //i
+ .io_dataOut (io_i2c_sda_read_buffercc_io_dataOut), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(io_bus_cmd_kind)
+ Axi4PeripheralI2cSlaveCmdMode_NONE : io_bus_cmd_kind_string = "NONE ";
+ Axi4PeripheralI2cSlaveCmdMode_START : io_bus_cmd_kind_string = "START ";
+ Axi4PeripheralI2cSlaveCmdMode_RESTART : io_bus_cmd_kind_string = "RESTART";
+ Axi4PeripheralI2cSlaveCmdMode_STOP : io_bus_cmd_kind_string = "STOP ";
+ Axi4PeripheralI2cSlaveCmdMode_DROP : io_bus_cmd_kind_string = "DROP ";
+ Axi4PeripheralI2cSlaveCmdMode_DRIVE : io_bus_cmd_kind_string = "DRIVE ";
+ Axi4PeripheralI2cSlaveCmdMode_READ : io_bus_cmd_kind_string = "READ ";
+ default : io_bus_cmd_kind_string = "???????";
+ endcase
+ end
+ always @(*) begin
+ case(_zz_io_bus_cmd_kind)
+ Axi4PeripheralI2cSlaveCmdMode_NONE : _zz_io_bus_cmd_kind_string = "NONE ";
+ Axi4PeripheralI2cSlaveCmdMode_START : _zz_io_bus_cmd_kind_string = "START ";
+ Axi4PeripheralI2cSlaveCmdMode_RESTART : _zz_io_bus_cmd_kind_string = "RESTART";
+ Axi4PeripheralI2cSlaveCmdMode_STOP : _zz_io_bus_cmd_kind_string = "STOP ";
+ Axi4PeripheralI2cSlaveCmdMode_DROP : _zz_io_bus_cmd_kind_string = "DROP ";
+ Axi4PeripheralI2cSlaveCmdMode_DRIVE : _zz_io_bus_cmd_kind_string = "DRIVE ";
+ Axi4PeripheralI2cSlaveCmdMode_READ : _zz_io_bus_cmd_kind_string = "READ ";
+ default : _zz_io_bus_cmd_kind_string = "???????";
+ endcase
+ end
+ always @(*) begin
+ case(_zz_io_bus_cmd_kind_1)
+ Axi4PeripheralI2cSlaveCmdMode_NONE : _zz_io_bus_cmd_kind_1_string = "NONE ";
+ Axi4PeripheralI2cSlaveCmdMode_START : _zz_io_bus_cmd_kind_1_string = "START ";
+ Axi4PeripheralI2cSlaveCmdMode_RESTART : _zz_io_bus_cmd_kind_1_string = "RESTART";
+ Axi4PeripheralI2cSlaveCmdMode_STOP : _zz_io_bus_cmd_kind_1_string = "STOP ";
+ Axi4PeripheralI2cSlaveCmdMode_DROP : _zz_io_bus_cmd_kind_1_string = "DROP ";
+ Axi4PeripheralI2cSlaveCmdMode_DRIVE : _zz_io_bus_cmd_kind_1_string = "DRIVE ";
+ Axi4PeripheralI2cSlaveCmdMode_READ : _zz_io_bus_cmd_kind_1_string = "READ ";
+ default : _zz_io_bus_cmd_kind_1_string = "???????";
+ endcase
+ end
+ `endif
+
+ assign filter_timer_tick = (filter_timer_counter == 10'h0);
+ assign filter_sampler_sclSync = io_i2c_scl_read_buffercc_io_dataOut;
+ assign filter_sampler_sdaSync = io_i2c_sda_read_buffercc_io_dataOut;
+ assign _zz_filter_sampler_sclSamples_0 = filter_sampler_sclSync;
+ assign filter_sampler_sclSamples_0 = _zz_filter_sampler_sclSamples_0;
+ assign filter_sampler_sclSamples_1 = _zz_filter_sampler_sclSamples_1;
+ assign filter_sampler_sclSamples_2 = _zz_filter_sampler_sclSamples_2;
+ assign _zz_filter_sampler_sdaSamples_0 = filter_sampler_sdaSync;
+ assign filter_sampler_sdaSamples_0 = _zz_filter_sampler_sdaSamples_0;
+ assign filter_sampler_sdaSamples_1 = _zz_filter_sampler_sdaSamples_1;
+ assign filter_sampler_sdaSamples_2 = _zz_filter_sampler_sdaSamples_2;
+ assign when_Misc_l82 = (&{(filter_sampler_sdaSamples_2 != filter_sda),{(filter_sampler_sdaSamples_1 != filter_sda),(filter_sampler_sdaSamples_0 != filter_sda)}});
+ assign when_Misc_l85 = (&{(filter_sampler_sclSamples_2 != filter_scl),{(filter_sampler_sclSamples_1 != filter_scl),(filter_sampler_sclSamples_0 != filter_scl)}});
+ assign sclEdge_rise = ((! filter_scl_regNext) && filter_scl);
+ assign sclEdge_fall = (filter_scl_regNext && (! filter_scl));
+ assign sclEdge_toggle = (filter_scl_regNext != filter_scl);
+ assign sdaEdge_rise = ((! filter_sda_regNext) && filter_sda);
+ assign sdaEdge_fall = (filter_sda_regNext && (! filter_sda));
+ assign sdaEdge_toggle = (filter_sda_regNext != filter_sda);
+ assign detector_start = (filter_scl && sdaEdge_fall);
+ assign detector_stop = (filter_scl && sdaEdge_rise);
+ assign tsuData_done = (tsuData_counter == 6'h0);
+ always @(*) begin
+ tsuData_reset = 1'b0;
+ if(ctrl_inFrameData) begin
+ tsuData_reset = (! ctrl_rspAhead_valid);
+ end
+ end
+
+ assign when_I2CSlave_l191 = (! tsuData_done);
+ always @(*) begin
+ ctrl_sdaWrite = 1'b1;
+ if(ctrl_inFrameData) begin
+ if(when_I2CSlave_l251) begin
+ ctrl_sdaWrite = ctrl_rspAhead_payload_data;
+ end
+ end
+ end
+
+ always @(*) begin
+ ctrl_sclWrite = 1'b1;
+ if(ctrl_inFrameData) begin
+ if(when_I2CSlave_l245) begin
+ ctrl_sclWrite = 1'b0;
+ end
+ end
+ end
+
+ always @(*) begin
+ ctrl_rspBufferIn_ready = ctrl_rspBuffer_ready;
+ if(when_Stream_l375) begin
+ ctrl_rspBufferIn_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! ctrl_rspBuffer_valid);
+ assign ctrl_rspBuffer_valid = ctrl_rspBufferIn_rValid;
+ assign ctrl_rspBuffer_payload_enable = ctrl_rspBufferIn_rData_enable;
+ assign ctrl_rspBuffer_payload_data = ctrl_rspBufferIn_rData_data;
+ assign ctrl_rspAhead_valid = (ctrl_rspBuffer_valid ? ctrl_rspBuffer_valid : ctrl_rspBufferIn_valid);
+ assign ctrl_rspAhead_payload_enable = (ctrl_rspBuffer_valid ? ctrl_rspBuffer_payload_enable : ctrl_rspBufferIn_payload_enable);
+ assign ctrl_rspAhead_payload_data = (ctrl_rspBuffer_valid ? ctrl_rspBuffer_payload_data : ctrl_rspBufferIn_payload_data);
+ assign ctrl_rspBufferIn_valid = io_bus_rsp_valid;
+ assign ctrl_rspBufferIn_payload_enable = io_bus_rsp_enable;
+ assign ctrl_rspBufferIn_payload_data = io_bus_rsp_data;
+ always @(*) begin
+ ctrl_rspBuffer_ready = 1'b0;
+ if(ctrl_inFrame) begin
+ if(sclEdge_fall) begin
+ ctrl_rspBuffer_ready = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ io_bus_cmd_kind = Axi4PeripheralI2cSlaveCmdMode_NONE;
+ if(ctrl_inFrame) begin
+ if(sclEdge_rise) begin
+ io_bus_cmd_kind = Axi4PeripheralI2cSlaveCmdMode_READ;
+ end
+ end
+ if(ctrl_inFrameData) begin
+ if(when_I2CSlave_l241) begin
+ io_bus_cmd_kind = Axi4PeripheralI2cSlaveCmdMode_DRIVE;
+ end
+ end
+ if(detector_start) begin
+ io_bus_cmd_kind = _zz_io_bus_cmd_kind;
+ end
+ if(when_I2CSlave_l276) begin
+ if(ctrl_inFrame) begin
+ io_bus_cmd_kind = _zz_io_bus_cmd_kind_1;
+ end
+ end
+ end
+
+ assign io_bus_cmd_data = filter_sda;
+ assign when_I2CSlave_l241 = ((! ctrl_rspBuffer_valid) || ctrl_rspBuffer_ready);
+ assign when_I2CSlave_l245 = ((! ctrl_rspAhead_valid) || (ctrl_rspAhead_payload_enable && (! tsuData_done)));
+ assign when_I2CSlave_l251 = (ctrl_rspAhead_valid && ctrl_rspAhead_payload_enable);
+ assign _zz_io_bus_cmd_kind = (ctrl_inFrame ? Axi4PeripheralI2cSlaveCmdMode_RESTART : Axi4PeripheralI2cSlaveCmdMode_START);
+ assign timeout_tick = (timeout_enabled && (timeout_counter == 20'h0));
+ assign when_I2CSlave_l270 = (((timeout_tick || sclEdge_toggle) || (((! ctrl_inFrame) && filter_scl) && filter_sda)) || io_config_timeoutClear);
+ assign io_timeout = timeout_tick;
+ assign when_I2CSlave_l276 = (detector_stop || timeout_tick);
+ assign _zz_io_bus_cmd_kind_1 = (timeout_tick ? Axi4PeripheralI2cSlaveCmdMode_DROP : Axi4PeripheralI2cSlaveCmdMode_STOP);
+ assign io_internals_inFrame = ctrl_inFrame;
+ assign io_internals_sdaRead = filter_sda;
+ assign io_internals_sclRead = filter_scl;
+ assign io_i2c_scl_write = ctrl_sclWrite;
+ assign io_i2c_sda_write = ctrl_sdaWrite;
+ always @(posedge clk) begin
+ if(reset) begin
+ filter_timer_counter <= 10'h0;
+ _zz_filter_sampler_sclSamples_1 <= 1'b1;
+ _zz_filter_sampler_sclSamples_2 <= 1'b1;
+ _zz_filter_sampler_sdaSamples_1 <= 1'b1;
+ _zz_filter_sampler_sdaSamples_2 <= 1'b1;
+ filter_sda <= 1'b1;
+ filter_scl <= 1'b1;
+ filter_scl_regNext <= 1'b1;
+ filter_sda_regNext <= 1'b1;
+ tsuData_counter <= 6'h0;
+ ctrl_inFrame <= 1'b0;
+ ctrl_inFrameData <= 1'b0;
+ ctrl_rspBufferIn_rValid <= 1'b0;
+ timeout_counter <= 20'h0;
+ end else begin
+ filter_timer_counter <= (filter_timer_counter - 10'h001);
+ if(filter_timer_tick) begin
+ filter_timer_counter <= io_config_samplingClockDivider;
+ end
+ if(filter_timer_tick) begin
+ _zz_filter_sampler_sclSamples_1 <= _zz_filter_sampler_sclSamples_0;
+ end
+ if(filter_timer_tick) begin
+ _zz_filter_sampler_sclSamples_2 <= _zz_filter_sampler_sclSamples_1;
+ end
+ if(filter_timer_tick) begin
+ _zz_filter_sampler_sdaSamples_1 <= _zz_filter_sampler_sdaSamples_0;
+ end
+ if(filter_timer_tick) begin
+ _zz_filter_sampler_sdaSamples_2 <= _zz_filter_sampler_sdaSamples_1;
+ end
+ if(filter_timer_tick) begin
+ if(when_Misc_l82) begin
+ filter_sda <= filter_sampler_sdaSamples_2;
+ end
+ if(when_Misc_l85) begin
+ filter_scl <= filter_sampler_sclSamples_2;
+ end
+ end
+ filter_scl_regNext <= filter_scl;
+ filter_sda_regNext <= filter_sda;
+ if(when_I2CSlave_l191) begin
+ tsuData_counter <= (tsuData_counter - 6'h01);
+ end
+ if(tsuData_reset) begin
+ tsuData_counter <= io_config_tsuData;
+ end
+ if(ctrl_rspBufferIn_ready) begin
+ ctrl_rspBufferIn_rValid <= ctrl_rspBufferIn_valid;
+ end
+ if(ctrl_inFrame) begin
+ if(sclEdge_fall) begin
+ ctrl_inFrameData <= 1'b1;
+ end
+ end
+ if(detector_start) begin
+ ctrl_inFrame <= 1'b1;
+ ctrl_inFrameData <= 1'b0;
+ end
+ timeout_counter <= (timeout_counter - 20'h00001);
+ if(when_I2CSlave_l270) begin
+ timeout_counter <= io_config_timeout;
+ end
+ if(when_I2CSlave_l276) begin
+ ctrl_inFrame <= 1'b0;
+ ctrl_inFrameData <= 1'b0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(ctrl_rspBufferIn_ready) begin
+ ctrl_rspBufferIn_rData_enable <= ctrl_rspBufferIn_payload_enable;
+ ctrl_rspBufferIn_rData_data <= ctrl_rspBufferIn_payload_data;
+ end
+ timeout_enabled <= (io_config_timeout != 20'h0);
+ end
+
+
+endmodule
+
+module Axi4PeripheralStreamFifo_3 (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [7:0] io_push_payload_data,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [7:0] io_pop_payload_data,
+ input wire io_flush,
+ output wire [8:0] io_occupancy,
+ output wire [8:0] io_availability,
+ input wire clk,
+ input wire reset
+);
+
+ reg [7:0] logic_ram_spinal_port1;
+ reg _zz_1;
+ wire logic_ptr_doPush;
+ wire logic_ptr_doPop;
+ wire logic_ptr_full;
+ wire logic_ptr_empty;
+ reg [8:0] logic_ptr_push;
+ reg [8:0] logic_ptr_pop;
+ wire [8:0] logic_ptr_occupancy;
+ wire [8:0] logic_ptr_popOnIo;
+ wire when_Stream_l1248;
+ reg logic_ptr_wentUp;
+ wire io_push_fire;
+ wire logic_push_onRam_write_valid;
+ wire [7:0] logic_push_onRam_write_payload_address;
+ wire [7:0] logic_push_onRam_write_payload_data_data;
+ wire logic_pop_addressGen_valid;
+ reg logic_pop_addressGen_ready;
+ wire [7:0] logic_pop_addressGen_payload;
+ wire logic_pop_addressGen_fire;
+ wire logic_pop_sync_readArbitation_valid;
+ wire logic_pop_sync_readArbitation_ready;
+ wire [7:0] logic_pop_sync_readArbitation_payload;
+ reg logic_pop_addressGen_rValid;
+ reg [7:0] logic_pop_addressGen_rData;
+ wire when_Stream_l375;
+ wire logic_pop_sync_readPort_cmd_valid;
+ wire [7:0] logic_pop_sync_readPort_cmd_payload;
+ wire [7:0] logic_pop_sync_readPort_rsp_data;
+ wire logic_pop_sync_readArbitation_translated_valid;
+ wire logic_pop_sync_readArbitation_translated_ready;
+ wire [7:0] logic_pop_sync_readArbitation_translated_payload_data;
+ wire logic_pop_sync_readArbitation_fire;
+ reg [8:0] logic_pop_sync_popReg;
+ reg [7:0] logic_ram [0:255];
+
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_push_onRam_write_payload_address] <= logic_push_onRam_write_payload_data_data;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_sync_readPort_cmd_valid) begin
+ logic_ram_spinal_port1 <= logic_ram[logic_pop_sync_readPort_cmd_payload];
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_push_onRam_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l1248 = (logic_ptr_doPush != logic_ptr_doPop);
+ assign logic_ptr_full = (((logic_ptr_push ^ logic_ptr_popOnIo) ^ 9'h100) == 9'h0);
+ assign logic_ptr_empty = (logic_ptr_push == logic_ptr_pop);
+ assign logic_ptr_occupancy = (logic_ptr_push - logic_ptr_popOnIo);
+ assign io_push_ready = (! logic_ptr_full);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign logic_ptr_doPush = io_push_fire;
+ assign logic_push_onRam_write_valid = io_push_fire;
+ assign logic_push_onRam_write_payload_address = logic_ptr_push[7:0];
+ assign logic_push_onRam_write_payload_data_data = io_push_payload_data;
+ assign logic_pop_addressGen_valid = (! logic_ptr_empty);
+ assign logic_pop_addressGen_payload = logic_ptr_pop[7:0];
+ assign logic_pop_addressGen_fire = (logic_pop_addressGen_valid && logic_pop_addressGen_ready);
+ assign logic_ptr_doPop = logic_pop_addressGen_fire;
+ always @(*) begin
+ logic_pop_addressGen_ready = logic_pop_sync_readArbitation_ready;
+ if(when_Stream_l375) begin
+ logic_pop_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! logic_pop_sync_readArbitation_valid);
+ assign logic_pop_sync_readArbitation_valid = logic_pop_addressGen_rValid;
+ assign logic_pop_sync_readArbitation_payload = logic_pop_addressGen_rData;
+ assign logic_pop_sync_readPort_rsp_data = logic_ram_spinal_port1[7 : 0];
+ assign logic_pop_sync_readPort_cmd_valid = logic_pop_addressGen_fire;
+ assign logic_pop_sync_readPort_cmd_payload = logic_pop_addressGen_payload;
+ assign logic_pop_sync_readArbitation_translated_valid = logic_pop_sync_readArbitation_valid;
+ assign logic_pop_sync_readArbitation_ready = logic_pop_sync_readArbitation_translated_ready;
+ assign logic_pop_sync_readArbitation_translated_payload_data = logic_pop_sync_readPort_rsp_data;
+ assign io_pop_valid = logic_pop_sync_readArbitation_translated_valid;
+ assign logic_pop_sync_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_data = logic_pop_sync_readArbitation_translated_payload_data;
+ assign logic_pop_sync_readArbitation_fire = (logic_pop_sync_readArbitation_valid && logic_pop_sync_readArbitation_ready);
+ assign logic_ptr_popOnIo = logic_pop_sync_popReg;
+ assign io_occupancy = logic_ptr_occupancy;
+ assign io_availability = (9'h100 - logic_ptr_occupancy);
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_ptr_push <= 9'h0;
+ logic_ptr_pop <= 9'h0;
+ logic_ptr_wentUp <= 1'b0;
+ logic_pop_addressGen_rValid <= 1'b0;
+ logic_pop_sync_popReg <= 9'h0;
+ end else begin
+ if(when_Stream_l1248) begin
+ logic_ptr_wentUp <= logic_ptr_doPush;
+ end
+ if(io_flush) begin
+ logic_ptr_wentUp <= 1'b0;
+ end
+ if(logic_ptr_doPush) begin
+ logic_ptr_push <= (logic_ptr_push + 9'h001);
+ end
+ if(logic_ptr_doPop) begin
+ logic_ptr_pop <= (logic_ptr_pop + 9'h001);
+ end
+ if(io_flush) begin
+ logic_ptr_push <= 9'h0;
+ logic_ptr_pop <= 9'h0;
+ end
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rValid <= logic_pop_addressGen_valid;
+ end
+ if(io_flush) begin
+ logic_pop_addressGen_rValid <= 1'b0;
+ end
+ if(logic_pop_sync_readArbitation_fire) begin
+ logic_pop_sync_popReg <= logic_ptr_pop;
+ end
+ if(io_flush) begin
+ logic_pop_sync_popReg <= 9'h0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rData <= logic_pop_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralStreamFifo_2 (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire io_push_payload_kind,
+ input wire io_push_payload_read,
+ input wire io_push_payload_write,
+ input wire [7:0] io_push_payload_data,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire io_pop_payload_kind,
+ output wire io_pop_payload_read,
+ output wire io_pop_payload_write,
+ output wire [7:0] io_pop_payload_data,
+ input wire io_flush,
+ output wire [8:0] io_occupancy,
+ output wire [8:0] io_availability,
+ input wire clk,
+ input wire reset
+);
+
+ reg [10:0] logic_ram_spinal_port1;
+ wire [10:0] _zz_logic_ram_port;
+ reg _zz_1;
+ wire logic_ptr_doPush;
+ wire logic_ptr_doPop;
+ wire logic_ptr_full;
+ wire logic_ptr_empty;
+ reg [8:0] logic_ptr_push;
+ reg [8:0] logic_ptr_pop;
+ wire [8:0] logic_ptr_occupancy;
+ wire [8:0] logic_ptr_popOnIo;
+ wire when_Stream_l1248;
+ reg logic_ptr_wentUp;
+ wire io_push_fire;
+ wire logic_push_onRam_write_valid;
+ wire [7:0] logic_push_onRam_write_payload_address;
+ wire logic_push_onRam_write_payload_data_kind;
+ wire logic_push_onRam_write_payload_data_read;
+ wire logic_push_onRam_write_payload_data_write;
+ wire [7:0] logic_push_onRam_write_payload_data_data;
+ wire logic_pop_addressGen_valid;
+ reg logic_pop_addressGen_ready;
+ wire [7:0] logic_pop_addressGen_payload;
+ wire logic_pop_addressGen_fire;
+ wire logic_pop_sync_readArbitation_valid;
+ wire logic_pop_sync_readArbitation_ready;
+ wire [7:0] logic_pop_sync_readArbitation_payload;
+ reg logic_pop_addressGen_rValid;
+ reg [7:0] logic_pop_addressGen_rData;
+ wire when_Stream_l375;
+ wire logic_pop_sync_readPort_cmd_valid;
+ wire [7:0] logic_pop_sync_readPort_cmd_payload;
+ wire logic_pop_sync_readPort_rsp_kind;
+ wire logic_pop_sync_readPort_rsp_read;
+ wire logic_pop_sync_readPort_rsp_write;
+ wire [7:0] logic_pop_sync_readPort_rsp_data;
+ wire [10:0] _zz_logic_pop_sync_readPort_rsp_kind;
+ wire logic_pop_sync_readArbitation_translated_valid;
+ wire logic_pop_sync_readArbitation_translated_ready;
+ wire logic_pop_sync_readArbitation_translated_payload_kind;
+ wire logic_pop_sync_readArbitation_translated_payload_read;
+ wire logic_pop_sync_readArbitation_translated_payload_write;
+ wire [7:0] logic_pop_sync_readArbitation_translated_payload_data;
+ wire logic_pop_sync_readArbitation_fire;
+ reg [8:0] logic_pop_sync_popReg;
+ reg [10:0] logic_ram [0:255];
+
+ assign _zz_logic_ram_port = {logic_push_onRam_write_payload_data_data,{logic_push_onRam_write_payload_data_write,{logic_push_onRam_write_payload_data_read,logic_push_onRam_write_payload_data_kind}}};
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_push_onRam_write_payload_address] <= _zz_logic_ram_port;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_sync_readPort_cmd_valid) begin
+ logic_ram_spinal_port1 <= logic_ram[logic_pop_sync_readPort_cmd_payload];
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_push_onRam_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l1248 = (logic_ptr_doPush != logic_ptr_doPop);
+ assign logic_ptr_full = (((logic_ptr_push ^ logic_ptr_popOnIo) ^ 9'h100) == 9'h0);
+ assign logic_ptr_empty = (logic_ptr_push == logic_ptr_pop);
+ assign logic_ptr_occupancy = (logic_ptr_push - logic_ptr_popOnIo);
+ assign io_push_ready = (! logic_ptr_full);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign logic_ptr_doPush = io_push_fire;
+ assign logic_push_onRam_write_valid = io_push_fire;
+ assign logic_push_onRam_write_payload_address = logic_ptr_push[7:0];
+ assign logic_push_onRam_write_payload_data_kind = io_push_payload_kind;
+ assign logic_push_onRam_write_payload_data_read = io_push_payload_read;
+ assign logic_push_onRam_write_payload_data_write = io_push_payload_write;
+ assign logic_push_onRam_write_payload_data_data = io_push_payload_data;
+ assign logic_pop_addressGen_valid = (! logic_ptr_empty);
+ assign logic_pop_addressGen_payload = logic_ptr_pop[7:0];
+ assign logic_pop_addressGen_fire = (logic_pop_addressGen_valid && logic_pop_addressGen_ready);
+ assign logic_ptr_doPop = logic_pop_addressGen_fire;
+ always @(*) begin
+ logic_pop_addressGen_ready = logic_pop_sync_readArbitation_ready;
+ if(when_Stream_l375) begin
+ logic_pop_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! logic_pop_sync_readArbitation_valid);
+ assign logic_pop_sync_readArbitation_valid = logic_pop_addressGen_rValid;
+ assign logic_pop_sync_readArbitation_payload = logic_pop_addressGen_rData;
+ assign _zz_logic_pop_sync_readPort_rsp_kind = logic_ram_spinal_port1;
+ assign logic_pop_sync_readPort_rsp_kind = _zz_logic_pop_sync_readPort_rsp_kind[0];
+ assign logic_pop_sync_readPort_rsp_read = _zz_logic_pop_sync_readPort_rsp_kind[1];
+ assign logic_pop_sync_readPort_rsp_write = _zz_logic_pop_sync_readPort_rsp_kind[2];
+ assign logic_pop_sync_readPort_rsp_data = _zz_logic_pop_sync_readPort_rsp_kind[10 : 3];
+ assign logic_pop_sync_readPort_cmd_valid = logic_pop_addressGen_fire;
+ assign logic_pop_sync_readPort_cmd_payload = logic_pop_addressGen_payload;
+ assign logic_pop_sync_readArbitation_translated_valid = logic_pop_sync_readArbitation_valid;
+ assign logic_pop_sync_readArbitation_ready = logic_pop_sync_readArbitation_translated_ready;
+ assign logic_pop_sync_readArbitation_translated_payload_kind = logic_pop_sync_readPort_rsp_kind;
+ assign logic_pop_sync_readArbitation_translated_payload_read = logic_pop_sync_readPort_rsp_read;
+ assign logic_pop_sync_readArbitation_translated_payload_write = logic_pop_sync_readPort_rsp_write;
+ assign logic_pop_sync_readArbitation_translated_payload_data = logic_pop_sync_readPort_rsp_data;
+ assign io_pop_valid = logic_pop_sync_readArbitation_translated_valid;
+ assign logic_pop_sync_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_kind = logic_pop_sync_readArbitation_translated_payload_kind;
+ assign io_pop_payload_read = logic_pop_sync_readArbitation_translated_payload_read;
+ assign io_pop_payload_write = logic_pop_sync_readArbitation_translated_payload_write;
+ assign io_pop_payload_data = logic_pop_sync_readArbitation_translated_payload_data;
+ assign logic_pop_sync_readArbitation_fire = (logic_pop_sync_readArbitation_valid && logic_pop_sync_readArbitation_ready);
+ assign logic_ptr_popOnIo = logic_pop_sync_popReg;
+ assign io_occupancy = logic_ptr_occupancy;
+ assign io_availability = (9'h100 - logic_ptr_occupancy);
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_ptr_push <= 9'h0;
+ logic_ptr_pop <= 9'h0;
+ logic_ptr_wentUp <= 1'b0;
+ logic_pop_addressGen_rValid <= 1'b0;
+ logic_pop_sync_popReg <= 9'h0;
+ end else begin
+ if(when_Stream_l1248) begin
+ logic_ptr_wentUp <= logic_ptr_doPush;
+ end
+ if(io_flush) begin
+ logic_ptr_wentUp <= 1'b0;
+ end
+ if(logic_ptr_doPush) begin
+ logic_ptr_push <= (logic_ptr_push + 9'h001);
+ end
+ if(logic_ptr_doPop) begin
+ logic_ptr_pop <= (logic_ptr_pop + 9'h001);
+ end
+ if(io_flush) begin
+ logic_ptr_push <= 9'h0;
+ logic_ptr_pop <= 9'h0;
+ end
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rValid <= logic_pop_addressGen_valid;
+ end
+ if(io_flush) begin
+ logic_pop_addressGen_rValid <= 1'b0;
+ end
+ if(logic_pop_sync_readArbitation_fire) begin
+ logic_pop_sync_popReg <= logic_ptr_pop;
+ end
+ if(io_flush) begin
+ logic_pop_sync_popReg <= 9'h0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rData <= logic_pop_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralTopLevel (
+ input wire io_config_kind_cpol,
+ input wire io_config_kind_cpha,
+ input wire [11:0] io_config_sclkToggle,
+ input wire [1:0] io_config_mod,
+ input wire [3:0] io_config_ss_activeHigh,
+ input wire [11:0] io_config_ss_setup,
+ input wire [11:0] io_config_ss_hold,
+ input wire [11:0] io_config_ss_disable,
+ input wire io_cmd_valid,
+ output reg io_cmd_ready,
+ input wire io_cmd_payload_kind,
+ input wire io_cmd_payload_read,
+ input wire io_cmd_payload_write,
+ input wire [7:0] io_cmd_payload_data,
+ output wire io_rsp_valid,
+ output wire [7:0] io_rsp_payload_data,
+ output wire [0:0] io_spi_sclk_write,
+ output reg io_spi_data_0_writeEnable,
+ input wire [0:0] io_spi_data_0_read,
+ output reg [0:0] io_spi_data_0_write,
+ output reg io_spi_data_1_writeEnable,
+ input wire [0:0] io_spi_data_1_read,
+ output reg [0:0] io_spi_data_1_write,
+ output reg io_spi_data_2_writeEnable,
+ input wire [0:0] io_spi_data_2_read,
+ output reg [0:0] io_spi_data_2_write,
+ output reg io_spi_data_3_writeEnable,
+ input wire [0:0] io_spi_data_3_read,
+ output reg [0:0] io_spi_data_3_write,
+ output wire [3:0] io_spi_ss,
+ input wire clk,
+ input wire reset
+);
+
+ reg [0:0] _zz_outputPhy_dataWrite_3;
+ wire [2:0] _zz_outputPhy_dataWrite_4;
+ reg [1:0] _zz_outputPhy_dataWrite_5;
+ wire [1:0] _zz_outputPhy_dataWrite_6;
+ wire [2:0] _zz_outputPhy_dataWrite_7;
+ reg [3:0] _zz_outputPhy_dataWrite_8;
+ wire [0:0] _zz_outputPhy_dataWrite_9;
+ wire [2:0] _zz_outputPhy_dataWrite_10;
+ wire [3:0] _zz_inputPhy_dataRead;
+ wire [3:0] _zz_inputPhy_dataRead_1;
+ wire [3:0] _zz_inputPhy_dataRead_2;
+ wire [3:0] _zz_inputPhy_dataRead_3;
+ wire [3:0] _zz_inputPhy_dataRead_4;
+ wire [3:0] _zz_inputPhy_dataRead_5;
+ wire [3:0] _zz_inputPhy_dataRead_6;
+ wire [8:0] _zz_inputPhy_bufferNext;
+ wire [10:0] _zz_inputPhy_bufferNext_1;
+ reg [11:0] timer_counter;
+ reg timer_reset;
+ wire timer_ss_setupHit;
+ wire timer_ss_holdHit;
+ wire timer_ss_disableHit;
+ wire timer_sclkToggleHit;
+ reg fsm_state;
+ reg [2:0] fsm_counter;
+ reg [2:0] _zz_fsm_counterPlus;
+ wire [2:0] fsm_counterPlus;
+ reg fsm_fastRate;
+ reg fsm_isDdr;
+ reg [2:0] fsm_counterMax;
+ reg fsm_lateSampling;
+ reg fsm_readFill;
+ reg fsm_readDone;
+ reg [3:0] fsm_ss;
+ wire when_SpiXdrMasterCtrl_l741;
+ wire when_SpiXdrMasterCtrl_l744;
+ wire when_SpiXdrMasterCtrl_l751;
+ wire when_SpiXdrMasterCtrl_l753;
+ wire when_SpiXdrMasterCtrl_l760;
+ wire when_SpiXdrMasterCtrl_l766;
+ wire when_SpiXdrMasterCtrl_l783;
+ reg [0:0] outputPhy_sclkWrite;
+ wire [0:0] _zz_io_spi_sclk_write;
+ wire when_SpiXdrMasterCtrl_l798;
+ reg [3:0] outputPhy_dataWrite;
+ reg [2:0] outputPhy_widthSel;
+ reg [2:0] outputPhy_offset;
+ wire [7:0] _zz_outputPhy_dataWrite;
+ wire [7:0] _zz_outputPhy_dataWrite_1;
+ wire [7:0] _zz_outputPhy_dataWrite_2;
+ wire when_SpiXdrMasterCtrl_l841;
+ wire when_SpiXdrMasterCtrl_l841_1;
+ reg [1:0] io_config_mod_delay_1;
+ reg [1:0] inputPhy_mod;
+ reg fsm_readFill_delay_1;
+ reg inputPhy_readFill;
+ reg fsm_readDone_delay_1;
+ reg inputPhy_readDone;
+ reg [6:0] inputPhy_buffer;
+ reg [7:0] inputPhy_bufferNext;
+ reg [2:0] inputPhy_widthSel;
+ wire [3:0] inputPhy_dataWrite;
+ reg [3:0] inputPhy_dataRead;
+ reg fsm_state_delay_1;
+ reg fsm_state_delay_2;
+ wire when_SpiXdrMasterCtrl_l863;
+ reg [3:0] inputPhy_dataReadBuffer;
+
+ assign _zz_outputPhy_dataWrite_4 = (outputPhy_offset - fsm_counter);
+ assign _zz_outputPhy_dataWrite_6 = (_zz_outputPhy_dataWrite_7 >>> 1'd1);
+ assign _zz_outputPhy_dataWrite_7 = (outputPhy_offset - fsm_counter);
+ assign _zz_outputPhy_dataWrite_9 = (_zz_outputPhy_dataWrite_10 >>> 2'd2);
+ assign _zz_outputPhy_dataWrite_10 = (outputPhy_offset - fsm_counter);
+ assign _zz_inputPhy_dataRead = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_1 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_2 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_3 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_4 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_5 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_dataRead_6 = {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ assign _zz_inputPhy_bufferNext = {inputPhy_buffer,inputPhy_dataRead[1 : 0]};
+ assign _zz_inputPhy_bufferNext_1 = {inputPhy_buffer,inputPhy_dataRead[3 : 0]};
+ always @(*) begin
+ case(_zz_outputPhy_dataWrite_4)
+ 3'b000 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[0 : 0];
+ 3'b001 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[1 : 1];
+ 3'b010 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[2 : 2];
+ 3'b011 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[3 : 3];
+ 3'b100 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[4 : 4];
+ 3'b101 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[5 : 5];
+ 3'b110 : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[6 : 6];
+ default : _zz_outputPhy_dataWrite_3 = _zz_outputPhy_dataWrite[7 : 7];
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_outputPhy_dataWrite_6)
+ 2'b00 : _zz_outputPhy_dataWrite_5 = _zz_outputPhy_dataWrite_1[1 : 0];
+ 2'b01 : _zz_outputPhy_dataWrite_5 = _zz_outputPhy_dataWrite_1[3 : 2];
+ 2'b10 : _zz_outputPhy_dataWrite_5 = _zz_outputPhy_dataWrite_1[5 : 4];
+ default : _zz_outputPhy_dataWrite_5 = _zz_outputPhy_dataWrite_1[7 : 6];
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_outputPhy_dataWrite_9)
+ 1'b0 : _zz_outputPhy_dataWrite_8 = _zz_outputPhy_dataWrite_2[3 : 0];
+ default : _zz_outputPhy_dataWrite_8 = _zz_outputPhy_dataWrite_2[7 : 4];
+ endcase
+ end
+
+ always @(*) begin
+ timer_reset = 1'b0;
+ if(io_cmd_valid) begin
+ if(when_SpiXdrMasterCtrl_l741) begin
+ timer_reset = timer_sclkToggleHit;
+ end else begin
+ if(!when_SpiXdrMasterCtrl_l760) begin
+ if(when_SpiXdrMasterCtrl_l766) begin
+ if(timer_ss_holdHit) begin
+ timer_reset = 1'b1;
+ end
+ end
+ end
+ end
+ end
+ if(when_SpiXdrMasterCtrl_l783) begin
+ timer_reset = 1'b1;
+ end
+ end
+
+ assign timer_ss_setupHit = (timer_counter == io_config_ss_setup);
+ assign timer_ss_holdHit = (timer_counter == io_config_ss_hold);
+ assign timer_ss_disableHit = (timer_counter == io_config_ss_disable);
+ assign timer_sclkToggleHit = (timer_counter == io_config_sclkToggle);
+ always @(*) begin
+ _zz_fsm_counterPlus = 3'bxxx;
+ case(io_config_mod)
+ 2'b00 : begin
+ _zz_fsm_counterPlus = 3'b001;
+ end
+ 2'b01 : begin
+ _zz_fsm_counterPlus = 3'b010;
+ end
+ 2'b10 : begin
+ _zz_fsm_counterPlus = 3'b100;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign fsm_counterPlus = (fsm_counter + _zz_fsm_counterPlus);
+ always @(*) begin
+ fsm_fastRate = 1'bx;
+ case(io_config_mod)
+ 2'b00 : begin
+ fsm_fastRate = 1'b0;
+ end
+ 2'b01 : begin
+ fsm_fastRate = 1'b0;
+ end
+ 2'b10 : begin
+ fsm_fastRate = 1'b0;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ fsm_isDdr = 1'bx;
+ case(io_config_mod)
+ 2'b00 : begin
+ fsm_isDdr = 1'b0;
+ end
+ 2'b01 : begin
+ fsm_isDdr = 1'b0;
+ end
+ 2'b10 : begin
+ fsm_isDdr = 1'b0;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ fsm_counterMax = 3'bxxx;
+ case(io_config_mod)
+ 2'b00 : begin
+ fsm_counterMax = 3'b111;
+ end
+ 2'b01 : begin
+ fsm_counterMax = 3'b110;
+ end
+ 2'b10 : begin
+ fsm_counterMax = 3'b100;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ fsm_lateSampling = 1'bx;
+ case(io_config_mod)
+ 2'b00 : begin
+ fsm_lateSampling = 1'b1;
+ end
+ 2'b01 : begin
+ fsm_lateSampling = 1'b1;
+ end
+ 2'b10 : begin
+ fsm_lateSampling = 1'b1;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ fsm_readFill = 1'b0;
+ if(io_cmd_valid) begin
+ if(when_SpiXdrMasterCtrl_l741) begin
+ if(when_SpiXdrMasterCtrl_l744) begin
+ fsm_readFill = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ fsm_readDone = 1'b0;
+ if(io_cmd_valid) begin
+ if(when_SpiXdrMasterCtrl_l741) begin
+ if(when_SpiXdrMasterCtrl_l744) begin
+ fsm_readDone = (io_cmd_payload_read && (fsm_counter == fsm_counterMax));
+ end
+ end
+ end
+ end
+
+ assign io_spi_ss = (~ (fsm_ss ^ io_config_ss_activeHigh));
+ always @(*) begin
+ io_cmd_ready = 1'b0;
+ if(io_cmd_valid) begin
+ if(when_SpiXdrMasterCtrl_l741) begin
+ if(when_SpiXdrMasterCtrl_l751) begin
+ if(when_SpiXdrMasterCtrl_l753) begin
+ io_cmd_ready = 1'b1;
+ end
+ end
+ end else begin
+ if(when_SpiXdrMasterCtrl_l760) begin
+ if(timer_ss_setupHit) begin
+ io_cmd_ready = 1'b1;
+ end
+ end else begin
+ if(!when_SpiXdrMasterCtrl_l766) begin
+ if(timer_ss_disableHit) begin
+ io_cmd_ready = 1'b1;
+ end
+ end
+ end
+ end
+ end
+ end
+
+ assign when_SpiXdrMasterCtrl_l741 = (! io_cmd_payload_kind);
+ assign when_SpiXdrMasterCtrl_l744 = ((timer_sclkToggleHit && (((! fsm_state) ^ fsm_lateSampling) || fsm_isDdr)) || fsm_fastRate);
+ assign when_SpiXdrMasterCtrl_l751 = ((timer_sclkToggleHit && (fsm_state || fsm_isDdr)) || fsm_fastRate);
+ assign when_SpiXdrMasterCtrl_l753 = (fsm_counter == fsm_counterMax);
+ assign when_SpiXdrMasterCtrl_l760 = io_cmd_payload_data[7];
+ assign when_SpiXdrMasterCtrl_l766 = (! fsm_state);
+ assign when_SpiXdrMasterCtrl_l783 = ((! io_cmd_valid) || io_cmd_ready);
+ always @(*) begin
+ outputPhy_sclkWrite = 1'b0;
+ if(when_SpiXdrMasterCtrl_l798) begin
+ case(io_config_mod)
+ 2'b00 : begin
+ outputPhy_sclkWrite = ((fsm_state ^ io_config_kind_cpha) ? 1'b1 : 1'b0);
+ end
+ 2'b01 : begin
+ outputPhy_sclkWrite = ((fsm_state ^ io_config_kind_cpha) ? 1'b1 : 1'b0);
+ end
+ 2'b10 : begin
+ outputPhy_sclkWrite = ((fsm_state ^ io_config_kind_cpha) ? 1'b1 : 1'b0);
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ assign _zz_io_spi_sclk_write[0] = io_config_kind_cpol;
+ assign io_spi_sclk_write = (outputPhy_sclkWrite ^ _zz_io_spi_sclk_write);
+ assign when_SpiXdrMasterCtrl_l798 = (io_cmd_valid && (! io_cmd_payload_kind));
+ always @(*) begin
+ outputPhy_widthSel = 3'bxxx;
+ case(io_config_mod)
+ 2'b00 : begin
+ outputPhy_widthSel = 3'b000;
+ end
+ 2'b01 : begin
+ outputPhy_widthSel = 3'b001;
+ end
+ 2'b10 : begin
+ outputPhy_widthSel = 3'b010;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ outputPhy_offset = 3'bxxx;
+ case(io_config_mod)
+ 2'b00 : begin
+ outputPhy_offset = 3'b111;
+ end
+ 2'b01 : begin
+ outputPhy_offset = 3'b111;
+ end
+ 2'b10 : begin
+ outputPhy_offset = 3'b111;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ outputPhy_dataWrite = 4'bxxxx;
+ case(outputPhy_widthSel)
+ 3'b000 : begin
+ outputPhy_dataWrite[0 : 0] = _zz_outputPhy_dataWrite_3;
+ end
+ 3'b001 : begin
+ outputPhy_dataWrite[1 : 0] = _zz_outputPhy_dataWrite_5;
+ end
+ 3'b010 : begin
+ outputPhy_dataWrite[3 : 0] = _zz_outputPhy_dataWrite_8;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign _zz_outputPhy_dataWrite = io_cmd_payload_data;
+ assign _zz_outputPhy_dataWrite_1 = io_cmd_payload_data;
+ assign _zz_outputPhy_dataWrite_2 = io_cmd_payload_data;
+ always @(*) begin
+ io_spi_data_0_writeEnable = 1'b0;
+ case(io_config_mod)
+ 2'b00 : begin
+ io_spi_data_0_writeEnable = 1'b1;
+ end
+ 2'b01 : begin
+ if(when_SpiXdrMasterCtrl_l841) begin
+ io_spi_data_0_writeEnable = 1'b1;
+ end
+ end
+ 2'b10 : begin
+ if(when_SpiXdrMasterCtrl_l841_1) begin
+ io_spi_data_0_writeEnable = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_1_writeEnable = 1'b0;
+ case(io_config_mod)
+ 2'b01 : begin
+ if(when_SpiXdrMasterCtrl_l841) begin
+ io_spi_data_1_writeEnable = 1'b1;
+ end
+ end
+ 2'b10 : begin
+ if(when_SpiXdrMasterCtrl_l841_1) begin
+ io_spi_data_1_writeEnable = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_2_writeEnable = 1'b0;
+ case(io_config_mod)
+ 2'b10 : begin
+ if(when_SpiXdrMasterCtrl_l841_1) begin
+ io_spi_data_2_writeEnable = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_3_writeEnable = 1'b0;
+ case(io_config_mod)
+ 2'b10 : begin
+ if(when_SpiXdrMasterCtrl_l841_1) begin
+ io_spi_data_3_writeEnable = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_0_write = 1'bx;
+ case(io_config_mod)
+ 2'b00 : begin
+ io_spi_data_0_write[0] = (outputPhy_dataWrite[0] || (! (io_cmd_valid && io_cmd_payload_write)));
+ end
+ 2'b01 : begin
+ io_spi_data_0_write[0] = outputPhy_dataWrite[0];
+ end
+ 2'b10 : begin
+ io_spi_data_0_write[0] = outputPhy_dataWrite[0];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_1_write = 1'bx;
+ case(io_config_mod)
+ 2'b01 : begin
+ io_spi_data_1_write[0] = outputPhy_dataWrite[1];
+ end
+ 2'b10 : begin
+ io_spi_data_1_write[0] = outputPhy_dataWrite[1];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_2_write = 1'bx;
+ case(io_config_mod)
+ 2'b10 : begin
+ io_spi_data_2_write[0] = outputPhy_dataWrite[2];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_spi_data_3_write = 1'bx;
+ case(io_config_mod)
+ 2'b10 : begin
+ io_spi_data_3_write[0] = outputPhy_dataWrite[3];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_SpiXdrMasterCtrl_l841 = (io_cmd_valid && io_cmd_payload_write);
+ assign when_SpiXdrMasterCtrl_l841_1 = (io_cmd_valid && io_cmd_payload_write);
+ always @(*) begin
+ inputPhy_bufferNext = 8'bxxxxxxxx;
+ case(inputPhy_widthSel)
+ 3'b000 : begin
+ inputPhy_bufferNext = {inputPhy_buffer,inputPhy_dataRead[0 : 0]};
+ end
+ 3'b001 : begin
+ inputPhy_bufferNext = _zz_inputPhy_bufferNext[7:0];
+ end
+ 3'b010 : begin
+ inputPhy_bufferNext = _zz_inputPhy_bufferNext_1[7:0];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ inputPhy_widthSel = 3'bxxx;
+ case(inputPhy_mod)
+ 2'b00 : begin
+ inputPhy_widthSel = 3'b000;
+ end
+ 2'b01 : begin
+ inputPhy_widthSel = 3'b001;
+ end
+ 2'b10 : begin
+ inputPhy_widthSel = 3'b010;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_SpiXdrMasterCtrl_l863 = (! fsm_state_delay_2);
+ always @(*) begin
+ inputPhy_dataRead = 4'bxxxx;
+ case(inputPhy_mod)
+ 2'b00 : begin
+ inputPhy_dataRead[0] = _zz_inputPhy_dataRead[1];
+ end
+ 2'b01 : begin
+ inputPhy_dataRead[0] = _zz_inputPhy_dataRead_1[0];
+ inputPhy_dataRead[1] = _zz_inputPhy_dataRead_2[1];
+ end
+ 2'b10 : begin
+ inputPhy_dataRead[0] = _zz_inputPhy_dataRead_3[0];
+ inputPhy_dataRead[1] = _zz_inputPhy_dataRead_4[1];
+ inputPhy_dataRead[2] = _zz_inputPhy_dataRead_5[2];
+ inputPhy_dataRead[3] = _zz_inputPhy_dataRead_6[3];
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign io_rsp_valid = inputPhy_readDone;
+ assign io_rsp_payload_data = inputPhy_bufferNext;
+ always @(posedge clk) begin
+ timer_counter <= (timer_counter + 12'h001);
+ if(timer_reset) begin
+ timer_counter <= 12'h0;
+ end
+ io_config_mod_delay_1 <= io_config_mod;
+ inputPhy_mod <= io_config_mod_delay_1;
+ fsm_state_delay_1 <= fsm_state;
+ fsm_state_delay_2 <= fsm_state_delay_1;
+ if(when_SpiXdrMasterCtrl_l863) begin
+ inputPhy_dataReadBuffer <= {io_spi_data_3_read[0],{io_spi_data_2_read[0],{io_spi_data_1_read[0],io_spi_data_0_read[0]}}};
+ end
+ case(inputPhy_widthSel)
+ 3'b000 : begin
+ if(inputPhy_readFill) begin
+ inputPhy_buffer <= inputPhy_bufferNext[6:0];
+ end
+ end
+ 3'b001 : begin
+ if(inputPhy_readFill) begin
+ inputPhy_buffer <= inputPhy_bufferNext[6:0];
+ end
+ end
+ 3'b010 : begin
+ if(inputPhy_readFill) begin
+ inputPhy_buffer <= inputPhy_bufferNext[6:0];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ fsm_state <= 1'b0;
+ fsm_counter <= 3'b000;
+ fsm_ss <= 4'b0000;
+ fsm_readFill_delay_1 <= 1'b0;
+ inputPhy_readFill <= 1'b0;
+ fsm_readDone_delay_1 <= 1'b0;
+ inputPhy_readDone <= 1'b0;
+ end else begin
+ if(io_cmd_valid) begin
+ if(when_SpiXdrMasterCtrl_l741) begin
+ if(timer_sclkToggleHit) begin
+ fsm_state <= (! fsm_state);
+ end
+ if(when_SpiXdrMasterCtrl_l751) begin
+ fsm_counter <= fsm_counterPlus;
+ if(when_SpiXdrMasterCtrl_l753) begin
+ fsm_state <= 1'b0;
+ end
+ end
+ end else begin
+ if(when_SpiXdrMasterCtrl_l760) begin
+ fsm_ss[io_cmd_payload_data[1 : 0]] <= 1'b1;
+ end else begin
+ if(when_SpiXdrMasterCtrl_l766) begin
+ if(timer_ss_holdHit) begin
+ fsm_state <= 1'b1;
+ end
+ end else begin
+ fsm_ss[io_cmd_payload_data[1 : 0]] <= 1'b0;
+ end
+ end
+ end
+ end
+ if(when_SpiXdrMasterCtrl_l783) begin
+ fsm_state <= 1'b0;
+ fsm_counter <= 3'b000;
+ end
+ fsm_readFill_delay_1 <= fsm_readFill;
+ inputPhy_readFill <= fsm_readFill_delay_1;
+ fsm_readDone_delay_1 <= fsm_readDone;
+ inputPhy_readDone <= fsm_readDone_delay_1;
+ end
+ end
+
+
+endmodule
+
+//Axi4PeripheralStreamFifo_1 replaced by Axi4PeripheralStreamFifo
+
+module Axi4PeripheralStreamFifo (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [7:0] io_push_payload,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [7:0] io_pop_payload,
+ input wire io_flush,
+ output wire [7:0] io_occupancy,
+ output wire [7:0] io_availability,
+ input wire clk,
+ input wire reset
+);
+
+ reg [7:0] logic_ram_spinal_port1;
+ reg _zz_1;
+ wire logic_ptr_doPush;
+ wire logic_ptr_doPop;
+ wire logic_ptr_full;
+ wire logic_ptr_empty;
+ reg [7:0] logic_ptr_push;
+ reg [7:0] logic_ptr_pop;
+ wire [7:0] logic_ptr_occupancy;
+ wire [7:0] logic_ptr_popOnIo;
+ wire when_Stream_l1248;
+ reg logic_ptr_wentUp;
+ wire io_push_fire;
+ wire logic_push_onRam_write_valid;
+ wire [6:0] logic_push_onRam_write_payload_address;
+ wire [7:0] logic_push_onRam_write_payload_data;
+ wire logic_pop_addressGen_valid;
+ reg logic_pop_addressGen_ready;
+ wire [6:0] logic_pop_addressGen_payload;
+ wire logic_pop_addressGen_fire;
+ wire logic_pop_sync_readArbitation_valid;
+ wire logic_pop_sync_readArbitation_ready;
+ wire [6:0] logic_pop_sync_readArbitation_payload;
+ reg logic_pop_addressGen_rValid;
+ reg [6:0] logic_pop_addressGen_rData;
+ wire when_Stream_l375;
+ wire logic_pop_sync_readPort_cmd_valid;
+ wire [6:0] logic_pop_sync_readPort_cmd_payload;
+ wire [7:0] logic_pop_sync_readPort_rsp;
+ wire logic_pop_sync_readArbitation_translated_valid;
+ wire logic_pop_sync_readArbitation_translated_ready;
+ wire [7:0] logic_pop_sync_readArbitation_translated_payload;
+ wire logic_pop_sync_readArbitation_fire;
+ reg [7:0] logic_pop_sync_popReg;
+ reg [7:0] logic_ram [0:127];
+
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_push_onRam_write_payload_address] <= logic_push_onRam_write_payload_data;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_sync_readPort_cmd_valid) begin
+ logic_ram_spinal_port1 <= logic_ram[logic_pop_sync_readPort_cmd_payload];
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_push_onRam_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l1248 = (logic_ptr_doPush != logic_ptr_doPop);
+ assign logic_ptr_full = (((logic_ptr_push ^ logic_ptr_popOnIo) ^ 8'h80) == 8'h0);
+ assign logic_ptr_empty = (logic_ptr_push == logic_ptr_pop);
+ assign logic_ptr_occupancy = (logic_ptr_push - logic_ptr_popOnIo);
+ assign io_push_ready = (! logic_ptr_full);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign logic_ptr_doPush = io_push_fire;
+ assign logic_push_onRam_write_valid = io_push_fire;
+ assign logic_push_onRam_write_payload_address = logic_ptr_push[6:0];
+ assign logic_push_onRam_write_payload_data = io_push_payload;
+ assign logic_pop_addressGen_valid = (! logic_ptr_empty);
+ assign logic_pop_addressGen_payload = logic_ptr_pop[6:0];
+ assign logic_pop_addressGen_fire = (logic_pop_addressGen_valid && logic_pop_addressGen_ready);
+ assign logic_ptr_doPop = logic_pop_addressGen_fire;
+ always @(*) begin
+ logic_pop_addressGen_ready = logic_pop_sync_readArbitation_ready;
+ if(when_Stream_l375) begin
+ logic_pop_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! logic_pop_sync_readArbitation_valid);
+ assign logic_pop_sync_readArbitation_valid = logic_pop_addressGen_rValid;
+ assign logic_pop_sync_readArbitation_payload = logic_pop_addressGen_rData;
+ assign logic_pop_sync_readPort_rsp = logic_ram_spinal_port1;
+ assign logic_pop_sync_readPort_cmd_valid = logic_pop_addressGen_fire;
+ assign logic_pop_sync_readPort_cmd_payload = logic_pop_addressGen_payload;
+ assign logic_pop_sync_readArbitation_translated_valid = logic_pop_sync_readArbitation_valid;
+ assign logic_pop_sync_readArbitation_ready = logic_pop_sync_readArbitation_translated_ready;
+ assign logic_pop_sync_readArbitation_translated_payload = logic_pop_sync_readPort_rsp;
+ assign io_pop_valid = logic_pop_sync_readArbitation_translated_valid;
+ assign logic_pop_sync_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload = logic_pop_sync_readArbitation_translated_payload;
+ assign logic_pop_sync_readArbitation_fire = (logic_pop_sync_readArbitation_valid && logic_pop_sync_readArbitation_ready);
+ assign logic_ptr_popOnIo = logic_pop_sync_popReg;
+ assign io_occupancy = logic_ptr_occupancy;
+ assign io_availability = (8'h80 - logic_ptr_occupancy);
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_ptr_push <= 8'h0;
+ logic_ptr_pop <= 8'h0;
+ logic_ptr_wentUp <= 1'b0;
+ logic_pop_addressGen_rValid <= 1'b0;
+ logic_pop_sync_popReg <= 8'h0;
+ end else begin
+ if(when_Stream_l1248) begin
+ logic_ptr_wentUp <= logic_ptr_doPush;
+ end
+ if(io_flush) begin
+ logic_ptr_wentUp <= 1'b0;
+ end
+ if(logic_ptr_doPush) begin
+ logic_ptr_push <= (logic_ptr_push + 8'h01);
+ end
+ if(logic_ptr_doPop) begin
+ logic_ptr_pop <= (logic_ptr_pop + 8'h01);
+ end
+ if(io_flush) begin
+ logic_ptr_push <= 8'h0;
+ logic_ptr_pop <= 8'h0;
+ end
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rValid <= logic_pop_addressGen_valid;
+ end
+ if(io_flush) begin
+ logic_pop_addressGen_rValid <= 1'b0;
+ end
+ if(logic_pop_sync_readArbitation_fire) begin
+ logic_pop_sync_popReg <= logic_ptr_pop;
+ end
+ if(io_flush) begin
+ logic_pop_sync_popReg <= 8'h0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rData <= logic_pop_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralUartCtrl (
+ input wire [2:0] io_config_frame_dataLength,
+ input wire [0:0] io_config_frame_stop,
+ input wire [1:0] io_config_frame_parity,
+ input wire [19:0] io_config_clockDivider,
+ input wire io_write_valid,
+ output reg io_write_ready,
+ input wire [7:0] io_write_payload,
+ output wire io_read_valid,
+ input wire io_read_ready,
+ output wire [7:0] io_read_payload,
+ output wire io_uart_txd,
+ input wire io_uart_rxd,
+ output wire io_readError,
+ input wire io_writeBreak,
+ output wire io_readBreak,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4PeripheralUartStopType_ONE = 1'd0;
+ localparam Axi4PeripheralUartStopType_TWO = 1'd1;
+ localparam Axi4PeripheralUartParityType_NONE = 2'd0;
+ localparam Axi4PeripheralUartParityType_EVEN = 2'd1;
+ localparam Axi4PeripheralUartParityType_ODD = 2'd2;
+
+ wire tx_io_write_ready;
+ wire tx_io_txd;
+ wire rx_io_read_valid;
+ wire [7:0] rx_io_read_payload;
+ wire rx_io_rts;
+ wire rx_io_error;
+ wire rx_io_break;
+ reg [19:0] clockDivider_counter;
+ wire clockDivider_tick;
+ reg clockDivider_tickReg;
+ reg io_write_thrown_valid;
+ wire io_write_thrown_ready;
+ wire [7:0] io_write_thrown_payload;
+ `ifndef SYNTHESIS
+ reg [23:0] io_config_frame_stop_string;
+ reg [31:0] io_config_frame_parity_string;
+ `endif
+
+
+ Axi4PeripheralUartCtrlTx tx (
+ .io_configFrame_dataLength (io_config_frame_dataLength[2:0]), //i
+ .io_configFrame_stop (io_config_frame_stop ), //i
+ .io_configFrame_parity (io_config_frame_parity[1:0] ), //i
+ .io_samplingTick (clockDivider_tickReg ), //i
+ .io_write_valid (io_write_thrown_valid ), //i
+ .io_write_ready (tx_io_write_ready ), //o
+ .io_write_payload (io_write_thrown_payload[7:0] ), //i
+ .io_cts (1'b0 ), //i
+ .io_txd (tx_io_txd ), //o
+ .io_break (io_writeBreak ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Axi4PeripheralUartCtrlRx rx (
+ .io_configFrame_dataLength (io_config_frame_dataLength[2:0]), //i
+ .io_configFrame_stop (io_config_frame_stop ), //i
+ .io_configFrame_parity (io_config_frame_parity[1:0] ), //i
+ .io_samplingTick (clockDivider_tickReg ), //i
+ .io_read_valid (rx_io_read_valid ), //o
+ .io_read_ready (io_read_ready ), //i
+ .io_read_payload (rx_io_read_payload[7:0] ), //o
+ .io_rxd (io_uart_rxd ), //i
+ .io_rts (rx_io_rts ), //o
+ .io_error (rx_io_error ), //o
+ .io_break (rx_io_break ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(io_config_frame_stop)
+ Axi4PeripheralUartStopType_ONE : io_config_frame_stop_string = "ONE";
+ Axi4PeripheralUartStopType_TWO : io_config_frame_stop_string = "TWO";
+ default : io_config_frame_stop_string = "???";
+ endcase
+ end
+ always @(*) begin
+ case(io_config_frame_parity)
+ Axi4PeripheralUartParityType_NONE : io_config_frame_parity_string = "NONE";
+ Axi4PeripheralUartParityType_EVEN : io_config_frame_parity_string = "EVEN";
+ Axi4PeripheralUartParityType_ODD : io_config_frame_parity_string = "ODD ";
+ default : io_config_frame_parity_string = "????";
+ endcase
+ end
+ `endif
+
+ assign clockDivider_tick = (clockDivider_counter == 20'h0);
+ always @(*) begin
+ io_write_thrown_valid = io_write_valid;
+ if(rx_io_break) begin
+ io_write_thrown_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ io_write_ready = io_write_thrown_ready;
+ if(rx_io_break) begin
+ io_write_ready = 1'b1;
+ end
+ end
+
+ assign io_write_thrown_payload = io_write_payload;
+ assign io_write_thrown_ready = tx_io_write_ready;
+ assign io_read_valid = rx_io_read_valid;
+ assign io_read_payload = rx_io_read_payload;
+ assign io_uart_txd = tx_io_txd;
+ assign io_readError = rx_io_error;
+ assign io_readBreak = rx_io_break;
+ always @(posedge clk) begin
+ if(reset) begin
+ clockDivider_counter <= 20'h0;
+ clockDivider_tickReg <= 1'b0;
+ end else begin
+ clockDivider_tickReg <= clockDivider_tick;
+ clockDivider_counter <= (clockDivider_counter - 20'h00001);
+ if(clockDivider_tick) begin
+ clockDivider_counter <= io_config_clockDivider;
+ end
+ end
+ end
+
+
+endmodule
+
+//Axi4PeripheralBufferCC_2 replaced by Axi4PeripheralBufferCC_1
+
+module Axi4PeripheralBufferCC_1 (
+ input wire io_dataIn,
+ output wire io_dataOut,
+ input wire clk,
+ input wire reset
+);
+
+ (* async_reg = "true" *) reg buffers_0;
+ (* async_reg = "true" *) reg buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge clk) begin
+ if(reset) begin
+ buffers_0 <= 1'b1;
+ buffers_1 <= 1'b1;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+module Axi4PeripheralUartCtrlRx (
+ input wire [2:0] io_configFrame_dataLength,
+ input wire [0:0] io_configFrame_stop,
+ input wire [1:0] io_configFrame_parity,
+ input wire io_samplingTick,
+ output wire io_read_valid,
+ input wire io_read_ready,
+ output wire [7:0] io_read_payload,
+ input wire io_rxd,
+ output wire io_rts,
+ output reg io_error,
+ output wire io_break,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4PeripheralUartStopType_ONE = 1'd0;
+ localparam Axi4PeripheralUartStopType_TWO = 1'd1;
+ localparam Axi4PeripheralUartParityType_NONE = 2'd0;
+ localparam Axi4PeripheralUartParityType_EVEN = 2'd1;
+ localparam Axi4PeripheralUartParityType_ODD = 2'd2;
+ localparam Axi4PeripheralUartCtrlRxState_IDLE = 3'd0;
+ localparam Axi4PeripheralUartCtrlRxState_START = 3'd1;
+ localparam Axi4PeripheralUartCtrlRxState_DATA = 3'd2;
+ localparam Axi4PeripheralUartCtrlRxState_PARITY = 3'd3;
+ localparam Axi4PeripheralUartCtrlRxState_STOP = 3'd4;
+
+ wire io_rxd_buffercc_io_dataOut;
+ wire _zz_sampler_value;
+ wire _zz_sampler_value_1;
+ wire _zz_sampler_value_2;
+ wire _zz_sampler_value_3;
+ wire _zz_sampler_value_4;
+ wire _zz_sampler_value_5;
+ wire _zz_sampler_value_6;
+ wire [2:0] _zz_when_UartCtrlRx_l139;
+ wire [0:0] _zz_when_UartCtrlRx_l139_1;
+ reg _zz_io_rts;
+ wire sampler_synchroniser;
+ wire sampler_samples_0;
+ reg sampler_samples_1;
+ reg sampler_samples_2;
+ reg sampler_samples_3;
+ reg sampler_samples_4;
+ reg sampler_value;
+ reg sampler_tick;
+ reg [2:0] bitTimer_counter;
+ reg bitTimer_tick;
+ wire when_UartCtrlRx_l43;
+ reg [2:0] bitCounter_value;
+ reg [6:0] break_counter;
+ wire break_valid;
+ wire when_UartCtrlRx_l69;
+ reg [2:0] stateMachine_state;
+ reg stateMachine_parity;
+ reg [7:0] stateMachine_shifter;
+ reg stateMachine_validReg;
+ wire when_UartCtrlRx_l93;
+ wire when_UartCtrlRx_l103;
+ wire when_UartCtrlRx_l111;
+ wire when_UartCtrlRx_l113;
+ wire when_UartCtrlRx_l125;
+ wire when_UartCtrlRx_l136;
+ wire when_UartCtrlRx_l139;
+ `ifndef SYNTHESIS
+ reg [23:0] io_configFrame_stop_string;
+ reg [31:0] io_configFrame_parity_string;
+ reg [47:0] stateMachine_state_string;
+ `endif
+
+
+ assign _zz_when_UartCtrlRx_l139_1 = ((io_configFrame_stop == Axi4PeripheralUartStopType_ONE) ? 1'b0 : 1'b1);
+ assign _zz_when_UartCtrlRx_l139 = {2'd0, _zz_when_UartCtrlRx_l139_1};
+ assign _zz_sampler_value = ((((1'b0 || ((_zz_sampler_value_1 && sampler_samples_1) && sampler_samples_2)) || (((_zz_sampler_value_2 && sampler_samples_0) && sampler_samples_1) && sampler_samples_3)) || (((1'b1 && sampler_samples_0) && sampler_samples_2) && sampler_samples_3)) || (((1'b1 && sampler_samples_1) && sampler_samples_2) && sampler_samples_3));
+ assign _zz_sampler_value_3 = (((1'b1 && sampler_samples_0) && sampler_samples_1) && sampler_samples_4);
+ assign _zz_sampler_value_4 = ((1'b1 && sampler_samples_0) && sampler_samples_2);
+ assign _zz_sampler_value_5 = (1'b1 && sampler_samples_1);
+ assign _zz_sampler_value_6 = 1'b1;
+ assign _zz_sampler_value_1 = (1'b1 && sampler_samples_0);
+ assign _zz_sampler_value_2 = 1'b1;
+ (* keep_hierarchy = "TRUE" *) Axi4PeripheralBufferCC io_rxd_buffercc (
+ .io_dataIn (io_rxd ), //i
+ .io_dataOut (io_rxd_buffercc_io_dataOut), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(io_configFrame_stop)
+ Axi4PeripheralUartStopType_ONE : io_configFrame_stop_string = "ONE";
+ Axi4PeripheralUartStopType_TWO : io_configFrame_stop_string = "TWO";
+ default : io_configFrame_stop_string = "???";
+ endcase
+ end
+ always @(*) begin
+ case(io_configFrame_parity)
+ Axi4PeripheralUartParityType_NONE : io_configFrame_parity_string = "NONE";
+ Axi4PeripheralUartParityType_EVEN : io_configFrame_parity_string = "EVEN";
+ Axi4PeripheralUartParityType_ODD : io_configFrame_parity_string = "ODD ";
+ default : io_configFrame_parity_string = "????";
+ endcase
+ end
+ always @(*) begin
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlRxState_IDLE : stateMachine_state_string = "IDLE ";
+ Axi4PeripheralUartCtrlRxState_START : stateMachine_state_string = "START ";
+ Axi4PeripheralUartCtrlRxState_DATA : stateMachine_state_string = "DATA ";
+ Axi4PeripheralUartCtrlRxState_PARITY : stateMachine_state_string = "PARITY";
+ Axi4PeripheralUartCtrlRxState_STOP : stateMachine_state_string = "STOP ";
+ default : stateMachine_state_string = "??????";
+ endcase
+ end
+ `endif
+
+ always @(*) begin
+ io_error = 1'b0;
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlRxState_IDLE : begin
+ end
+ Axi4PeripheralUartCtrlRxState_START : begin
+ end
+ Axi4PeripheralUartCtrlRxState_DATA : begin
+ end
+ Axi4PeripheralUartCtrlRxState_PARITY : begin
+ if(bitTimer_tick) begin
+ if(!when_UartCtrlRx_l125) begin
+ io_error = 1'b1;
+ end
+ end
+ end
+ default : begin
+ if(bitTimer_tick) begin
+ if(when_UartCtrlRx_l136) begin
+ io_error = 1'b1;
+ end
+ end
+ end
+ endcase
+ end
+
+ assign io_rts = _zz_io_rts;
+ assign sampler_synchroniser = io_rxd_buffercc_io_dataOut;
+ assign sampler_samples_0 = sampler_synchroniser;
+ always @(*) begin
+ bitTimer_tick = 1'b0;
+ if(sampler_tick) begin
+ if(when_UartCtrlRx_l43) begin
+ bitTimer_tick = 1'b1;
+ end
+ end
+ end
+
+ assign when_UartCtrlRx_l43 = (bitTimer_counter == 3'b000);
+ assign break_valid = (break_counter == 7'h68);
+ assign when_UartCtrlRx_l69 = (io_samplingTick && (! break_valid));
+ assign io_break = break_valid;
+ assign io_read_valid = stateMachine_validReg;
+ assign when_UartCtrlRx_l93 = ((sampler_tick && (! sampler_value)) && (! break_valid));
+ assign when_UartCtrlRx_l103 = (sampler_value == 1'b1);
+ assign when_UartCtrlRx_l111 = (bitCounter_value == io_configFrame_dataLength);
+ assign when_UartCtrlRx_l113 = (io_configFrame_parity == Axi4PeripheralUartParityType_NONE);
+ assign when_UartCtrlRx_l125 = (stateMachine_parity == sampler_value);
+ assign when_UartCtrlRx_l136 = (! sampler_value);
+ assign when_UartCtrlRx_l139 = (bitCounter_value == _zz_when_UartCtrlRx_l139);
+ assign io_read_payload = stateMachine_shifter;
+ always @(posedge clk) begin
+ if(reset) begin
+ _zz_io_rts <= 1'b0;
+ sampler_samples_1 <= 1'b1;
+ sampler_samples_2 <= 1'b1;
+ sampler_samples_3 <= 1'b1;
+ sampler_samples_4 <= 1'b1;
+ sampler_value <= 1'b1;
+ sampler_tick <= 1'b0;
+ break_counter <= 7'h0;
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_IDLE;
+ stateMachine_validReg <= 1'b0;
+ end else begin
+ _zz_io_rts <= (! io_read_ready);
+ if(io_samplingTick) begin
+ sampler_samples_1 <= sampler_samples_0;
+ end
+ if(io_samplingTick) begin
+ sampler_samples_2 <= sampler_samples_1;
+ end
+ if(io_samplingTick) begin
+ sampler_samples_3 <= sampler_samples_2;
+ end
+ if(io_samplingTick) begin
+ sampler_samples_4 <= sampler_samples_3;
+ end
+ sampler_value <= ((((((_zz_sampler_value || _zz_sampler_value_3) || (_zz_sampler_value_4 && sampler_samples_4)) || ((_zz_sampler_value_5 && sampler_samples_2) && sampler_samples_4)) || (((_zz_sampler_value_6 && sampler_samples_0) && sampler_samples_3) && sampler_samples_4)) || (((1'b1 && sampler_samples_1) && sampler_samples_3) && sampler_samples_4)) || (((1'b1 && sampler_samples_2) && sampler_samples_3) && sampler_samples_4));
+ sampler_tick <= io_samplingTick;
+ if(sampler_value) begin
+ break_counter <= 7'h0;
+ end else begin
+ if(when_UartCtrlRx_l69) begin
+ break_counter <= (break_counter + 7'h01);
+ end
+ end
+ stateMachine_validReg <= 1'b0;
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlRxState_IDLE : begin
+ if(when_UartCtrlRx_l93) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_START;
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_START : begin
+ if(bitTimer_tick) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_DATA;
+ if(when_UartCtrlRx_l103) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_IDLE;
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_DATA : begin
+ if(bitTimer_tick) begin
+ if(when_UartCtrlRx_l111) begin
+ if(when_UartCtrlRx_l113) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_STOP;
+ stateMachine_validReg <= 1'b1;
+ end else begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_PARITY;
+ end
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_PARITY : begin
+ if(bitTimer_tick) begin
+ if(when_UartCtrlRx_l125) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_STOP;
+ stateMachine_validReg <= 1'b1;
+ end else begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_IDLE;
+ end
+ end
+ end
+ default : begin
+ if(bitTimer_tick) begin
+ if(when_UartCtrlRx_l136) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_IDLE;
+ end else begin
+ if(when_UartCtrlRx_l139) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlRxState_IDLE;
+ end
+ end
+ end
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(sampler_tick) begin
+ bitTimer_counter <= (bitTimer_counter - 3'b001);
+ end
+ if(bitTimer_tick) begin
+ bitCounter_value <= (bitCounter_value + 3'b001);
+ end
+ if(bitTimer_tick) begin
+ stateMachine_parity <= (stateMachine_parity ^ sampler_value);
+ end
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlRxState_IDLE : begin
+ if(when_UartCtrlRx_l93) begin
+ bitTimer_counter <= 3'b010;
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_START : begin
+ if(bitTimer_tick) begin
+ bitCounter_value <= 3'b000;
+ stateMachine_parity <= (io_configFrame_parity == Axi4PeripheralUartParityType_ODD);
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_DATA : begin
+ if(bitTimer_tick) begin
+ stateMachine_shifter[bitCounter_value] <= sampler_value;
+ if(when_UartCtrlRx_l111) begin
+ bitCounter_value <= 3'b000;
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlRxState_PARITY : begin
+ if(bitTimer_tick) begin
+ bitCounter_value <= 3'b000;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+
+endmodule
+
+module Axi4PeripheralUartCtrlTx (
+ input wire [2:0] io_configFrame_dataLength,
+ input wire [0:0] io_configFrame_stop,
+ input wire [1:0] io_configFrame_parity,
+ input wire io_samplingTick,
+ input wire io_write_valid,
+ output reg io_write_ready,
+ input wire [7:0] io_write_payload,
+ input wire io_cts,
+ output wire io_txd,
+ input wire io_break,
+ input wire clk,
+ input wire reset
+);
+ localparam Axi4PeripheralUartStopType_ONE = 1'd0;
+ localparam Axi4PeripheralUartStopType_TWO = 1'd1;
+ localparam Axi4PeripheralUartParityType_NONE = 2'd0;
+ localparam Axi4PeripheralUartParityType_EVEN = 2'd1;
+ localparam Axi4PeripheralUartParityType_ODD = 2'd2;
+ localparam Axi4PeripheralUartCtrlTxState_IDLE = 3'd0;
+ localparam Axi4PeripheralUartCtrlTxState_START = 3'd1;
+ localparam Axi4PeripheralUartCtrlTxState_DATA = 3'd2;
+ localparam Axi4PeripheralUartCtrlTxState_PARITY = 3'd3;
+ localparam Axi4PeripheralUartCtrlTxState_STOP = 3'd4;
+
+ wire [2:0] _zz_clockDivider_counter_valueNext;
+ wire [0:0] _zz_clockDivider_counter_valueNext_1;
+ wire [2:0] _zz_when_UartCtrlTx_l93;
+ wire [0:0] _zz_when_UartCtrlTx_l93_1;
+ reg clockDivider_counter_willIncrement;
+ wire clockDivider_counter_willClear;
+ reg [2:0] clockDivider_counter_valueNext;
+ reg [2:0] clockDivider_counter_value;
+ wire clockDivider_counter_willOverflowIfInc;
+ wire clockDivider_counter_willOverflow;
+ reg [2:0] tickCounter_value;
+ reg [2:0] stateMachine_state;
+ reg stateMachine_parity;
+ reg stateMachine_txd;
+ wire when_UartCtrlTx_l58;
+ wire when_UartCtrlTx_l73;
+ wire when_UartCtrlTx_l76;
+ wire when_UartCtrlTx_l93;
+ wire [2:0] _zz_stateMachine_state;
+ reg _zz_io_txd;
+ `ifndef SYNTHESIS
+ reg [23:0] io_configFrame_stop_string;
+ reg [31:0] io_configFrame_parity_string;
+ reg [47:0] stateMachine_state_string;
+ reg [47:0] _zz_stateMachine_state_string;
+ `endif
+
+
+ assign _zz_clockDivider_counter_valueNext_1 = clockDivider_counter_willIncrement;
+ assign _zz_clockDivider_counter_valueNext = {2'd0, _zz_clockDivider_counter_valueNext_1};
+ assign _zz_when_UartCtrlTx_l93_1 = ((io_configFrame_stop == Axi4PeripheralUartStopType_ONE) ? 1'b0 : 1'b1);
+ assign _zz_when_UartCtrlTx_l93 = {2'd0, _zz_when_UartCtrlTx_l93_1};
+ `ifndef SYNTHESIS
+ always @(*) begin
+ case(io_configFrame_stop)
+ Axi4PeripheralUartStopType_ONE : io_configFrame_stop_string = "ONE";
+ Axi4PeripheralUartStopType_TWO : io_configFrame_stop_string = "TWO";
+ default : io_configFrame_stop_string = "???";
+ endcase
+ end
+ always @(*) begin
+ case(io_configFrame_parity)
+ Axi4PeripheralUartParityType_NONE : io_configFrame_parity_string = "NONE";
+ Axi4PeripheralUartParityType_EVEN : io_configFrame_parity_string = "EVEN";
+ Axi4PeripheralUartParityType_ODD : io_configFrame_parity_string = "ODD ";
+ default : io_configFrame_parity_string = "????";
+ endcase
+ end
+ always @(*) begin
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : stateMachine_state_string = "IDLE ";
+ Axi4PeripheralUartCtrlTxState_START : stateMachine_state_string = "START ";
+ Axi4PeripheralUartCtrlTxState_DATA : stateMachine_state_string = "DATA ";
+ Axi4PeripheralUartCtrlTxState_PARITY : stateMachine_state_string = "PARITY";
+ Axi4PeripheralUartCtrlTxState_STOP : stateMachine_state_string = "STOP ";
+ default : stateMachine_state_string = "??????";
+ endcase
+ end
+ always @(*) begin
+ case(_zz_stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : _zz_stateMachine_state_string = "IDLE ";
+ Axi4PeripheralUartCtrlTxState_START : _zz_stateMachine_state_string = "START ";
+ Axi4PeripheralUartCtrlTxState_DATA : _zz_stateMachine_state_string = "DATA ";
+ Axi4PeripheralUartCtrlTxState_PARITY : _zz_stateMachine_state_string = "PARITY";
+ Axi4PeripheralUartCtrlTxState_STOP : _zz_stateMachine_state_string = "STOP ";
+ default : _zz_stateMachine_state_string = "??????";
+ endcase
+ end
+ `endif
+
+ always @(*) begin
+ clockDivider_counter_willIncrement = 1'b0;
+ if(io_samplingTick) begin
+ clockDivider_counter_willIncrement = 1'b1;
+ end
+ end
+
+ assign clockDivider_counter_willClear = 1'b0;
+ assign clockDivider_counter_willOverflowIfInc = (clockDivider_counter_value == 3'b111);
+ assign clockDivider_counter_willOverflow = (clockDivider_counter_willOverflowIfInc && clockDivider_counter_willIncrement);
+ always @(*) begin
+ clockDivider_counter_valueNext = (clockDivider_counter_value + _zz_clockDivider_counter_valueNext);
+ if(clockDivider_counter_willClear) begin
+ clockDivider_counter_valueNext = 3'b000;
+ end
+ end
+
+ always @(*) begin
+ stateMachine_txd = 1'b1;
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : begin
+ end
+ Axi4PeripheralUartCtrlTxState_START : begin
+ stateMachine_txd = 1'b0;
+ end
+ Axi4PeripheralUartCtrlTxState_DATA : begin
+ stateMachine_txd = io_write_payload[tickCounter_value];
+ end
+ Axi4PeripheralUartCtrlTxState_PARITY : begin
+ stateMachine_txd = stateMachine_parity;
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ always @(*) begin
+ io_write_ready = io_break;
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : begin
+ end
+ Axi4PeripheralUartCtrlTxState_START : begin
+ end
+ Axi4PeripheralUartCtrlTxState_DATA : begin
+ if(clockDivider_counter_willOverflow) begin
+ if(when_UartCtrlTx_l73) begin
+ io_write_ready = 1'b1;
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_PARITY : begin
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_UartCtrlTx_l58 = ((io_write_valid && (! io_cts)) && clockDivider_counter_willOverflow);
+ assign when_UartCtrlTx_l73 = (tickCounter_value == io_configFrame_dataLength);
+ assign when_UartCtrlTx_l76 = (io_configFrame_parity == Axi4PeripheralUartParityType_NONE);
+ assign when_UartCtrlTx_l93 = (tickCounter_value == _zz_when_UartCtrlTx_l93);
+ assign _zz_stateMachine_state = (io_write_valid ? Axi4PeripheralUartCtrlTxState_START : Axi4PeripheralUartCtrlTxState_IDLE);
+ assign io_txd = _zz_io_txd;
+ always @(posedge clk) begin
+ if(reset) begin
+ clockDivider_counter_value <= 3'b000;
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_IDLE;
+ _zz_io_txd <= 1'b1;
+ end else begin
+ clockDivider_counter_value <= clockDivider_counter_valueNext;
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : begin
+ if(when_UartCtrlTx_l58) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_START;
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_START : begin
+ if(clockDivider_counter_willOverflow) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_DATA;
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_DATA : begin
+ if(clockDivider_counter_willOverflow) begin
+ if(when_UartCtrlTx_l73) begin
+ if(when_UartCtrlTx_l76) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_STOP;
+ end else begin
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_PARITY;
+ end
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_PARITY : begin
+ if(clockDivider_counter_willOverflow) begin
+ stateMachine_state <= Axi4PeripheralUartCtrlTxState_STOP;
+ end
+ end
+ default : begin
+ if(clockDivider_counter_willOverflow) begin
+ if(when_UartCtrlTx_l93) begin
+ stateMachine_state <= _zz_stateMachine_state;
+ end
+ end
+ end
+ endcase
+ _zz_io_txd <= (stateMachine_txd && (! io_break));
+ end
+ end
+
+ always @(posedge clk) begin
+ if(clockDivider_counter_willOverflow) begin
+ tickCounter_value <= (tickCounter_value + 3'b001);
+ end
+ if(clockDivider_counter_willOverflow) begin
+ stateMachine_parity <= (stateMachine_parity ^ stateMachine_txd);
+ end
+ case(stateMachine_state)
+ Axi4PeripheralUartCtrlTxState_IDLE : begin
+ end
+ Axi4PeripheralUartCtrlTxState_START : begin
+ if(clockDivider_counter_willOverflow) begin
+ stateMachine_parity <= (io_configFrame_parity == Axi4PeripheralUartParityType_ODD);
+ tickCounter_value <= 3'b000;
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_DATA : begin
+ if(clockDivider_counter_willOverflow) begin
+ if(when_UartCtrlTx_l73) begin
+ tickCounter_value <= 3'b000;
+ end
+ end
+ end
+ Axi4PeripheralUartCtrlTxState_PARITY : begin
+ if(clockDivider_counter_willOverflow) begin
+ tickCounter_value <= 3'b000;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+
+endmodule
+
+module Axi4PeripheralBufferCC (
+ input wire io_dataIn,
+ output wire io_dataOut,
+ input wire clk,
+ input wire reset
+);
+
+ (* async_reg = "true" *) reg buffers_0;
+ (* async_reg = "true" *) reg buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge clk) begin
+ if(reset) begin
+ buffers_0 <= 1'b0;
+ buffers_1 <= 1'b0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
diff --git a/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/source/peri_config b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/source/peri_config
new file mode 100644
index 0000000..571f0ba
--- /dev/null
+++ b/Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/source/peri_config
@@ -0,0 +1,8 @@
+--apbSlave name=io_apbSlave_0,address=0x100000,size=65536
+--uart name=system_uart_0_io,address=0x10000,interruptId=0
+--peripheralFrequency 200000000
+--PeripheralClock true
+--i2c name=system_i2c_0_io,address=0x20000,interruptId=6
+--watchdog name=system_watchdog,address=0x50000,interruptId=13,prescalerWidth=24,counters=2,countersWidth=16
+--spi name=system_spi_0_io,address=0x30000,interruptId=3,width=8,ssCount=4
+--gpio name=system_gpio_0_io,address=0x40000,width=4,interrupts="0->9;1->10"
diff --git a/Ti375C529_devkit/ip/gAXIM_2to1_switch/axi_interconnect.vh b/Ti375C529_devkit/ip/gAXIM_2to1_switch/axi_interconnect.vh
new file mode 100644
index 0000000..cf9993c
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIM_2to1_switch/axi_interconnect.vh
@@ -0,0 +1,2 @@
+localparam M_BASE_ADDR = {32'h41000000,32'h40000000,32'h30000000,32'h20000000,32'h11100000,32'h11000000,32'h10000000,32'h0};
+localparam M_ADDR_WIDTH = {32'd20,32'd24,32'd28,32'd28,32'd20,32'd12,32'd24,32'd32};
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch.v b/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch.v
new file mode 100644
index 0000000..35c79f3
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch.v
@@ -0,0 +1,1361 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 5.6
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+`define IP_UUID _ec96b3fb89244203bb74a6d5d477a76b
+`define IP_NAME_CONCAT(a,b) a``b
+`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
+module gAXIM_2to1_switch
+(
+ input rst_n,
+ input clk,
+ input [1:0] s_axi_awvalid,
+ input [63:0] s_axi_awaddr,
+ input [3:0] s_axi_awlock,
+ output [1:0] s_axi_awready,
+ input [1:0] s_axi_arvalid,
+ input [63:0] s_axi_araddr,
+ input [3:0] s_axi_arlock,
+ output [1:0] s_axi_arready,
+ input [1:0] s_axi_wvalid,
+ input [1:0] s_axi_wlast,
+ input [15:0] s_axi_wid,
+ input [1:0] s_axi_bready,
+ output [3:0] s_axi_bresp,
+ input [1:0] s_axi_rready,
+ output [15:0] s_axi_bid,
+ output [15:0] s_axi_rid,
+ input [255:0] s_axi_wdata,
+ output [255:0] s_axi_rdata,
+ output [3:0] s_axi_rresp,
+ output [1:0] s_axi_bvalid,
+ output [1:0] s_axi_rvalid,
+ output [1:0] s_axi_rlast,
+ input [31:0] s_axi_wstrb,
+ output [0:0] m_axi_awvalid,
+ output [31:0] m_axi_awaddr,
+ output [1:0] m_axi_awlock,
+ input [0:0] m_axi_awready,
+ output [0:0] m_axi_arvalid,
+ output [31:0] m_axi_araddr,
+ output [1:0] m_axi_arlock,
+ input [0:0] m_axi_arready,
+ output [0:0] m_axi_wvalid,
+ output [0:0] m_axi_wlast,
+ output [0:0] m_axi_bready,
+ input [1:0] m_axi_bresp,
+ output [0:0] m_axi_rready,
+ input [7:0] m_axi_bid,
+ input [7:0] m_axi_rid,
+ output [127:0] m_axi_wdata,
+ input [127:0] m_axi_rdata,
+ input [1:0] m_axi_rresp,
+ input [0:0] m_axi_bvalid,
+ input [0:0] m_axi_rvalid,
+ input [0:0] m_axi_rlast,
+ output [15:0] m_axi_wstrb,
+ input [0:0] m_axi_wready,
+ output [1:0] s_axi_wready,
+ input [5:0] s_axi_awprot,
+ input [7:0] s_axi_awcache,
+ input [7:0] s_axi_awqos,
+ input [5:0] s_axi_awuser,
+ input [7:0] s_axi_arqos,
+ input [7:0] s_axi_arcache,
+ output [2:0] m_axi_awprot,
+ input [15:0] s_axi_arid,
+ input [5:0] s_axi_arsize,
+ input [15:0] s_axi_arlen,
+ input [3:0] s_axi_arburst,
+ input [5:0] s_axi_arprot,
+ input [15:0] s_axi_awid,
+ input [3:0] s_axi_awburst,
+ input [15:0] s_axi_awlen,
+ input [5:0] s_axi_awsize,
+ output [7:0] m_axi_awid,
+ output [1:0] m_axi_awburst,
+ output [7:0] m_axi_awlen,
+ output [2:0] m_axi_awsize,
+ output [3:0] m_axi_awcache,
+ output [3:0] m_axi_awqos,
+ output [2:0] m_axi_awuser,
+ output [2:0] m_axi_arprot,
+ output [1:0] m_axi_arburst,
+ output [7:0] m_axi_arlen,
+ output [2:0] m_axi_arsize,
+ output [3:0] m_axi_arcache,
+ output [3:0] m_axi_arqos,
+ output [2:0] m_axi_aruser,
+ output [3:0] m_axi_awregion,
+ output [3:0] m_axi_arregion,
+ output [7:0] m_axi_arid,
+ output [2:0] m_axi_wuser,
+ input [2:0] m_axi_ruser,
+ input [2:0] m_axi_buser,
+ input [5:0] s_axi_aruser,
+ input [5:0] s_axi_wuser,
+ output [5:0] s_axi_buser,
+ output [5:0] s_axi_ruser
+);
+`IP_MODULE_NAME(efx_axi_interconnect)
+#(
+ .ARB_MODE ("ROUND_ROBIN_1"),
+ .S_PORTS (2),
+ .DATA_WIDTH (128),
+ .ADDR_WIDTH (32),
+ .M_PORTS (1),
+ .ID_WIDTH (8),
+ .USER_WIDTH (3),
+ .PROTOCOL ("AXI4")
+)
+u_efx_axi_interconnect
+(
+ .rst_n ( rst_n ),
+ .clk ( clk ),
+ .s_axi_awvalid ( s_axi_awvalid ),
+ .s_axi_awaddr ( s_axi_awaddr ),
+ .s_axi_awlock ( s_axi_awlock ),
+ .s_axi_awready ( s_axi_awready ),
+ .s_axi_arvalid ( s_axi_arvalid ),
+ .s_axi_araddr ( s_axi_araddr ),
+ .s_axi_arlock ( s_axi_arlock ),
+ .s_axi_arready ( s_axi_arready ),
+ .s_axi_wvalid ( s_axi_wvalid ),
+ .s_axi_wlast ( s_axi_wlast ),
+ .s_axi_wid ( s_axi_wid ),
+ .s_axi_bready ( s_axi_bready ),
+ .s_axi_bresp ( s_axi_bresp ),
+ .s_axi_rready ( s_axi_rready ),
+ .s_axi_bid ( s_axi_bid ),
+ .s_axi_rid ( s_axi_rid ),
+ .s_axi_wdata ( s_axi_wdata ),
+ .s_axi_rdata ( s_axi_rdata ),
+ .s_axi_rresp ( s_axi_rresp ),
+ .s_axi_bvalid ( s_axi_bvalid ),
+ .s_axi_rvalid ( s_axi_rvalid ),
+ .s_axi_rlast ( s_axi_rlast ),
+ .s_axi_wstrb ( s_axi_wstrb ),
+ .m_axi_awvalid ( m_axi_awvalid ),
+ .m_axi_awaddr ( m_axi_awaddr ),
+ .m_axi_awlock ( m_axi_awlock ),
+ .m_axi_awready ( m_axi_awready ),
+ .m_axi_arvalid ( m_axi_arvalid ),
+ .m_axi_araddr ( m_axi_araddr ),
+ .m_axi_arlock ( m_axi_arlock ),
+ .m_axi_arready ( m_axi_arready ),
+ .m_axi_wvalid ( m_axi_wvalid ),
+ .m_axi_wlast ( m_axi_wlast ),
+ .m_axi_bready ( m_axi_bready ),
+ .m_axi_bresp ( m_axi_bresp ),
+ .m_axi_rready ( m_axi_rready ),
+ .m_axi_bid ( m_axi_bid ),
+ .m_axi_rid ( m_axi_rid ),
+ .m_axi_wdata ( m_axi_wdata ),
+ .m_axi_rdata ( m_axi_rdata ),
+ .m_axi_rresp ( m_axi_rresp ),
+ .m_axi_bvalid ( m_axi_bvalid ),
+ .m_axi_rvalid ( m_axi_rvalid ),
+ .m_axi_rlast ( m_axi_rlast ),
+ .m_axi_wstrb ( m_axi_wstrb ),
+ .m_axi_wready ( m_axi_wready ),
+ .s_axi_wready ( s_axi_wready ),
+ .s_axi_awprot ( s_axi_awprot ),
+ .s_axi_awcache ( s_axi_awcache ),
+ .s_axi_awqos ( s_axi_awqos ),
+ .s_axi_awuser ( s_axi_awuser ),
+ .s_axi_arqos ( s_axi_arqos ),
+ .s_axi_arcache ( s_axi_arcache ),
+ .m_axi_awprot ( m_axi_awprot ),
+ .s_axi_arid ( s_axi_arid ),
+ .s_axi_arsize ( s_axi_arsize ),
+ .s_axi_arlen ( s_axi_arlen ),
+ .s_axi_arburst ( s_axi_arburst ),
+ .s_axi_arprot ( s_axi_arprot ),
+ .s_axi_awid ( s_axi_awid ),
+ .s_axi_awburst ( s_axi_awburst ),
+ .s_axi_awlen ( s_axi_awlen ),
+ .s_axi_awsize ( s_axi_awsize ),
+ .m_axi_awid ( m_axi_awid ),
+ .m_axi_awburst ( m_axi_awburst ),
+ .m_axi_awlen ( m_axi_awlen ),
+ .m_axi_awsize ( m_axi_awsize ),
+ .m_axi_awcache ( m_axi_awcache ),
+ .m_axi_awqos ( m_axi_awqos ),
+ .m_axi_awuser ( m_axi_awuser ),
+ .m_axi_arprot ( m_axi_arprot ),
+ .m_axi_arburst ( m_axi_arburst ),
+ .m_axi_arlen ( m_axi_arlen ),
+ .m_axi_arsize ( m_axi_arsize ),
+ .m_axi_arcache ( m_axi_arcache ),
+ .m_axi_arqos ( m_axi_arqos ),
+ .m_axi_aruser ( m_axi_aruser ),
+ .m_axi_awregion ( m_axi_awregion ),
+ .m_axi_arregion ( m_axi_arregion ),
+ .m_axi_arid ( m_axi_arid ),
+ .m_axi_wuser ( m_axi_wuser ),
+ .m_axi_ruser ( m_axi_ruser ),
+ .m_axi_buser ( m_axi_buser ),
+ .s_axi_aruser ( s_axi_aruser ),
+ .s_axi_wuser ( s_axi_wuser ),
+ .s_axi_buser ( s_axi_buser ),
+ .s_axi_ruser ( s_axi_ruser )
+);
+endmodule
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+BSiclTfEX07oDTPwvSfmqSh37gsGawnAkFDdQtfz2b2aPAbkkOIevgA5jmAEpk8Z
+jmjFoTAnEUNBHxHADHQl29GtYYLQLcTt1dvsb1L8xXXbyd41mZnW9qxR1yEXo2Km
+PmHE4/laDDFnEAn08I7oinDvTWN/plGfuIWWaEXC4z7ls9W1O5jNY2gj1ZC0oyT4
+iwzQ3cMmgvMMfqkgA6T8wMNFL1jvPdUxnuGh8qa0Q5zso+v2lpzszj4ytZLI8JZz
+ZeX/ipjz/4hUHkihXJPjFD+MetXdYJTpzRO3ZbxTOlyD1Ln8yDvo0qNPrgbzN9qq
+YropxHtLb22q5bZxY+vKMw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 9552 )
+`pragma protect data_block
++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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+module `IP_MODULE_NAME(efx_axi_interconnect) #(
+ parameter PROTOCOL = "AXI4",
+ parameter ARB_MODE = "PRIORITY",
+ parameter S_PORTS = 1,
+ parameter M_PORTS = 8,
+ parameter ID_WIDTH = 8,
+ parameter DATA_WIDTH = 32,
+ parameter USER_WIDTH = 3,
+ parameter ADDR_WIDTH = 32,
+ parameter M_REGIONS = 1,
+ parameter M_CONNECT_READ = {M_PORTS{{S_PORTS{1'b1}}}},
+ parameter M_CONNECT_WRITE = {M_PORTS{{S_PORTS{1'b1}}}},
+ parameter STRB_WIDTH = DATA_WIDTH/8
+) (
+ input wire clk,
+ input wire rst_n,
+ input wire [S_PORTS-1:0] s_axi_awvalid,
+ input wire [S_PORTS*ADDR_WIDTH-1:0] s_axi_awaddr,
+ input wire [S_PORTS*3-1:0] s_axi_awprot,
+ input wire [S_PORTS*ID_WIDTH-1:0] s_axi_awid,
+ input wire [S_PORTS*2-1:0] s_axi_awburst,
+ input wire [S_PORTS*8-1:0] s_axi_awlen,
+ input wire [S_PORTS*3-1:0] s_axi_awsize,
+ input wire [S_PORTS*4-1:0] s_axi_awcache,
+ input wire [S_PORTS*4-1:0] s_axi_awqos,
+ input wire [S_PORTS*USER_WIDTH-1:0] s_axi_awuser,
+ input wire [S_PORTS*2-1:0] s_axi_awlock,
+ output reg [S_PORTS-1:0] s_axi_awready,
+ input wire [S_PORTS-1:0] s_axi_wvalid,
+ input wire [S_PORTS*DATA_WIDTH-1:0] s_axi_wdata,
+ input wire [S_PORTS*STRB_WIDTH-1:0] s_axi_wstrb,
+ input wire [S_PORTS-1:0] s_axi_wlast,
+ input wire [S_PORTS*USER_WIDTH-1:0] s_axi_wuser,
+ input wire [S_PORTS*ID_WIDTH-1:0] s_axi_wid,
+ output wire [S_PORTS-1:0] s_axi_wready,
+ input wire [S_PORTS-1:0] s_axi_bready,
+ output wire [S_PORTS*2-1:0] s_axi_bresp,
+ output reg [S_PORTS-1:0] s_axi_bvalid,
+ output wire [S_PORTS*ID_WIDTH-1:0] s_axi_bid,
+ output wire [S_PORTS*USER_WIDTH-1:0] s_axi_buser,
+ input wire [S_PORTS-1:0] s_axi_arvalid,
+ input wire [S_PORTS*ADDR_WIDTH-1:0] s_axi_araddr,
+ input wire [S_PORTS*3-1:0] s_axi_arprot,
+ input wire [S_PORTS*ID_WIDTH-1:0] s_axi_arid,
+ input wire [S_PORTS*2-1:0] s_axi_arburst,
+ input wire [S_PORTS*8-1:0] s_axi_arlen,
+ input wire [S_PORTS*3-1:0] s_axi_arsize,
+ input wire [S_PORTS*4-1:0] s_axi_arcache,
+ input wire [S_PORTS*4-1:0] s_axi_arqos,
+ input wire [S_PORTS*USER_WIDTH-1:0] s_axi_aruser,
+ input wire [S_PORTS*2-1:0] s_axi_arlock,
+ output reg [S_PORTS-1:0] s_axi_arready,
+ input wire [S_PORTS-1:0] s_axi_rready,
+ output wire [S_PORTS*ID_WIDTH-1:0] s_axi_rid,
+ output wire [S_PORTS*DATA_WIDTH-1:0] s_axi_rdata,
+ output wire [S_PORTS*2-1:0] s_axi_rresp,
+ output wire [S_PORTS-1:0] s_axi_rvalid,
+ output wire [S_PORTS-1:0] s_axi_rlast,
+ output wire [S_PORTS*USER_WIDTH-1:0] s_axi_ruser,
+ output reg [M_PORTS-1:0] m_axi_awvalid,
+ output wire [M_PORTS*ID_WIDTH-1:0] m_axi_awid,
+ output wire [M_PORTS*2-1:0] m_axi_awburst,
+ output wire [M_PORTS*8-1:0] m_axi_awlen,
+ output wire [M_PORTS*3-1:0] m_axi_awsize,
+ output wire [M_PORTS*4-1:0] m_axi_awcache,
+ output wire [M_PORTS*4-1:0] m_axi_awqos,
+ output wire [M_PORTS*4-1:0] m_axi_awregion,
+ output wire [M_PORTS*USER_WIDTH-1:0] m_axi_awuser,
+ output wire [M_PORTS*ADDR_WIDTH-1:0] m_axi_awaddr,
+ output wire [M_PORTS*3-1:0] m_axi_awprot,
+ output wire [M_PORTS*2-1:0] m_axi_awlock,
+ input wire [M_PORTS-1:0] m_axi_awready,
+ output wire [M_PORTS*DATA_WIDTH-1:0] m_axi_wdata,
+ output wire [M_PORTS*STRB_WIDTH-1:0] m_axi_wstrb,
+ output wire [M_PORTS-1:0] m_axi_wvalid,
+ output wire [M_PORTS-1:0] m_axi_wlast,
+ output wire [M_PORTS*USER_WIDTH-1:0] m_axi_wuser,
+ output wire [M_PORTS*ID_WIDTH-1:0] m_axi_wid,
+ input wire [M_PORTS-1:0] m_axi_wready,
+ input wire [M_PORTS*2-1:0] m_axi_bresp,
+ input wire [M_PORTS-1:0] m_axi_bvalid,
+ input wire [M_PORTS*ID_WIDTH-1:0] m_axi_bid,
+ input wire [M_PORTS*USER_WIDTH-1:0] m_axi_buser,
+ output reg [M_PORTS-1:0] m_axi_bready,
+ output reg [M_PORTS-1:0] m_axi_arvalid,
+ output wire [M_PORTS*ID_WIDTH-1:0] m_axi_arid,
+ output wire [M_PORTS*2-1:0] m_axi_arburst,
+ output wire [M_PORTS*8-1:0] m_axi_arlen,
+ output wire [M_PORTS*3-1:0] m_axi_arsize,
+ output wire [M_PORTS*4-1:0] m_axi_arcache,
+ output wire [M_PORTS*4-1:0] m_axi_arqos,
+ output wire [M_PORTS*4-1:0] m_axi_arregion,
+ output wire [M_PORTS*USER_WIDTH-1:0] m_axi_aruser,
+ output wire [M_PORTS*ADDR_WIDTH-1:0] m_axi_araddr,
+ output wire [M_PORTS*3-1:0] m_axi_arprot,
+ output wire [M_PORTS*2-1:0] m_axi_arlock,
+ input wire [M_PORTS-1:0] m_axi_arready,
+ input wire [M_PORTS*ID_WIDTH-1:0] m_axi_rid,
+ input wire [M_PORTS*DATA_WIDTH-1:0] m_axi_rdata,
+ input wire [M_PORTS*2-1:0] m_axi_rresp,
+ input wire [M_PORTS-1:0] m_axi_rvalid,
+ input wire [M_PORTS-1:0] m_axi_rlast,
+ input wire [M_PORTS*USER_WIDTH-1:0] m_axi_ruser,
+ output wire [M_PORTS-1:0] m_axi_rready
+);
+`include "axi_interconnect.vh"
+parameter S_PORTS_WIDTH = clog2(S_PORTS);
+parameter M_PORTS_WIDTH = clog2(M_PORTS);
+parameter M_BASE_ADDR_INT = M_BASE_ADDR ? M_BASE_ADDR : calcBaseAddrs(0);
+parameter IDLE = 0,
+ PORT_GRANT = 1,
+ ADDR_DECODE = 2,
+ WR_FORWARD = 3,
+ WR_RESPONSE = 4,
+ RD_REQUEST = 5,
+ RD_RETURN = 6,
+ DRP_REQUEST = 7,
+ DRP_WAIT = 8,
+ END_WAIT = 9;
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+h798DEoPCCw6eC93sfxnz8ZJ5DmYibE3rGjjhE+YK5a3RIfjyfpuQmm+Qi6hiWsS
+h21ZC3p98i4VCoRgq9ttjdMjEUVk6R1INC59AvJ35jeq6cjGdiMiIPwnlnHEAIqa
+kQUAn5DZG6XDT0Q74iMGbdiR7Uqpt242DlxQT/RPahxewbF7bTMwF22aKiwUymVQ
+WL77YlV9D3RHdY6gVwH+r4vNibfPRFoNglrFWdWkXgAM3QCILfTmCmNOrDP+tU67
+Sp1AnVUQDUfoMreLqPv9PxJK3wnCugVdw08bgxzbxycLpfzcQbzXtVTNLzpE9m/C
+m4DQ47zqQmz4Zj4f/JVRfg==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 25024 )
+`pragma protect data_block
+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
+VhTvV5MqNhAZpXfPbkZ0rQ==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+RwZLaWoAKLBm11tcUo3zg7WK2hPcNJvetUS0HcngH1N+uqVkxItkonJwS2nHozet
+PZ4e0pcL7oMHU+YSSKFGF0HZtDLJ6ggz9Tjk65W4OruIfJxIuyYdw9nbusKhaJTz
+khXz5VPO6s2gfnVif+az5zjoe7kudgxlxU7jmvaX9sbur5cFMS2KnJogDMLJcl1s
+ZlLL+9F5h5+8PKCF6eoiFm6TtkD7MrBiDjMDu9eLqZ5t8VgWYRMKduwEQ9J2M3t/
+JcbjL7GG+1h3LkL6WEKxF8zVIpKiu3k7UC98wKI8mhEpZ8bChW07nVCr4PHLn2IX
+BU9Qy5kOLqe8sKbl6LYs7g==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1312 )
+`pragma protect data_block
+p0bIW99zYvQA4u0XRWnQ90s6MugNpXe6l31pFNyBhuxQU67mS/BBRtYtc25nySM/
+yHwfDVEt2eeSh2xZ2Kv1d8VWucKTg8lXrK+ooXsXcYiy61IB12mnjuKPa/FUxFS4
+JM2AiESAcF0ks9YGnHz5atWTSPAnEYKTqIrZDoYqJkbgClLiRdrZY+N2hC5jdZeW
+cR1EkHw0PZqw6S2eCHL5hUi6ryPKMkre1oH3Xdag2DJT8qQxbuNqhhrm/L+8L8lX
+f5F3asZ05yCB1pnJRqVPESYDajoN8u1lWD18RYsWX60ld2PcwCxsHkPOyoBvAV1u
+PgCYq2l6s5FitBJR9RvIIWQXgYcJnkvvctXAE4sHkA/8YmzJKAUlmADFxObHh7nH
+B9Tr9F5MMMItWtOlRVOB7r7GpKZ4CIu9H0pG8rHeitdTJzb//0sRPwO4Ifpq00gF
+PYpm2+uw1qrcWOBG9wrbOEUMiFlt1c1y6CM7W0HiQg/FK+4Y4JiB7uaAlzUejTOI
+zOL6no+QbQSWHIEVAYNpQGNcTG+AuFlhiSI5DitSGvW5yCLRLs7Fv5AnqLM6z1Qg
+nRTXEKDaR/AFlAFB16izDRH4FYwpXtH01JTfdxvrFbPDjE2B07qlVwewnCVApXy1
+GNPPzEat9SO3vQ9t7PCKFzQV6OGGAn/dyMwguU6EDW8mcNxemcFiHUdiSfhhZpeH
+IcnqAMISo7J5oznEHRV6eZ2t27p8fCR6kY+/9tdw+mhgfM47E9D+jOa2LZcvRNK0
+IxKxNWtgUL0KlYtkFTGEhG+p36IePpoZOlbFukyAkrvx2uvJdjDKNhR7fljgKZp9
+ntpSnYfXJhwQrP8yTvoXUhnLpaxBTrh8cyLUFVm+2UtqRrz/+WA/Du8u19N0NmoU
+4Z65V0tXF/tW4DpeElKcg5Z9g3Srjon+LpuobgvaptlZ3rG7pXXklUAdxNfJ+4mu
+g8S64RYvfLamt1za0XyFbePfAbEPHUNKbKIqzGRB92kxJ6jYjgC9RQHp35SL3T55
+2DhArYHiRs4HAieVOggerJ2mFKRe1jgXpNH28cIvReVtjhPSR0h2/N1kktJoFN9j
+pAwsBXcE20H2DgeDq7MOl5klQOQIZqq2NOi/TtiDykzXOq9c52KT5YQDUiFYqQvD
+H29baw+SyQUZTso78q8DVb5S1dB3XyHStAKgoGq93+Wz/B1RLpKYack4xd4rdS5s
+pwx6XbBMdp7aDqOyz2KgKWf+dspEnt1aZSkLPUfnK1QqEuwBFSip0++f8lsYJwt6
+h2RR9rfNZmd8nt+mXhbGkKeiOagijsA/5zVB+4MgI0KR9sujHhdd3ikiYUTRDpcb
+AA7w3mFn6w2oiAcHGimR/cBGrmo7m6L0USsPGqFYBLIQfdAn5dEBlb2BCoA5VFZj
+jXKJF/jua7Y+DrPzh66goMGjpF9lBpoEP1rWQA/7bSpIp6mTsXcqppKrJq4X3UzK
+fnxoXMOzyXak8Q0RLDFj9NSgAWzr4VmwVpFWnocoXpsQlisCkXdTJvGnor8LLZr9
+sDZmzgcSix39SaRGPrUkPl4jLdocSaImMFvFf75Ln2LkiFK2PwLHbdxu5OHmQoCw
+7wBcsGkL2gXd3tYL2ns54yYSqMYHrxBbag+ndd5VaJnjZK34JNDCSh65qkKE7y7v
+Behj6SqW7qWtdmufzd16RndX/9C4+tnd6CZRltVVSxqHORQEFpJfBX3qZLp11vTQ
+Pib5SMqM0nVbJDVpqDeCAA==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+V7fazAcYfn/upNWI2MrDSQamEge7Y8sqGyEbHWTTDvIkXpdIuRisL8LJjvy83vue
+ZgYLruqRxsDQR/Wu7PMlj65sb/NkxpSPTHfwdQcOEP3MsixExszjuA1HqHtg+aNQ
+uFOiuMhxVPj6PMHq/Hqrqa85QcEVSbWPuLxSaFzY0ndkgyErZck8cU+0bbs6pFmr
+tNIeglsOu6Am3uxBT62KHdsx5/dbyBFUXzyoeMcVqVN/dSwFJEWKXykd+OnIo8cg
+TAWc+EOAJ6ExmKO/aLU8Un5EpThP6h/F+4FSrXQ8+zAfJHLLmWelIILCIn9r270y
+7CUxtRRDMVrzxeZaHx87Jw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1200 )
+`pragma protect data_block
+0H3ui++saKA3Qim7nBCnYyJXuXUUae6AJ4LYf9uQIt7dDyl6C5Q3z+wohgm7l6P/
+puE1YIk57wYrhZfaxaOZbQEeQcTD5dhNWYlNGXkVD3n3ordUMQqbpossg6k8GBbL
+hcT5AJLRLWp1fmFYHU/sChpXsLIvsw4ylUF+kPCiM/E2Qrxqk+h6yKLdH/qUhhl9
+SFhgQaFfWNjj6ajZXfTXAeH01G9YVoXQTrTURK7LCmy8Exrca33pvD2n8qRjNHVC
+SMvlBAlMyB9GhVbgRH5g1J3eexKd42EKVG1OYkkLmaw/2mYb6XQBYWGV+JPCs/lf
+iK57mI1tmXdY1dZroI+VNNMZ2ERNO1xPtSdY84zkg7t8kqVOzrKucAQtG6cbtv1M
+zOk4T1+sHwfHB5B0MAQxfUujCPIx48x0ucEJPziWVe4xGSV7Y/CdKWRJKyu1t9Fd
+RrGJ90FB8JcoftYS17u1PRbcM0J+K9rYOujMCI2wOiGLeakIZUzeUlYgu3AhwJ+p
+rFTdyQbZfeR1hJMbKn0z9kiVI7O//BPB79Ovy0ckHGOWpsznVPMik4mcftaUGBo/
+SKRhNP5RZ7ADTWwNcGVQ50K6Uk/FWRH/LjkzUDgrlN+BL9CVLgTUzw4n7TXZLYO1
+UUMwg1Abr+r4azUlV2lllRgjlWSPEmPeuWdkmDLE1kzi81/3MG9dkGcEzpCjQn1g
+wlq08l1m/9D6ssj9X+L9zWestpPbK8KKA36LM44lR7JM48DHZp/GFFbwyCyfem5J
+Yk9dQrVMSLDeQfsKUdIRfzsLFIcVo9j9nAjaOh5icY9Ju14nqLljzJxMSLXwpRpN
+pHlAUZkLKZ81BR2lNUcueWoYr1mNO5wt/8ZXKNAe4baXyx5pQlkEoPhDAu/MmaoV
+IQmRsNZAJw70Y6wneeDDkHad2vIHrOElxrM5Lnlhdq1qO4G2CjQ03nmLodMZn/cu
+JhstoiAqinvEClsBGQAEn59Mk5wMvMergihuxdt6qTvztnpZTBcB2JqJyHkCY2xR
+XYx3muggMb4QtLLic31NtDmfG8SMy5jpSvmNNdDUrcWI5vOaLo+t2/mVb5p6U/Z8
+WsFN6j8TpdcSc+yFYrWVYf/mabwUsQccMAaYaGcHwQTAXW/zRUxCfgK2BtB9AUG3
+Kwe4fuqZPo1NDmSSdATNh7Ls+wMag23tKAtoVCW+TQ3lLpto8vUWhWKQTH1PsQRx
++KWcJaJK96bA+80M/q4HUzR+yC6IUVQ9VRvWhgG0ygZTLKmQmJ/DKIzlw1lxCkA3
+JF0FRPBrpi2n+UOIXtU6FUAnUoSUl8Eeuwpycld1aaAI++CWVpk0pdWCRD85nBNb
+vAQ7vQzvYravu3V0bHTVB/w+yyy05bUUjf1aVui34DyQ1QLLkq3XQF2v9st57JGH
+egpS3SZqHPJ0AZAJJvkOXoxVRMHu48i9M6Wx9Qjtrh9EJee4xLdxqYrF04J9h9ck
+AvKxciqIeVCjtaleTRBLEWnwUKa6wADHB0WNBFNEidDe8gAcwWkZyKkh/VaUiupU
+5Cv90Shsjvie3xvNr1QXSLjEkUzHLYrvPv6IGVvcwtPvJNwajthWm4H1o8D7rdfK
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+idlb0ipwgIc0hiUfW9lCBvIc27j+O1T55dJ3BL9eUyC3AmELfvx2LyGUfXvUfYTf
+8sHVL37lgxYwkxIH4ZSSZQ1GK2zLKlNHYUEmXZIR/WoNIg7U3rYo+/OAX5LDNWz3
+I3htHfdktV9gYc7iVdI9VNrqBa0Gg55NmIOrO+wM2ME4dVbdMJVDfW+oOu9rTeme
+KOonn0oR5/zNCWcqkhf2z6BLLm49S0wwKQJc9Tn8j8aAVVAS5PR4HM/UAt+Pm5Qw
+qUaeukXs5OImR86WKmCfOXrROtxYmBZ//zwyzxGdjene5Dzf1Lue74V7vg9Yy8Es
+kofIx1Iiwvl5uhKqK0ZywQ==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1984 )
+`pragma protect data_block
+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
+M6eR/VTYArPQbA4OoPqXhQ==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+kjevziVpR4HNp6ABOs1UfEhnb+dX0JPweI6S3+LX30C9LF3xx7Xd/zMszyIOAsff
+hodfZOinnjjXzBncB8lZ/iwEBQcN9AOUuJkxqHw0xEX9lKugu7WOxROcH+yiXxDJ
+yy9yDzS1F865ocB3xO9FWkMnml1XZRqox2FTUI5GMVk0MxMQPCoaWPmG40cuqt8H
+oNSQWIvbZ0bwp2zXvC4BQlkXD2oWWu6JxxVIVspZ7XmHHSfSB+gK8bmQIk2JZPQd
+nB3A0s+SLUanWE/u+Muh6A5t3kkuvJ5Fy1rRHEwle6WO6L5S2arPlksoYEp7hfDo
+eW9+LO7WnZdnt0b3dQw5Mw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1104 )
+`pragma protect data_block
+LX5Dxt8B2z9u2haDN6HkGNj1Nxa2zeRWxlMLLnbgcY2+2ueKKYern04T7l3DicpU
+GAgNW7GQnUadJWzOBc5yfD2Z7DyC1zg+m258ATNxkXP9Ag8Pfl4MhmlpUpmkc23o
+YSNVfWttcQespNGB+Kj9g+/b/Ltzb/Pp1dgaxi5NIlG7FsWis/B/nSO/Vd0xLa8l
+gdvKVbsSlGSB1tT5WBnrVIsaLuvPuUdgdvXFHzLrEscW/eC28+m22DdewgK9tHYj
+l4yaTKwJ+7R2jtaFZr8jMmcRudxesBNt1kTJeA9U1nitqtdHVp23JcdwKc05jnrW
+tx2+meDVE/d5vcxlhTdpO8sz2YOw2Z0bAN+ieJFfUDfTuopqPBMc5GBfsrD40ELk
+H3q+hGhS+dIM3hrqhKDRW3tPFmcE5szwJbmOAxflm1SvQmlOnQVePLGdCuOZUUiI
+tz++pZ5FH+uAdkA40yZWh5MnKo5IcfFxWM2Jsum3JZvmVMjnI7N1x8f70kUe3UgZ
+KEcI12J/dpNLgdFOl+74xfjhKGoKm/BgN6Eb01T1RtdX6u5xQtgGCuv62jDE/Yt3
+eJjRnF/x+Ay39zeCLP9UQvypybEe14bN7gfHfWoAQe9HIG87Fm2nKjAzASr6QFRV
+DL1jo931/n1Lv9oZuWMfaF7ZCTxH6A9fBYglk+u3TWHi+TkymppU4hV3XjEHw3B7
+wrSwISGJRMUoCJ0wh/W9Iqj3EDcLmFUIHicsgmfrUkpdpcDqQYIKmCedP/+uQ37E
+hBOgLdq2ET/+T377dhiMAvLWIMnT6X9iEzqdVEMfkuPgbBZetAoTzb7IozmdA14+
+3PCjcT9XV5Hxvw1vyLKchF3xGFPaDFJgGJtzSIMeyTd9yK/++OeT1TQ0HFPfjjqB
+LI0xhfRlEGqOj1YzmolIUWRdGapI6Ywt79vK6KTeqg9K4jHGe3R1t2SJUnNELlNy
+Ju1RcPdn+2rNasE/ecNNfcArJ3ReZiWkO6Urua3WtmUiTzAVXd6UD4GUf3QUw0J5
+AefzuP3tFE5IfHRFmTZWTm7Y/JLAztWyBuag+6TRZLBlyPJDyNieFGTz4SEyTkAc
+CyJ51RLW7x5j/8mo5k2anYrG7q1YYjOUQHyaLPL/RwYcBBJS38HGPAl44N6KsB9m
+PGaS88rOnKmcVDest/nmsVi5/wR7C0xrMTpo2i2v7wOVW53j3SANDy4UhRYGQ75m
+9+CZTXcObV1oXJW0me53hFtEJ+qHc7eFGKyCVwTNanP47XH3aJey3ulpiTKXp9iD
+rurNoDvwMo1/Wv8495pWfGIS50V6wFEVgh2p6gt3S7meUf9sdMYrrKeQAKEna1ne
+Rf8O+xm0FaLvKNBVaPV3ISnRU2qTxpWhaUb3vTQN4TODsKco29kkHPqYRTREwU5p
+4ExJ23nclyx/By+ugg0UnN5jZ/DGDMK6ZJ2abjL+WrT31jFUNXgt+rmb/8ViJNIm
+`pragma protect end_protected
+
+//pragma protect end
+
+`undef IP_UUID
+`undef IP_NAME_CONCAT
+`undef IP_MODULE_NAME
diff --git a/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_define.vh b/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_define.vh
new file mode 100644
index 0000000..cacbc6f
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_define.vh
@@ -0,0 +1,53 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 5.6
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+localparam ARB_MODE = "ROUND_ROBIN_1";
+localparam S_PORTS = 2;
+localparam DATA_WIDTH = 128;
+localparam ADDR_WIDTH = 32;
+localparam M_PORTS = 1;
+localparam ID_WIDTH = 8;
+localparam USER_WIDTH = 3;
+localparam PROTOCOL = "AXI4";
diff --git a/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_tmpl.v b/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_tmpl.v
new file mode 100644
index 0000000..59e2d33
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_tmpl.v
@@ -0,0 +1,137 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 5.6
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+gAXIM_2to1_switch u_gAXIM_2to1_switch
+(
+ .rst_n ( rst_n ),
+ .clk ( clk ),
+ .s_axi_awvalid ( s_axi_awvalid ),
+ .s_axi_awaddr ( s_axi_awaddr ),
+ .s_axi_awlock ( s_axi_awlock ),
+ .s_axi_awready ( s_axi_awready ),
+ .s_axi_arvalid ( s_axi_arvalid ),
+ .s_axi_araddr ( s_axi_araddr ),
+ .s_axi_arlock ( s_axi_arlock ),
+ .s_axi_arready ( s_axi_arready ),
+ .s_axi_wvalid ( s_axi_wvalid ),
+ .s_axi_wlast ( s_axi_wlast ),
+ .s_axi_wid ( s_axi_wid ),
+ .s_axi_bready ( s_axi_bready ),
+ .s_axi_bresp ( s_axi_bresp ),
+ .s_axi_rready ( s_axi_rready ),
+ .s_axi_bid ( s_axi_bid ),
+ .s_axi_rid ( s_axi_rid ),
+ .s_axi_wdata ( s_axi_wdata ),
+ .s_axi_rdata ( s_axi_rdata ),
+ .s_axi_rresp ( s_axi_rresp ),
+ .s_axi_bvalid ( s_axi_bvalid ),
+ .s_axi_rvalid ( s_axi_rvalid ),
+ .s_axi_rlast ( s_axi_rlast ),
+ .s_axi_wstrb ( s_axi_wstrb ),
+ .m_axi_awvalid ( m_axi_awvalid ),
+ .m_axi_awaddr ( m_axi_awaddr ),
+ .m_axi_awlock ( m_axi_awlock ),
+ .m_axi_awready ( m_axi_awready ),
+ .m_axi_arvalid ( m_axi_arvalid ),
+ .m_axi_araddr ( m_axi_araddr ),
+ .m_axi_arlock ( m_axi_arlock ),
+ .m_axi_arready ( m_axi_arready ),
+ .m_axi_wvalid ( m_axi_wvalid ),
+ .m_axi_wlast ( m_axi_wlast ),
+ .m_axi_bready ( m_axi_bready ),
+ .m_axi_bresp ( m_axi_bresp ),
+ .m_axi_rready ( m_axi_rready ),
+ .m_axi_bid ( m_axi_bid ),
+ .m_axi_rid ( m_axi_rid ),
+ .m_axi_wdata ( m_axi_wdata ),
+ .m_axi_rdata ( m_axi_rdata ),
+ .m_axi_rresp ( m_axi_rresp ),
+ .m_axi_bvalid ( m_axi_bvalid ),
+ .m_axi_rvalid ( m_axi_rvalid ),
+ .m_axi_rlast ( m_axi_rlast ),
+ .m_axi_wstrb ( m_axi_wstrb ),
+ .m_axi_wready ( m_axi_wready ),
+ .s_axi_wready ( s_axi_wready ),
+ .s_axi_awprot ( s_axi_awprot ),
+ .s_axi_awcache ( s_axi_awcache ),
+ .s_axi_awqos ( s_axi_awqos ),
+ .s_axi_awuser ( s_axi_awuser ),
+ .s_axi_arqos ( s_axi_arqos ),
+ .s_axi_arcache ( s_axi_arcache ),
+ .m_axi_awprot ( m_axi_awprot ),
+ .s_axi_arid ( s_axi_arid ),
+ .s_axi_arsize ( s_axi_arsize ),
+ .s_axi_arlen ( s_axi_arlen ),
+ .s_axi_arburst ( s_axi_arburst ),
+ .s_axi_arprot ( s_axi_arprot ),
+ .s_axi_awid ( s_axi_awid ),
+ .s_axi_awburst ( s_axi_awburst ),
+ .s_axi_awlen ( s_axi_awlen ),
+ .s_axi_awsize ( s_axi_awsize ),
+ .m_axi_awid ( m_axi_awid ),
+ .m_axi_awburst ( m_axi_awburst ),
+ .m_axi_awlen ( m_axi_awlen ),
+ .m_axi_awsize ( m_axi_awsize ),
+ .m_axi_awcache ( m_axi_awcache ),
+ .m_axi_awqos ( m_axi_awqos ),
+ .m_axi_awuser ( m_axi_awuser ),
+ .m_axi_arprot ( m_axi_arprot ),
+ .m_axi_arburst ( m_axi_arburst ),
+ .m_axi_arlen ( m_axi_arlen ),
+ .m_axi_arsize ( m_axi_arsize ),
+ .m_axi_arcache ( m_axi_arcache ),
+ .m_axi_arqos ( m_axi_arqos ),
+ .m_axi_aruser ( m_axi_aruser ),
+ .m_axi_awregion ( m_axi_awregion ),
+ .m_axi_arregion ( m_axi_arregion ),
+ .m_axi_arid ( m_axi_arid ),
+ .m_axi_wuser ( m_axi_wuser ),
+ .m_axi_ruser ( m_axi_ruser ),
+ .m_axi_buser ( m_axi_buser ),
+ .s_axi_aruser ( s_axi_aruser ),
+ .s_axi_wuser ( s_axi_wuser ),
+ .s_axi_buser ( s_axi_buser ),
+ .s_axi_ruser ( s_axi_ruser )
+);
diff --git a/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_tmpl.vhd b/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_tmpl.vhd
new file mode 100644
index 0000000..bced8de
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_tmpl.vhd
@@ -0,0 +1,229 @@
+--------------------------------------------------------------------------------
+-- Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+--
+-- This document contains proprietary information which is
+-- protected by copyright. All rights are reserved. This notice
+-- refers to original work by Efinix, Inc. which may be derivitive
+-- of other work distributed under license of the authors. In the
+-- case of derivative work, nothing in this notice overrides the
+-- original author's license agreement. Where applicable, the
+-- original license agreement is included in it's original
+-- unmodified form immediately below this header.
+--
+-- WARRANTY DISCLAIMER.
+-- THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+-- EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+-- RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+-- INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+-- MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+-- PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+-- WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+--
+-- LIMITATION OF LIABILITY.
+-- NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+-- INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+-- MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+-- OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+-- SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+-- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+-- GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+-- MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+-- THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+-- (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+-- BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+-- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+-- CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+-- APPLY TO LICENSEE.
+--
+--------------------------------------------------------------------------------
+------------- Begin Cut here for COMPONENT Declaration ------
+component gAXIM_2to1_switch is
+port (
+ rst_n : in std_logic;
+ clk : in std_logic;
+ s_axi_awvalid : in std_logic_vector(1 downto 0);
+ s_axi_awaddr : in std_logic_vector(63 downto 0);
+ s_axi_awlock : in std_logic_vector(3 downto 0);
+ s_axi_awready : out std_logic_vector(1 downto 0);
+ s_axi_arvalid : in std_logic_vector(1 downto 0);
+ s_axi_araddr : in std_logic_vector(63 downto 0);
+ s_axi_arlock : in std_logic_vector(3 downto 0);
+ s_axi_arready : out std_logic_vector(1 downto 0);
+ s_axi_wvalid : in std_logic_vector(1 downto 0);
+ s_axi_wlast : in std_logic_vector(1 downto 0);
+ s_axi_wid : in std_logic_vector(15 downto 0);
+ s_axi_bready : in std_logic_vector(1 downto 0);
+ s_axi_bresp : out std_logic_vector(3 downto 0);
+ s_axi_rready : in std_logic_vector(1 downto 0);
+ s_axi_bid : out std_logic_vector(15 downto 0);
+ s_axi_rid : out std_logic_vector(15 downto 0);
+ s_axi_wdata : in std_logic_vector(255 downto 0);
+ s_axi_rdata : out std_logic_vector(255 downto 0);
+ s_axi_rresp : out std_logic_vector(3 downto 0);
+ s_axi_bvalid : out std_logic_vector(1 downto 0);
+ s_axi_rvalid : out std_logic_vector(1 downto 0);
+ s_axi_rlast : out std_logic_vector(1 downto 0);
+ s_axi_wstrb : in std_logic_vector(31 downto 0);
+ m_axi_awvalid : out std_logic_vector(0 to 0);
+ m_axi_awaddr : out std_logic_vector(31 downto 0);
+ m_axi_awlock : out std_logic_vector(1 downto 0);
+ m_axi_awready : in std_logic_vector(0 to 0);
+ m_axi_arvalid : out std_logic_vector(0 to 0);
+ m_axi_araddr : out std_logic_vector(31 downto 0);
+ m_axi_arlock : out std_logic_vector(1 downto 0);
+ m_axi_arready : in std_logic_vector(0 to 0);
+ m_axi_wvalid : out std_logic_vector(0 to 0);
+ m_axi_wlast : out std_logic_vector(0 to 0);
+ m_axi_bready : out std_logic_vector(0 to 0);
+ m_axi_bresp : in std_logic_vector(1 downto 0);
+ m_axi_rready : out std_logic_vector(0 to 0);
+ m_axi_bid : in std_logic_vector(7 downto 0);
+ m_axi_rid : in std_logic_vector(7 downto 0);
+ m_axi_wdata : out std_logic_vector(127 downto 0);
+ m_axi_rdata : in std_logic_vector(127 downto 0);
+ m_axi_rresp : in std_logic_vector(1 downto 0);
+ m_axi_bvalid : in std_logic_vector(0 to 0);
+ m_axi_rvalid : in std_logic_vector(0 to 0);
+ m_axi_rlast : in std_logic_vector(0 to 0);
+ m_axi_wstrb : out std_logic_vector(15 downto 0);
+ m_axi_wready : in std_logic_vector(0 to 0);
+ s_axi_wready : out std_logic_vector(1 downto 0);
+ s_axi_awprot : in std_logic_vector(5 downto 0);
+ s_axi_awcache : in std_logic_vector(7 downto 0);
+ s_axi_awqos : in std_logic_vector(7 downto 0);
+ s_axi_awuser : in std_logic_vector(5 downto 0);
+ s_axi_arqos : in std_logic_vector(7 downto 0);
+ s_axi_arcache : in std_logic_vector(7 downto 0);
+ m_axi_awprot : out std_logic_vector(2 downto 0);
+ s_axi_arid : in std_logic_vector(15 downto 0);
+ s_axi_arsize : in std_logic_vector(5 downto 0);
+ s_axi_arlen : in std_logic_vector(15 downto 0);
+ s_axi_arburst : in std_logic_vector(3 downto 0);
+ s_axi_arprot : in std_logic_vector(5 downto 0);
+ s_axi_awid : in std_logic_vector(15 downto 0);
+ s_axi_awburst : in std_logic_vector(3 downto 0);
+ s_axi_awlen : in std_logic_vector(15 downto 0);
+ s_axi_awsize : in std_logic_vector(5 downto 0);
+ m_axi_awid : out std_logic_vector(7 downto 0);
+ m_axi_awburst : out std_logic_vector(1 downto 0);
+ m_axi_awlen : out std_logic_vector(7 downto 0);
+ m_axi_awsize : out std_logic_vector(2 downto 0);
+ m_axi_awcache : out std_logic_vector(3 downto 0);
+ m_axi_awqos : out std_logic_vector(3 downto 0);
+ m_axi_awuser : out std_logic_vector(2 downto 0);
+ m_axi_arprot : out std_logic_vector(2 downto 0);
+ m_axi_arburst : out std_logic_vector(1 downto 0);
+ m_axi_arlen : out std_logic_vector(7 downto 0);
+ m_axi_arsize : out std_logic_vector(2 downto 0);
+ m_axi_arcache : out std_logic_vector(3 downto 0);
+ m_axi_arqos : out std_logic_vector(3 downto 0);
+ m_axi_aruser : out std_logic_vector(2 downto 0);
+ m_axi_awregion : out std_logic_vector(3 downto 0);
+ m_axi_arregion : out std_logic_vector(3 downto 0);
+ m_axi_arid : out std_logic_vector(7 downto 0);
+ m_axi_wuser : out std_logic_vector(2 downto 0);
+ m_axi_ruser : in std_logic_vector(2 downto 0);
+ m_axi_buser : in std_logic_vector(2 downto 0);
+ s_axi_aruser : in std_logic_vector(5 downto 0);
+ s_axi_wuser : in std_logic_vector(5 downto 0);
+ s_axi_buser : out std_logic_vector(5 downto 0);
+ s_axi_ruser : out std_logic_vector(5 downto 0)
+);
+end component gAXIM_2to1_switch;
+
+---------------------- End COMPONENT Declaration ------------
+------------- Begin Cut here for INSTANTIATION Template -----
+u_gAXIM_2to1_switch : gAXIM_2to1_switch
+port map (
+ rst_n => rst_n,
+ clk => clk,
+ s_axi_awvalid => s_axi_awvalid,
+ s_axi_awaddr => s_axi_awaddr,
+ s_axi_awlock => s_axi_awlock,
+ s_axi_awready => s_axi_awready,
+ s_axi_arvalid => s_axi_arvalid,
+ s_axi_araddr => s_axi_araddr,
+ s_axi_arlock => s_axi_arlock,
+ s_axi_arready => s_axi_arready,
+ s_axi_wvalid => s_axi_wvalid,
+ s_axi_wlast => s_axi_wlast,
+ s_axi_wid => s_axi_wid,
+ s_axi_bready => s_axi_bready,
+ s_axi_bresp => s_axi_bresp,
+ s_axi_rready => s_axi_rready,
+ s_axi_bid => s_axi_bid,
+ s_axi_rid => s_axi_rid,
+ s_axi_wdata => s_axi_wdata,
+ s_axi_rdata => s_axi_rdata,
+ s_axi_rresp => s_axi_rresp,
+ s_axi_bvalid => s_axi_bvalid,
+ s_axi_rvalid => s_axi_rvalid,
+ s_axi_rlast => s_axi_rlast,
+ s_axi_wstrb => s_axi_wstrb,
+ m_axi_awvalid => m_axi_awvalid,
+ m_axi_awaddr => m_axi_awaddr,
+ m_axi_awlock => m_axi_awlock,
+ m_axi_awready => m_axi_awready,
+ m_axi_arvalid => m_axi_arvalid,
+ m_axi_araddr => m_axi_araddr,
+ m_axi_arlock => m_axi_arlock,
+ m_axi_arready => m_axi_arready,
+ m_axi_wvalid => m_axi_wvalid,
+ m_axi_wlast => m_axi_wlast,
+ m_axi_bready => m_axi_bready,
+ m_axi_bresp => m_axi_bresp,
+ m_axi_rready => m_axi_rready,
+ m_axi_bid => m_axi_bid,
+ m_axi_rid => m_axi_rid,
+ m_axi_wdata => m_axi_wdata,
+ m_axi_rdata => m_axi_rdata,
+ m_axi_rresp => m_axi_rresp,
+ m_axi_bvalid => m_axi_bvalid,
+ m_axi_rvalid => m_axi_rvalid,
+ m_axi_rlast => m_axi_rlast,
+ m_axi_wstrb => m_axi_wstrb,
+ m_axi_wready => m_axi_wready,
+ s_axi_wready => s_axi_wready,
+ s_axi_awprot => s_axi_awprot,
+ s_axi_awcache => s_axi_awcache,
+ s_axi_awqos => s_axi_awqos,
+ s_axi_awuser => s_axi_awuser,
+ s_axi_arqos => s_axi_arqos,
+ s_axi_arcache => s_axi_arcache,
+ m_axi_awprot => m_axi_awprot,
+ s_axi_arid => s_axi_arid,
+ s_axi_arsize => s_axi_arsize,
+ s_axi_arlen => s_axi_arlen,
+ s_axi_arburst => s_axi_arburst,
+ s_axi_arprot => s_axi_arprot,
+ s_axi_awid => s_axi_awid,
+ s_axi_awburst => s_axi_awburst,
+ s_axi_awlen => s_axi_awlen,
+ s_axi_awsize => s_axi_awsize,
+ m_axi_awid => m_axi_awid,
+ m_axi_awburst => m_axi_awburst,
+ m_axi_awlen => m_axi_awlen,
+ m_axi_awsize => m_axi_awsize,
+ m_axi_awcache => m_axi_awcache,
+ m_axi_awqos => m_axi_awqos,
+ m_axi_awuser => m_axi_awuser,
+ m_axi_arprot => m_axi_arprot,
+ m_axi_arburst => m_axi_arburst,
+ m_axi_arlen => m_axi_arlen,
+ m_axi_arsize => m_axi_arsize,
+ m_axi_arcache => m_axi_arcache,
+ m_axi_arqos => m_axi_arqos,
+ m_axi_aruser => m_axi_aruser,
+ m_axi_awregion => m_axi_awregion,
+ m_axi_arregion => m_axi_arregion,
+ m_axi_arid => m_axi_arid,
+ m_axi_wuser => m_axi_wuser,
+ m_axi_ruser => m_axi_ruser,
+ m_axi_buser => m_axi_buser,
+ s_axi_aruser => s_axi_aruser,
+ s_axi_wuser => s_axi_wuser,
+ s_axi_buser => s_axi_buser,
+ s_axi_ruser => s_axi_ruser
+);
+
+------------------------ End INSTANTIATION Template ---------
diff --git a/Ti375C529_devkit/ip/gAXIM_2to1_switch/ipm/component.pickle b/Ti375C529_devkit/ip/gAXIM_2to1_switch/ipm/component.pickle
new file mode 100644
index 0000000..4f29ee4
Binary files /dev/null and b/Ti375C529_devkit/ip/gAXIM_2to1_switch/ipm/component.pickle differ
diff --git a/Ti375C529_devkit/ip/gAXIM_2to1_switch/ipm/graph.pickle b/Ti375C529_devkit/ip/gAXIM_2to1_switch/ipm/graph.pickle
new file mode 100644
index 0000000..0e78302
Binary files /dev/null and b/Ti375C529_devkit/ip/gAXIM_2to1_switch/ipm/graph.pickle differ
diff --git a/Ti375C529_devkit/ip/gAXIM_2to1_switch/settings.json b/Ti375C529_devkit/ip/gAXIM_2to1_switch/settings.json
new file mode 100644
index 0000000..481a3b7
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIM_2to1_switch/settings.json
@@ -0,0 +1,54 @@
+{
+ "args": [
+ "-o",
+ "gAXIM_2to1_switch",
+ "--base_path",
+ "ip",
+ "--vlnv",
+ {
+ "vendor": "efinixinc.com",
+ "library": "axi_infra",
+ "name": "efx_axi_interconnect",
+ "version": "5.6"
+ }
+ ],
+ "conf": {
+ "ARB_MODE": "\"ROUND_ROBIN_1\"",
+ "S_PORTS": "1",
+ "TABLE0_AXI_S0__MIN": "32'd0",
+ "TABLE0_AXI_S1__MIN": "32'd512",
+ "TABLE0_AXI_S2__MIN": "32'd285212672",
+ "TABLE0_AXI_S3__MIN": "32'd286261248",
+ "TABLE0_AXI_S4__MIN": "32'd536870912",
+ "TABLE0_AXI_S5__MIN": "32'd805306368",
+ "TABLE0_AXI_S6__MIN": "32'd1073741824",
+ "TABLE0_AXI_S7__MIN": "32'd1090519040",
+ "TABLE0_AXI_S0__MAX": "32'd9",
+ "TABLE0_AXI_S1__MAX": "32'd8",
+ "TABLE0_AXI_S2__MAX": "32'd12",
+ "TABLE0_AXI_S3__MAX": "32'd20",
+ "TABLE0_AXI_S4__MAX": "32'd28",
+ "TABLE0_AXI_S5__MAX": "32'd28",
+ "TABLE0_AXI_S6__MAX": "32'd24",
+ "TABLE0_AXI_S7__MAX": "32'd20",
+ "DATA_WIDTH": "32",
+ "ADDR_WIDTH": "32",
+ "M_PORTS": "2",
+ "ID_WIDTH": "8",
+ "USER_WIDTH": "3",
+ "PROTOCOL": "\"AXI4_LITE\""
+ },
+ "output": {
+ "external_script_generator": [],
+ "external_source_source": [],
+ "external_example_example": [],
+ "external_testbench_synopsys": [],
+ "external_testbench_modelsim": [],
+ "external_testbench_ncsim": [],
+ "external_testbench_aldec": [],
+ "external_testbench_testbench": []
+ },
+ "ooc_synthesis": {},
+ "sw_version": "2026.1.132",
+ "external_path_option": "RELATIVE_PATH"
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gAXIS_1to3_switch/axi_interconnect.vh b/Ti375C529_devkit/ip/gAXIS_1to3_switch/axi_interconnect.vh
new file mode 100644
index 0000000..9ccec85
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIS_1to3_switch/axi_interconnect.vh
@@ -0,0 +1,2 @@
+localparam M_BASE_ADDR = {32'h41000000,32'h40000000,32'h30000000,32'h20000000,32'h11100000,32'h1100000,32'h1000000,32'h0};
+localparam M_ADDR_WIDTH = {32'd20,32'd24,32'd28,32'd28,32'd20,32'd16,32'd16,32'd24};
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch.v b/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch.v
new file mode 100644
index 0000000..94fe678
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch.v
@@ -0,0 +1,1361 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 5.6
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+`define IP_UUID _b2d21181e3e64b0ab27cd3f4ca0a3529
+`define IP_NAME_CONCAT(a,b) a``b
+`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
+module gAXIS_1to3_switch
+(
+ input rst_n,
+ input clk,
+ input [0:0] s_axi_awvalid,
+ input [31:0] s_axi_awaddr,
+ input [1:0] s_axi_awlock,
+ output [0:0] s_axi_awready,
+ input [0:0] s_axi_arvalid,
+ input [31:0] s_axi_araddr,
+ input [1:0] s_axi_arlock,
+ output [0:0] s_axi_arready,
+ input [0:0] s_axi_wvalid,
+ input [0:0] s_axi_wlast,
+ input [7:0] s_axi_wid,
+ input [0:0] s_axi_bready,
+ output [1:0] s_axi_bresp,
+ input [0:0] s_axi_rready,
+ output [7:0] s_axi_bid,
+ output [7:0] s_axi_rid,
+ input [31:0] s_axi_wdata,
+ output [31:0] s_axi_rdata,
+ output [1:0] s_axi_rresp,
+ output [0:0] s_axi_bvalid,
+ output [0:0] s_axi_rvalid,
+ output [0:0] s_axi_rlast,
+ input [3:0] s_axi_wstrb,
+ output [2:0] m_axi_awvalid,
+ output [95:0] m_axi_awaddr,
+ output [5:0] m_axi_awlock,
+ input [2:0] m_axi_awready,
+ output [2:0] m_axi_arvalid,
+ output [95:0] m_axi_araddr,
+ output [5:0] m_axi_arlock,
+ input [2:0] m_axi_arready,
+ output [2:0] m_axi_wvalid,
+ output [2:0] m_axi_wlast,
+ output [2:0] m_axi_bready,
+ input [5:0] m_axi_bresp,
+ output [2:0] m_axi_rready,
+ input [23:0] m_axi_bid,
+ input [23:0] m_axi_rid,
+ output [95:0] m_axi_wdata,
+ input [95:0] m_axi_rdata,
+ input [5:0] m_axi_rresp,
+ input [2:0] m_axi_bvalid,
+ input [2:0] m_axi_rvalid,
+ input [2:0] m_axi_rlast,
+ output [11:0] m_axi_wstrb,
+ input [2:0] m_axi_wready,
+ output [0:0] s_axi_wready,
+ input [2:0] s_axi_awprot,
+ input [3:0] s_axi_awcache,
+ input [3:0] s_axi_awqos,
+ input [2:0] s_axi_awuser,
+ input [3:0] s_axi_arqos,
+ input [3:0] s_axi_arcache,
+ output [8:0] m_axi_awprot,
+ input [7:0] s_axi_arid,
+ input [2:0] s_axi_arsize,
+ input [7:0] s_axi_arlen,
+ input [1:0] s_axi_arburst,
+ input [2:0] s_axi_arprot,
+ input [7:0] s_axi_awid,
+ input [1:0] s_axi_awburst,
+ input [7:0] s_axi_awlen,
+ input [2:0] s_axi_awsize,
+ output [23:0] m_axi_awid,
+ output [5:0] m_axi_awburst,
+ output [23:0] m_axi_awlen,
+ output [8:0] m_axi_awsize,
+ output [11:0] m_axi_awcache,
+ output [11:0] m_axi_awqos,
+ output [8:0] m_axi_awuser,
+ output [8:0] m_axi_arprot,
+ output [5:0] m_axi_arburst,
+ output [23:0] m_axi_arlen,
+ output [8:0] m_axi_arsize,
+ output [11:0] m_axi_arcache,
+ output [11:0] m_axi_arqos,
+ output [8:0] m_axi_aruser,
+ output [11:0] m_axi_awregion,
+ output [11:0] m_axi_arregion,
+ output [23:0] m_axi_arid,
+ output [8:0] m_axi_wuser,
+ input [8:0] m_axi_ruser,
+ input [8:0] m_axi_buser,
+ input [2:0] s_axi_aruser,
+ input [2:0] s_axi_wuser,
+ output [2:0] s_axi_buser,
+ output [2:0] s_axi_ruser
+);
+`IP_MODULE_NAME(efx_axi_interconnect)
+#(
+ .ARB_MODE ("ROUND_ROBIN_1"),
+ .S_PORTS (1),
+ .DATA_WIDTH (32),
+ .ADDR_WIDTH (32),
+ .M_PORTS (3),
+ .ID_WIDTH (8),
+ .USER_WIDTH (3),
+ .PROTOCOL ("AXI4")
+)
+u_efx_axi_interconnect
+(
+ .rst_n ( rst_n ),
+ .clk ( clk ),
+ .s_axi_awvalid ( s_axi_awvalid ),
+ .s_axi_awaddr ( s_axi_awaddr ),
+ .s_axi_awlock ( s_axi_awlock ),
+ .s_axi_awready ( s_axi_awready ),
+ .s_axi_arvalid ( s_axi_arvalid ),
+ .s_axi_araddr ( s_axi_araddr ),
+ .s_axi_arlock ( s_axi_arlock ),
+ .s_axi_arready ( s_axi_arready ),
+ .s_axi_wvalid ( s_axi_wvalid ),
+ .s_axi_wlast ( s_axi_wlast ),
+ .s_axi_wid ( s_axi_wid ),
+ .s_axi_bready ( s_axi_bready ),
+ .s_axi_bresp ( s_axi_bresp ),
+ .s_axi_rready ( s_axi_rready ),
+ .s_axi_bid ( s_axi_bid ),
+ .s_axi_rid ( s_axi_rid ),
+ .s_axi_wdata ( s_axi_wdata ),
+ .s_axi_rdata ( s_axi_rdata ),
+ .s_axi_rresp ( s_axi_rresp ),
+ .s_axi_bvalid ( s_axi_bvalid ),
+ .s_axi_rvalid ( s_axi_rvalid ),
+ .s_axi_rlast ( s_axi_rlast ),
+ .s_axi_wstrb ( s_axi_wstrb ),
+ .m_axi_awvalid ( m_axi_awvalid ),
+ .m_axi_awaddr ( m_axi_awaddr ),
+ .m_axi_awlock ( m_axi_awlock ),
+ .m_axi_awready ( m_axi_awready ),
+ .m_axi_arvalid ( m_axi_arvalid ),
+ .m_axi_araddr ( m_axi_araddr ),
+ .m_axi_arlock ( m_axi_arlock ),
+ .m_axi_arready ( m_axi_arready ),
+ .m_axi_wvalid ( m_axi_wvalid ),
+ .m_axi_wlast ( m_axi_wlast ),
+ .m_axi_bready ( m_axi_bready ),
+ .m_axi_bresp ( m_axi_bresp ),
+ .m_axi_rready ( m_axi_rready ),
+ .m_axi_bid ( m_axi_bid ),
+ .m_axi_rid ( m_axi_rid ),
+ .m_axi_wdata ( m_axi_wdata ),
+ .m_axi_rdata ( m_axi_rdata ),
+ .m_axi_rresp ( m_axi_rresp ),
+ .m_axi_bvalid ( m_axi_bvalid ),
+ .m_axi_rvalid ( m_axi_rvalid ),
+ .m_axi_rlast ( m_axi_rlast ),
+ .m_axi_wstrb ( m_axi_wstrb ),
+ .m_axi_wready ( m_axi_wready ),
+ .s_axi_wready ( s_axi_wready ),
+ .s_axi_awprot ( s_axi_awprot ),
+ .s_axi_awcache ( s_axi_awcache ),
+ .s_axi_awqos ( s_axi_awqos ),
+ .s_axi_awuser ( s_axi_awuser ),
+ .s_axi_arqos ( s_axi_arqos ),
+ .s_axi_arcache ( s_axi_arcache ),
+ .m_axi_awprot ( m_axi_awprot ),
+ .s_axi_arid ( s_axi_arid ),
+ .s_axi_arsize ( s_axi_arsize ),
+ .s_axi_arlen ( s_axi_arlen ),
+ .s_axi_arburst ( s_axi_arburst ),
+ .s_axi_arprot ( s_axi_arprot ),
+ .s_axi_awid ( s_axi_awid ),
+ .s_axi_awburst ( s_axi_awburst ),
+ .s_axi_awlen ( s_axi_awlen ),
+ .s_axi_awsize ( s_axi_awsize ),
+ .m_axi_awid ( m_axi_awid ),
+ .m_axi_awburst ( m_axi_awburst ),
+ .m_axi_awlen ( m_axi_awlen ),
+ .m_axi_awsize ( m_axi_awsize ),
+ .m_axi_awcache ( m_axi_awcache ),
+ .m_axi_awqos ( m_axi_awqos ),
+ .m_axi_awuser ( m_axi_awuser ),
+ .m_axi_arprot ( m_axi_arprot ),
+ .m_axi_arburst ( m_axi_arburst ),
+ .m_axi_arlen ( m_axi_arlen ),
+ .m_axi_arsize ( m_axi_arsize ),
+ .m_axi_arcache ( m_axi_arcache ),
+ .m_axi_arqos ( m_axi_arqos ),
+ .m_axi_aruser ( m_axi_aruser ),
+ .m_axi_awregion ( m_axi_awregion ),
+ .m_axi_arregion ( m_axi_arregion ),
+ .m_axi_arid ( m_axi_arid ),
+ .m_axi_wuser ( m_axi_wuser ),
+ .m_axi_ruser ( m_axi_ruser ),
+ .m_axi_buser ( m_axi_buser ),
+ .s_axi_aruser ( s_axi_aruser ),
+ .s_axi_wuser ( s_axi_wuser ),
+ .s_axi_buser ( s_axi_buser ),
+ .s_axi_ruser ( s_axi_ruser )
+);
+endmodule
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+BSiclTfEX07oDTPwvSfmqSh37gsGawnAkFDdQtfz2b2aPAbkkOIevgA5jmAEpk8Z
+jmjFoTAnEUNBHxHADHQl29GtYYLQLcTt1dvsb1L8xXXbyd41mZnW9qxR1yEXo2Km
+PmHE4/laDDFnEAn08I7oinDvTWN/plGfuIWWaEXC4z7ls9W1O5jNY2gj1ZC0oyT4
+iwzQ3cMmgvMMfqkgA6T8wMNFL1jvPdUxnuGh8qa0Q5zso+v2lpzszj4ytZLI8JZz
+ZeX/ipjz/4hUHkihXJPjFD+MetXdYJTpzRO3ZbxTOlyD1Ln8yDvo0qNPrgbzN9qq
+YropxHtLb22q5bZxY+vKMw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 9552 )
+`pragma protect data_block
++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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+module `IP_MODULE_NAME(efx_axi_interconnect) #(
+ parameter PROTOCOL = "AXI4",
+ parameter ARB_MODE = "PRIORITY",
+ parameter S_PORTS = 1,
+ parameter M_PORTS = 8,
+ parameter ID_WIDTH = 8,
+ parameter DATA_WIDTH = 32,
+ parameter USER_WIDTH = 3,
+ parameter ADDR_WIDTH = 32,
+ parameter M_REGIONS = 1,
+ parameter M_CONNECT_READ = {M_PORTS{{S_PORTS{1'b1}}}},
+ parameter M_CONNECT_WRITE = {M_PORTS{{S_PORTS{1'b1}}}},
+ parameter STRB_WIDTH = DATA_WIDTH/8
+) (
+ input wire clk,
+ input wire rst_n,
+ input wire [S_PORTS-1:0] s_axi_awvalid,
+ input wire [S_PORTS*ADDR_WIDTH-1:0] s_axi_awaddr,
+ input wire [S_PORTS*3-1:0] s_axi_awprot,
+ input wire [S_PORTS*ID_WIDTH-1:0] s_axi_awid,
+ input wire [S_PORTS*2-1:0] s_axi_awburst,
+ input wire [S_PORTS*8-1:0] s_axi_awlen,
+ input wire [S_PORTS*3-1:0] s_axi_awsize,
+ input wire [S_PORTS*4-1:0] s_axi_awcache,
+ input wire [S_PORTS*4-1:0] s_axi_awqos,
+ input wire [S_PORTS*USER_WIDTH-1:0] s_axi_awuser,
+ input wire [S_PORTS*2-1:0] s_axi_awlock,
+ output reg [S_PORTS-1:0] s_axi_awready,
+ input wire [S_PORTS-1:0] s_axi_wvalid,
+ input wire [S_PORTS*DATA_WIDTH-1:0] s_axi_wdata,
+ input wire [S_PORTS*STRB_WIDTH-1:0] s_axi_wstrb,
+ input wire [S_PORTS-1:0] s_axi_wlast,
+ input wire [S_PORTS*USER_WIDTH-1:0] s_axi_wuser,
+ input wire [S_PORTS*ID_WIDTH-1:0] s_axi_wid,
+ output wire [S_PORTS-1:0] s_axi_wready,
+ input wire [S_PORTS-1:0] s_axi_bready,
+ output wire [S_PORTS*2-1:0] s_axi_bresp,
+ output reg [S_PORTS-1:0] s_axi_bvalid,
+ output wire [S_PORTS*ID_WIDTH-1:0] s_axi_bid,
+ output wire [S_PORTS*USER_WIDTH-1:0] s_axi_buser,
+ input wire [S_PORTS-1:0] s_axi_arvalid,
+ input wire [S_PORTS*ADDR_WIDTH-1:0] s_axi_araddr,
+ input wire [S_PORTS*3-1:0] s_axi_arprot,
+ input wire [S_PORTS*ID_WIDTH-1:0] s_axi_arid,
+ input wire [S_PORTS*2-1:0] s_axi_arburst,
+ input wire [S_PORTS*8-1:0] s_axi_arlen,
+ input wire [S_PORTS*3-1:0] s_axi_arsize,
+ input wire [S_PORTS*4-1:0] s_axi_arcache,
+ input wire [S_PORTS*4-1:0] s_axi_arqos,
+ input wire [S_PORTS*USER_WIDTH-1:0] s_axi_aruser,
+ input wire [S_PORTS*2-1:0] s_axi_arlock,
+ output reg [S_PORTS-1:0] s_axi_arready,
+ input wire [S_PORTS-1:0] s_axi_rready,
+ output wire [S_PORTS*ID_WIDTH-1:0] s_axi_rid,
+ output wire [S_PORTS*DATA_WIDTH-1:0] s_axi_rdata,
+ output wire [S_PORTS*2-1:0] s_axi_rresp,
+ output wire [S_PORTS-1:0] s_axi_rvalid,
+ output wire [S_PORTS-1:0] s_axi_rlast,
+ output wire [S_PORTS*USER_WIDTH-1:0] s_axi_ruser,
+ output reg [M_PORTS-1:0] m_axi_awvalid,
+ output wire [M_PORTS*ID_WIDTH-1:0] m_axi_awid,
+ output wire [M_PORTS*2-1:0] m_axi_awburst,
+ output wire [M_PORTS*8-1:0] m_axi_awlen,
+ output wire [M_PORTS*3-1:0] m_axi_awsize,
+ output wire [M_PORTS*4-1:0] m_axi_awcache,
+ output wire [M_PORTS*4-1:0] m_axi_awqos,
+ output wire [M_PORTS*4-1:0] m_axi_awregion,
+ output wire [M_PORTS*USER_WIDTH-1:0] m_axi_awuser,
+ output wire [M_PORTS*ADDR_WIDTH-1:0] m_axi_awaddr,
+ output wire [M_PORTS*3-1:0] m_axi_awprot,
+ output wire [M_PORTS*2-1:0] m_axi_awlock,
+ input wire [M_PORTS-1:0] m_axi_awready,
+ output wire [M_PORTS*DATA_WIDTH-1:0] m_axi_wdata,
+ output wire [M_PORTS*STRB_WIDTH-1:0] m_axi_wstrb,
+ output wire [M_PORTS-1:0] m_axi_wvalid,
+ output wire [M_PORTS-1:0] m_axi_wlast,
+ output wire [M_PORTS*USER_WIDTH-1:0] m_axi_wuser,
+ output wire [M_PORTS*ID_WIDTH-1:0] m_axi_wid,
+ input wire [M_PORTS-1:0] m_axi_wready,
+ input wire [M_PORTS*2-1:0] m_axi_bresp,
+ input wire [M_PORTS-1:0] m_axi_bvalid,
+ input wire [M_PORTS*ID_WIDTH-1:0] m_axi_bid,
+ input wire [M_PORTS*USER_WIDTH-1:0] m_axi_buser,
+ output reg [M_PORTS-1:0] m_axi_bready,
+ output reg [M_PORTS-1:0] m_axi_arvalid,
+ output wire [M_PORTS*ID_WIDTH-1:0] m_axi_arid,
+ output wire [M_PORTS*2-1:0] m_axi_arburst,
+ output wire [M_PORTS*8-1:0] m_axi_arlen,
+ output wire [M_PORTS*3-1:0] m_axi_arsize,
+ output wire [M_PORTS*4-1:0] m_axi_arcache,
+ output wire [M_PORTS*4-1:0] m_axi_arqos,
+ output wire [M_PORTS*4-1:0] m_axi_arregion,
+ output wire [M_PORTS*USER_WIDTH-1:0] m_axi_aruser,
+ output wire [M_PORTS*ADDR_WIDTH-1:0] m_axi_araddr,
+ output wire [M_PORTS*3-1:0] m_axi_arprot,
+ output wire [M_PORTS*2-1:0] m_axi_arlock,
+ input wire [M_PORTS-1:0] m_axi_arready,
+ input wire [M_PORTS*ID_WIDTH-1:0] m_axi_rid,
+ input wire [M_PORTS*DATA_WIDTH-1:0] m_axi_rdata,
+ input wire [M_PORTS*2-1:0] m_axi_rresp,
+ input wire [M_PORTS-1:0] m_axi_rvalid,
+ input wire [M_PORTS-1:0] m_axi_rlast,
+ input wire [M_PORTS*USER_WIDTH-1:0] m_axi_ruser,
+ output wire [M_PORTS-1:0] m_axi_rready
+);
+`include "axi_interconnect.vh"
+parameter S_PORTS_WIDTH = clog2(S_PORTS);
+parameter M_PORTS_WIDTH = clog2(M_PORTS);
+parameter M_BASE_ADDR_INT = M_BASE_ADDR ? M_BASE_ADDR : calcBaseAddrs(0);
+parameter IDLE = 0,
+ PORT_GRANT = 1,
+ ADDR_DECODE = 2,
+ WR_FORWARD = 3,
+ WR_RESPONSE = 4,
+ RD_REQUEST = 5,
+ RD_RETURN = 6,
+ DRP_REQUEST = 7,
+ DRP_WAIT = 8,
+ END_WAIT = 9;
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+h798DEoPCCw6eC93sfxnz8ZJ5DmYibE3rGjjhE+YK5a3RIfjyfpuQmm+Qi6hiWsS
+h21ZC3p98i4VCoRgq9ttjdMjEUVk6R1INC59AvJ35jeq6cjGdiMiIPwnlnHEAIqa
+kQUAn5DZG6XDT0Q74iMGbdiR7Uqpt242DlxQT/RPahxewbF7bTMwF22aKiwUymVQ
+WL77YlV9D3RHdY6gVwH+r4vNibfPRFoNglrFWdWkXgAM3QCILfTmCmNOrDP+tU67
+Sp1AnVUQDUfoMreLqPv9PxJK3wnCugVdw08bgxzbxycLpfzcQbzXtVTNLzpE9m/C
+m4DQ47zqQmz4Zj4f/JVRfg==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 25024 )
+`pragma protect data_block
+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
+VhTvV5MqNhAZpXfPbkZ0rQ==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+RwZLaWoAKLBm11tcUo3zg7WK2hPcNJvetUS0HcngH1N+uqVkxItkonJwS2nHozet
+PZ4e0pcL7oMHU+YSSKFGF0HZtDLJ6ggz9Tjk65W4OruIfJxIuyYdw9nbusKhaJTz
+khXz5VPO6s2gfnVif+az5zjoe7kudgxlxU7jmvaX9sbur5cFMS2KnJogDMLJcl1s
+ZlLL+9F5h5+8PKCF6eoiFm6TtkD7MrBiDjMDu9eLqZ5t8VgWYRMKduwEQ9J2M3t/
+JcbjL7GG+1h3LkL6WEKxF8zVIpKiu3k7UC98wKI8mhEpZ8bChW07nVCr4PHLn2IX
+BU9Qy5kOLqe8sKbl6LYs7g==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1312 )
+`pragma protect data_block
+p0bIW99zYvQA4u0XRWnQ90s6MugNpXe6l31pFNyBhuxQU67mS/BBRtYtc25nySM/
+yHwfDVEt2eeSh2xZ2Kv1d8VWucKTg8lXrK+ooXsXcYiy61IB12mnjuKPa/FUxFS4
+JM2AiESAcF0ks9YGnHz5atWTSPAnEYKTqIrZDoYqJkbgClLiRdrZY+N2hC5jdZeW
+cR1EkHw0PZqw6S2eCHL5hUi6ryPKMkre1oH3Xdag2DJT8qQxbuNqhhrm/L+8L8lX
+f5F3asZ05yCB1pnJRqVPESYDajoN8u1lWD18RYsWX60ld2PcwCxsHkPOyoBvAV1u
+PgCYq2l6s5FitBJR9RvIIWQXgYcJnkvvctXAE4sHkA/8YmzJKAUlmADFxObHh7nH
+B9Tr9F5MMMItWtOlRVOB7r7GpKZ4CIu9H0pG8rHeitdTJzb//0sRPwO4Ifpq00gF
+PYpm2+uw1qrcWOBG9wrbOEUMiFlt1c1y6CM7W0HiQg/FK+4Y4JiB7uaAlzUejTOI
+zOL6no+QbQSWHIEVAYNpQGNcTG+AuFlhiSI5DitSGvW5yCLRLs7Fv5AnqLM6z1Qg
+nRTXEKDaR/AFlAFB16izDRH4FYwpXtH01JTfdxvrFbPDjE2B07qlVwewnCVApXy1
+GNPPzEat9SO3vQ9t7PCKFzQV6OGGAn/dyMwguU6EDW8mcNxemcFiHUdiSfhhZpeH
+IcnqAMISo7J5oznEHRV6eZ2t27p8fCR6kY+/9tdw+mhgfM47E9D+jOa2LZcvRNK0
+IxKxNWtgUL0KlYtkFTGEhG+p36IePpoZOlbFukyAkrvx2uvJdjDKNhR7fljgKZp9
+ntpSnYfXJhwQrP8yTvoXUhnLpaxBTrh8cyLUFVm+2UtqRrz/+WA/Du8u19N0NmoU
+4Z65V0tXF/tW4DpeElKcg5Z9g3Srjon+LpuobgvaptlZ3rG7pXXklUAdxNfJ+4mu
+g8S64RYvfLamt1za0XyFbePfAbEPHUNKbKIqzGRB92kxJ6jYjgC9RQHp35SL3T55
+2DhArYHiRs4HAieVOggerJ2mFKRe1jgXpNH28cIvReVtjhPSR0h2/N1kktJoFN9j
+pAwsBXcE20H2DgeDq7MOl5klQOQIZqq2NOi/TtiDykzXOq9c52KT5YQDUiFYqQvD
+H29baw+SyQUZTso78q8DVb5S1dB3XyHStAKgoGq93+Wz/B1RLpKYack4xd4rdS5s
+pwx6XbBMdp7aDqOyz2KgKWf+dspEnt1aZSkLPUfnK1QqEuwBFSip0++f8lsYJwt6
+h2RR9rfNZmd8nt+mXhbGkKeiOagijsA/5zVB+4MgI0KR9sujHhdd3ikiYUTRDpcb
+AA7w3mFn6w2oiAcHGimR/cBGrmo7m6L0USsPGqFYBLIQfdAn5dEBlb2BCoA5VFZj
+jXKJF/jua7Y+DrPzh66goMGjpF9lBpoEP1rWQA/7bSpIp6mTsXcqppKrJq4X3UzK
+fnxoXMOzyXak8Q0RLDFj9NSgAWzr4VmwVpFWnocoXpsQlisCkXdTJvGnor8LLZr9
+sDZmzgcSix39SaRGPrUkPl4jLdocSaImMFvFf75Ln2LkiFK2PwLHbdxu5OHmQoCw
+7wBcsGkL2gXd3tYL2ns54yYSqMYHrxBbag+ndd5VaJnjZK34JNDCSh65qkKE7y7v
+Behj6SqW7qWtdmufzd16RndX/9C4+tnd6CZRltVVSxqHORQEFpJfBX3qZLp11vTQ
+Pib5SMqM0nVbJDVpqDeCAA==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+V7fazAcYfn/upNWI2MrDSQamEge7Y8sqGyEbHWTTDvIkXpdIuRisL8LJjvy83vue
+ZgYLruqRxsDQR/Wu7PMlj65sb/NkxpSPTHfwdQcOEP3MsixExszjuA1HqHtg+aNQ
+uFOiuMhxVPj6PMHq/Hqrqa85QcEVSbWPuLxSaFzY0ndkgyErZck8cU+0bbs6pFmr
+tNIeglsOu6Am3uxBT62KHdsx5/dbyBFUXzyoeMcVqVN/dSwFJEWKXykd+OnIo8cg
+TAWc+EOAJ6ExmKO/aLU8Un5EpThP6h/F+4FSrXQ8+zAfJHLLmWelIILCIn9r270y
+7CUxtRRDMVrzxeZaHx87Jw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1200 )
+`pragma protect data_block
+0H3ui++saKA3Qim7nBCnYyJXuXUUae6AJ4LYf9uQIt7dDyl6C5Q3z+wohgm7l6P/
+puE1YIk57wYrhZfaxaOZbQEeQcTD5dhNWYlNGXkVD3n3ordUMQqbpossg6k8GBbL
+hcT5AJLRLWp1fmFYHU/sChpXsLIvsw4ylUF+kPCiM/E2Qrxqk+h6yKLdH/qUhhl9
+SFhgQaFfWNjj6ajZXfTXAeH01G9YVoXQTrTURK7LCmy8Exrca33pvD2n8qRjNHVC
+SMvlBAlMyB9GhVbgRH5g1J3eexKd42EKVG1OYkkLmaw/2mYb6XQBYWGV+JPCs/lf
+iK57mI1tmXdY1dZroI+VNNMZ2ERNO1xPtSdY84zkg7t8kqVOzrKucAQtG6cbtv1M
+zOk4T1+sHwfHB5B0MAQxfUujCPIx48x0ucEJPziWVe4xGSV7Y/CdKWRJKyu1t9Fd
+RrGJ90FB8JcoftYS17u1PRbcM0J+K9rYOujMCI2wOiGLeakIZUzeUlYgu3AhwJ+p
+rFTdyQbZfeR1hJMbKn0z9kiVI7O//BPB79Ovy0ckHGOWpsznVPMik4mcftaUGBo/
+SKRhNP5RZ7ADTWwNcGVQ50K6Uk/FWRH/LjkzUDgrlN+BL9CVLgTUzw4n7TXZLYO1
+UUMwg1Abr+r4azUlV2lllRgjlWSPEmPeuWdkmDLE1kzi81/3MG9dkGcEzpCjQn1g
+wlq08l1m/9D6ssj9X+L9zWestpPbK8KKA36LM44lR7JM48DHZp/GFFbwyCyfem5J
+Yk9dQrVMSLDeQfsKUdIRfzsLFIcVo9j9nAjaOh5icY9Ju14nqLljzJxMSLXwpRpN
+pHlAUZkLKZ81BR2lNUcueWoYr1mNO5wt/8ZXKNAe4baXyx5pQlkEoPhDAu/MmaoV
+IQmRsNZAJw70Y6wneeDDkHad2vIHrOElxrM5Lnlhdq1qO4G2CjQ03nmLodMZn/cu
+JhstoiAqinvEClsBGQAEn59Mk5wMvMergihuxdt6qTvztnpZTBcB2JqJyHkCY2xR
+XYx3muggMb4QtLLic31NtDmfG8SMy5jpSvmNNdDUrcWI5vOaLo+t2/mVb5p6U/Z8
+WsFN6j8TpdcSc+yFYrWVYf/mabwUsQccMAaYaGcHwQTAXW/zRUxCfgK2BtB9AUG3
+Kwe4fuqZPo1NDmSSdATNh7Ls+wMag23tKAtoVCW+TQ3lLpto8vUWhWKQTH1PsQRx
++KWcJaJK96bA+80M/q4HUzR+yC6IUVQ9VRvWhgG0ygZTLKmQmJ/DKIzlw1lxCkA3
+JF0FRPBrpi2n+UOIXtU6FUAnUoSUl8Eeuwpycld1aaAI++CWVpk0pdWCRD85nBNb
+vAQ7vQzvYravu3V0bHTVB/w+yyy05bUUjf1aVui34DyQ1QLLkq3XQF2v9st57JGH
+egpS3SZqHPJ0AZAJJvkOXoxVRMHu48i9M6Wx9Qjtrh9EJee4xLdxqYrF04J9h9ck
+AvKxciqIeVCjtaleTRBLEWnwUKa6wADHB0WNBFNEidDe8gAcwWkZyKkh/VaUiupU
+5Cv90Shsjvie3xvNr1QXSLjEkUzHLYrvPv6IGVvcwtPvJNwajthWm4H1o8D7rdfK
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+idlb0ipwgIc0hiUfW9lCBvIc27j+O1T55dJ3BL9eUyC3AmELfvx2LyGUfXvUfYTf
+8sHVL37lgxYwkxIH4ZSSZQ1GK2zLKlNHYUEmXZIR/WoNIg7U3rYo+/OAX5LDNWz3
+I3htHfdktV9gYc7iVdI9VNrqBa0Gg55NmIOrO+wM2ME4dVbdMJVDfW+oOu9rTeme
+KOonn0oR5/zNCWcqkhf2z6BLLm49S0wwKQJc9Tn8j8aAVVAS5PR4HM/UAt+Pm5Qw
+qUaeukXs5OImR86WKmCfOXrROtxYmBZ//zwyzxGdjene5Dzf1Lue74V7vg9Yy8Es
+kofIx1Iiwvl5uhKqK0ZywQ==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1984 )
+`pragma protect data_block
+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
+M6eR/VTYArPQbA4OoPqXhQ==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+kjevziVpR4HNp6ABOs1UfEhnb+dX0JPweI6S3+LX30C9LF3xx7Xd/zMszyIOAsff
+hodfZOinnjjXzBncB8lZ/iwEBQcN9AOUuJkxqHw0xEX9lKugu7WOxROcH+yiXxDJ
+yy9yDzS1F865ocB3xO9FWkMnml1XZRqox2FTUI5GMVk0MxMQPCoaWPmG40cuqt8H
+oNSQWIvbZ0bwp2zXvC4BQlkXD2oWWu6JxxVIVspZ7XmHHSfSB+gK8bmQIk2JZPQd
+nB3A0s+SLUanWE/u+Muh6A5t3kkuvJ5Fy1rRHEwle6WO6L5S2arPlksoYEp7hfDo
+eW9+LO7WnZdnt0b3dQw5Mw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1104 )
+`pragma protect data_block
+LX5Dxt8B2z9u2haDN6HkGNj1Nxa2zeRWxlMLLnbgcY2+2ueKKYern04T7l3DicpU
+GAgNW7GQnUadJWzOBc5yfD2Z7DyC1zg+m258ATNxkXP9Ag8Pfl4MhmlpUpmkc23o
+YSNVfWttcQespNGB+Kj9g+/b/Ltzb/Pp1dgaxi5NIlG7FsWis/B/nSO/Vd0xLa8l
+gdvKVbsSlGSB1tT5WBnrVIsaLuvPuUdgdvXFHzLrEscW/eC28+m22DdewgK9tHYj
+l4yaTKwJ+7R2jtaFZr8jMmcRudxesBNt1kTJeA9U1nitqtdHVp23JcdwKc05jnrW
+tx2+meDVE/d5vcxlhTdpO8sz2YOw2Z0bAN+ieJFfUDfTuopqPBMc5GBfsrD40ELk
+H3q+hGhS+dIM3hrqhKDRW3tPFmcE5szwJbmOAxflm1SvQmlOnQVePLGdCuOZUUiI
+tz++pZ5FH+uAdkA40yZWh5MnKo5IcfFxWM2Jsum3JZvmVMjnI7N1x8f70kUe3UgZ
+KEcI12J/dpNLgdFOl+74xfjhKGoKm/BgN6Eb01T1RtdX6u5xQtgGCuv62jDE/Yt3
+eJjRnF/x+Ay39zeCLP9UQvypybEe14bN7gfHfWoAQe9HIG87Fm2nKjAzASr6QFRV
+DL1jo931/n1Lv9oZuWMfaF7ZCTxH6A9fBYglk+u3TWHi+TkymppU4hV3XjEHw3B7
+wrSwISGJRMUoCJ0wh/W9Iqj3EDcLmFUIHicsgmfrUkpdpcDqQYIKmCedP/+uQ37E
+hBOgLdq2ET/+T377dhiMAvLWIMnT6X9iEzqdVEMfkuPgbBZetAoTzb7IozmdA14+
+3PCjcT9XV5Hxvw1vyLKchF3xGFPaDFJgGJtzSIMeyTd9yK/++OeT1TQ0HFPfjjqB
+LI0xhfRlEGqOj1YzmolIUWRdGapI6Ywt79vK6KTeqg9K4jHGe3R1t2SJUnNELlNy
+Ju1RcPdn+2rNasE/ecNNfcArJ3ReZiWkO6Urua3WtmUiTzAVXd6UD4GUf3QUw0J5
+AefzuP3tFE5IfHRFmTZWTm7Y/JLAztWyBuag+6TRZLBlyPJDyNieFGTz4SEyTkAc
+CyJ51RLW7x5j/8mo5k2anYrG7q1YYjOUQHyaLPL/RwYcBBJS38HGPAl44N6KsB9m
+PGaS88rOnKmcVDest/nmsVi5/wR7C0xrMTpo2i2v7wOVW53j3SANDy4UhRYGQ75m
+9+CZTXcObV1oXJW0me53hFtEJ+qHc7eFGKyCVwTNanP47XH3aJey3ulpiTKXp9iD
+rurNoDvwMo1/Wv8495pWfGIS50V6wFEVgh2p6gt3S7meUf9sdMYrrKeQAKEna1ne
+Rf8O+xm0FaLvKNBVaPV3ISnRU2qTxpWhaUb3vTQN4TODsKco29kkHPqYRTREwU5p
+4ExJ23nclyx/By+ugg0UnN5jZ/DGDMK6ZJ2abjL+WrT31jFUNXgt+rmb/8ViJNIm
+`pragma protect end_protected
+
+//pragma protect end
+
+`undef IP_UUID
+`undef IP_NAME_CONCAT
+`undef IP_MODULE_NAME
diff --git a/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_define.vh b/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_define.vh
new file mode 100644
index 0000000..9a37056
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_define.vh
@@ -0,0 +1,53 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 5.6
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+localparam ARB_MODE = "ROUND_ROBIN_1";
+localparam S_PORTS = 1;
+localparam DATA_WIDTH = 32;
+localparam ADDR_WIDTH = 32;
+localparam M_PORTS = 3;
+localparam ID_WIDTH = 8;
+localparam USER_WIDTH = 3;
+localparam PROTOCOL = "AXI4";
diff --git a/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_tmpl.v b/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_tmpl.v
new file mode 100644
index 0000000..2917172
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_tmpl.v
@@ -0,0 +1,137 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 5.6
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+gAXIS_1to3_switch u_gAXIS_1to3_switch
+(
+ .rst_n ( rst_n ),
+ .clk ( clk ),
+ .s_axi_awvalid ( s_axi_awvalid ),
+ .s_axi_awaddr ( s_axi_awaddr ),
+ .s_axi_awlock ( s_axi_awlock ),
+ .s_axi_awready ( s_axi_awready ),
+ .s_axi_arvalid ( s_axi_arvalid ),
+ .s_axi_araddr ( s_axi_araddr ),
+ .s_axi_arlock ( s_axi_arlock ),
+ .s_axi_arready ( s_axi_arready ),
+ .s_axi_wvalid ( s_axi_wvalid ),
+ .s_axi_wlast ( s_axi_wlast ),
+ .s_axi_wid ( s_axi_wid ),
+ .s_axi_bready ( s_axi_bready ),
+ .s_axi_bresp ( s_axi_bresp ),
+ .s_axi_rready ( s_axi_rready ),
+ .s_axi_bid ( s_axi_bid ),
+ .s_axi_rid ( s_axi_rid ),
+ .s_axi_wdata ( s_axi_wdata ),
+ .s_axi_rdata ( s_axi_rdata ),
+ .s_axi_rresp ( s_axi_rresp ),
+ .s_axi_bvalid ( s_axi_bvalid ),
+ .s_axi_rvalid ( s_axi_rvalid ),
+ .s_axi_rlast ( s_axi_rlast ),
+ .s_axi_wstrb ( s_axi_wstrb ),
+ .m_axi_awvalid ( m_axi_awvalid ),
+ .m_axi_awaddr ( m_axi_awaddr ),
+ .m_axi_awlock ( m_axi_awlock ),
+ .m_axi_awready ( m_axi_awready ),
+ .m_axi_arvalid ( m_axi_arvalid ),
+ .m_axi_araddr ( m_axi_araddr ),
+ .m_axi_arlock ( m_axi_arlock ),
+ .m_axi_arready ( m_axi_arready ),
+ .m_axi_wvalid ( m_axi_wvalid ),
+ .m_axi_wlast ( m_axi_wlast ),
+ .m_axi_bready ( m_axi_bready ),
+ .m_axi_bresp ( m_axi_bresp ),
+ .m_axi_rready ( m_axi_rready ),
+ .m_axi_bid ( m_axi_bid ),
+ .m_axi_rid ( m_axi_rid ),
+ .m_axi_wdata ( m_axi_wdata ),
+ .m_axi_rdata ( m_axi_rdata ),
+ .m_axi_rresp ( m_axi_rresp ),
+ .m_axi_bvalid ( m_axi_bvalid ),
+ .m_axi_rvalid ( m_axi_rvalid ),
+ .m_axi_rlast ( m_axi_rlast ),
+ .m_axi_wstrb ( m_axi_wstrb ),
+ .m_axi_wready ( m_axi_wready ),
+ .s_axi_wready ( s_axi_wready ),
+ .s_axi_awprot ( s_axi_awprot ),
+ .s_axi_awcache ( s_axi_awcache ),
+ .s_axi_awqos ( s_axi_awqos ),
+ .s_axi_awuser ( s_axi_awuser ),
+ .s_axi_arqos ( s_axi_arqos ),
+ .s_axi_arcache ( s_axi_arcache ),
+ .m_axi_awprot ( m_axi_awprot ),
+ .s_axi_arid ( s_axi_arid ),
+ .s_axi_arsize ( s_axi_arsize ),
+ .s_axi_arlen ( s_axi_arlen ),
+ .s_axi_arburst ( s_axi_arburst ),
+ .s_axi_arprot ( s_axi_arprot ),
+ .s_axi_awid ( s_axi_awid ),
+ .s_axi_awburst ( s_axi_awburst ),
+ .s_axi_awlen ( s_axi_awlen ),
+ .s_axi_awsize ( s_axi_awsize ),
+ .m_axi_awid ( m_axi_awid ),
+ .m_axi_awburst ( m_axi_awburst ),
+ .m_axi_awlen ( m_axi_awlen ),
+ .m_axi_awsize ( m_axi_awsize ),
+ .m_axi_awcache ( m_axi_awcache ),
+ .m_axi_awqos ( m_axi_awqos ),
+ .m_axi_awuser ( m_axi_awuser ),
+ .m_axi_arprot ( m_axi_arprot ),
+ .m_axi_arburst ( m_axi_arburst ),
+ .m_axi_arlen ( m_axi_arlen ),
+ .m_axi_arsize ( m_axi_arsize ),
+ .m_axi_arcache ( m_axi_arcache ),
+ .m_axi_arqos ( m_axi_arqos ),
+ .m_axi_aruser ( m_axi_aruser ),
+ .m_axi_awregion ( m_axi_awregion ),
+ .m_axi_arregion ( m_axi_arregion ),
+ .m_axi_arid ( m_axi_arid ),
+ .m_axi_wuser ( m_axi_wuser ),
+ .m_axi_ruser ( m_axi_ruser ),
+ .m_axi_buser ( m_axi_buser ),
+ .s_axi_aruser ( s_axi_aruser ),
+ .s_axi_wuser ( s_axi_wuser ),
+ .s_axi_buser ( s_axi_buser ),
+ .s_axi_ruser ( s_axi_ruser )
+);
diff --git a/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_tmpl.vhd b/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_tmpl.vhd
new file mode 100644
index 0000000..e5cbfdb
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_tmpl.vhd
@@ -0,0 +1,229 @@
+--------------------------------------------------------------------------------
+-- Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+--
+-- This document contains proprietary information which is
+-- protected by copyright. All rights are reserved. This notice
+-- refers to original work by Efinix, Inc. which may be derivitive
+-- of other work distributed under license of the authors. In the
+-- case of derivative work, nothing in this notice overrides the
+-- original author's license agreement. Where applicable, the
+-- original license agreement is included in it's original
+-- unmodified form immediately below this header.
+--
+-- WARRANTY DISCLAIMER.
+-- THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+-- EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+-- RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+-- INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+-- MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+-- PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+-- WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+--
+-- LIMITATION OF LIABILITY.
+-- NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+-- INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+-- MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+-- OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+-- SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+-- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+-- GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+-- MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+-- THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+-- (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+-- BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+-- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+-- CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+-- APPLY TO LICENSEE.
+--
+--------------------------------------------------------------------------------
+------------- Begin Cut here for COMPONENT Declaration ------
+component gAXIS_1to3_switch is
+port (
+ rst_n : in std_logic;
+ clk : in std_logic;
+ s_axi_awvalid : in std_logic_vector(0 to 0);
+ s_axi_awaddr : in std_logic_vector(31 downto 0);
+ s_axi_awlock : in std_logic_vector(1 downto 0);
+ s_axi_awready : out std_logic_vector(0 to 0);
+ s_axi_arvalid : in std_logic_vector(0 to 0);
+ s_axi_araddr : in std_logic_vector(31 downto 0);
+ s_axi_arlock : in std_logic_vector(1 downto 0);
+ s_axi_arready : out std_logic_vector(0 to 0);
+ s_axi_wvalid : in std_logic_vector(0 to 0);
+ s_axi_wlast : in std_logic_vector(0 to 0);
+ s_axi_wid : in std_logic_vector(7 downto 0);
+ s_axi_bready : in std_logic_vector(0 to 0);
+ s_axi_bresp : out std_logic_vector(1 downto 0);
+ s_axi_rready : in std_logic_vector(0 to 0);
+ s_axi_bid : out std_logic_vector(7 downto 0);
+ s_axi_rid : out std_logic_vector(7 downto 0);
+ s_axi_wdata : in std_logic_vector(31 downto 0);
+ s_axi_rdata : out std_logic_vector(31 downto 0);
+ s_axi_rresp : out std_logic_vector(1 downto 0);
+ s_axi_bvalid : out std_logic_vector(0 to 0);
+ s_axi_rvalid : out std_logic_vector(0 to 0);
+ s_axi_rlast : out std_logic_vector(0 to 0);
+ s_axi_wstrb : in std_logic_vector(3 downto 0);
+ m_axi_awvalid : out std_logic_vector(2 downto 0);
+ m_axi_awaddr : out std_logic_vector(95 downto 0);
+ m_axi_awlock : out std_logic_vector(5 downto 0);
+ m_axi_awready : in std_logic_vector(2 downto 0);
+ m_axi_arvalid : out std_logic_vector(2 downto 0);
+ m_axi_araddr : out std_logic_vector(95 downto 0);
+ m_axi_arlock : out std_logic_vector(5 downto 0);
+ m_axi_arready : in std_logic_vector(2 downto 0);
+ m_axi_wvalid : out std_logic_vector(2 downto 0);
+ m_axi_wlast : out std_logic_vector(2 downto 0);
+ m_axi_bready : out std_logic_vector(2 downto 0);
+ m_axi_bresp : in std_logic_vector(5 downto 0);
+ m_axi_rready : out std_logic_vector(2 downto 0);
+ m_axi_bid : in std_logic_vector(23 downto 0);
+ m_axi_rid : in std_logic_vector(23 downto 0);
+ m_axi_wdata : out std_logic_vector(95 downto 0);
+ m_axi_rdata : in std_logic_vector(95 downto 0);
+ m_axi_rresp : in std_logic_vector(5 downto 0);
+ m_axi_bvalid : in std_logic_vector(2 downto 0);
+ m_axi_rvalid : in std_logic_vector(2 downto 0);
+ m_axi_rlast : in std_logic_vector(2 downto 0);
+ m_axi_wstrb : out std_logic_vector(11 downto 0);
+ m_axi_wready : in std_logic_vector(2 downto 0);
+ s_axi_wready : out std_logic_vector(0 to 0);
+ s_axi_awprot : in std_logic_vector(2 downto 0);
+ s_axi_awcache : in std_logic_vector(3 downto 0);
+ s_axi_awqos : in std_logic_vector(3 downto 0);
+ s_axi_awuser : in std_logic_vector(2 downto 0);
+ s_axi_arqos : in std_logic_vector(3 downto 0);
+ s_axi_arcache : in std_logic_vector(3 downto 0);
+ m_axi_awprot : out std_logic_vector(8 downto 0);
+ s_axi_arid : in std_logic_vector(7 downto 0);
+ s_axi_arsize : in std_logic_vector(2 downto 0);
+ s_axi_arlen : in std_logic_vector(7 downto 0);
+ s_axi_arburst : in std_logic_vector(1 downto 0);
+ s_axi_arprot : in std_logic_vector(2 downto 0);
+ s_axi_awid : in std_logic_vector(7 downto 0);
+ s_axi_awburst : in std_logic_vector(1 downto 0);
+ s_axi_awlen : in std_logic_vector(7 downto 0);
+ s_axi_awsize : in std_logic_vector(2 downto 0);
+ m_axi_awid : out std_logic_vector(23 downto 0);
+ m_axi_awburst : out std_logic_vector(5 downto 0);
+ m_axi_awlen : out std_logic_vector(23 downto 0);
+ m_axi_awsize : out std_logic_vector(8 downto 0);
+ m_axi_awcache : out std_logic_vector(11 downto 0);
+ m_axi_awqos : out std_logic_vector(11 downto 0);
+ m_axi_awuser : out std_logic_vector(8 downto 0);
+ m_axi_arprot : out std_logic_vector(8 downto 0);
+ m_axi_arburst : out std_logic_vector(5 downto 0);
+ m_axi_arlen : out std_logic_vector(23 downto 0);
+ m_axi_arsize : out std_logic_vector(8 downto 0);
+ m_axi_arcache : out std_logic_vector(11 downto 0);
+ m_axi_arqos : out std_logic_vector(11 downto 0);
+ m_axi_aruser : out std_logic_vector(8 downto 0);
+ m_axi_awregion : out std_logic_vector(11 downto 0);
+ m_axi_arregion : out std_logic_vector(11 downto 0);
+ m_axi_arid : out std_logic_vector(23 downto 0);
+ m_axi_wuser : out std_logic_vector(8 downto 0);
+ m_axi_ruser : in std_logic_vector(8 downto 0);
+ m_axi_buser : in std_logic_vector(8 downto 0);
+ s_axi_aruser : in std_logic_vector(2 downto 0);
+ s_axi_wuser : in std_logic_vector(2 downto 0);
+ s_axi_buser : out std_logic_vector(2 downto 0);
+ s_axi_ruser : out std_logic_vector(2 downto 0)
+);
+end component gAXIS_1to3_switch;
+
+---------------------- End COMPONENT Declaration ------------
+------------- Begin Cut here for INSTANTIATION Template -----
+u_gAXIS_1to3_switch : gAXIS_1to3_switch
+port map (
+ rst_n => rst_n,
+ clk => clk,
+ s_axi_awvalid => s_axi_awvalid,
+ s_axi_awaddr => s_axi_awaddr,
+ s_axi_awlock => s_axi_awlock,
+ s_axi_awready => s_axi_awready,
+ s_axi_arvalid => s_axi_arvalid,
+ s_axi_araddr => s_axi_araddr,
+ s_axi_arlock => s_axi_arlock,
+ s_axi_arready => s_axi_arready,
+ s_axi_wvalid => s_axi_wvalid,
+ s_axi_wlast => s_axi_wlast,
+ s_axi_wid => s_axi_wid,
+ s_axi_bready => s_axi_bready,
+ s_axi_bresp => s_axi_bresp,
+ s_axi_rready => s_axi_rready,
+ s_axi_bid => s_axi_bid,
+ s_axi_rid => s_axi_rid,
+ s_axi_wdata => s_axi_wdata,
+ s_axi_rdata => s_axi_rdata,
+ s_axi_rresp => s_axi_rresp,
+ s_axi_bvalid => s_axi_bvalid,
+ s_axi_rvalid => s_axi_rvalid,
+ s_axi_rlast => s_axi_rlast,
+ s_axi_wstrb => s_axi_wstrb,
+ m_axi_awvalid => m_axi_awvalid,
+ m_axi_awaddr => m_axi_awaddr,
+ m_axi_awlock => m_axi_awlock,
+ m_axi_awready => m_axi_awready,
+ m_axi_arvalid => m_axi_arvalid,
+ m_axi_araddr => m_axi_araddr,
+ m_axi_arlock => m_axi_arlock,
+ m_axi_arready => m_axi_arready,
+ m_axi_wvalid => m_axi_wvalid,
+ m_axi_wlast => m_axi_wlast,
+ m_axi_bready => m_axi_bready,
+ m_axi_bresp => m_axi_bresp,
+ m_axi_rready => m_axi_rready,
+ m_axi_bid => m_axi_bid,
+ m_axi_rid => m_axi_rid,
+ m_axi_wdata => m_axi_wdata,
+ m_axi_rdata => m_axi_rdata,
+ m_axi_rresp => m_axi_rresp,
+ m_axi_bvalid => m_axi_bvalid,
+ m_axi_rvalid => m_axi_rvalid,
+ m_axi_rlast => m_axi_rlast,
+ m_axi_wstrb => m_axi_wstrb,
+ m_axi_wready => m_axi_wready,
+ s_axi_wready => s_axi_wready,
+ s_axi_awprot => s_axi_awprot,
+ s_axi_awcache => s_axi_awcache,
+ s_axi_awqos => s_axi_awqos,
+ s_axi_awuser => s_axi_awuser,
+ s_axi_arqos => s_axi_arqos,
+ s_axi_arcache => s_axi_arcache,
+ m_axi_awprot => m_axi_awprot,
+ s_axi_arid => s_axi_arid,
+ s_axi_arsize => s_axi_arsize,
+ s_axi_arlen => s_axi_arlen,
+ s_axi_arburst => s_axi_arburst,
+ s_axi_arprot => s_axi_arprot,
+ s_axi_awid => s_axi_awid,
+ s_axi_awburst => s_axi_awburst,
+ s_axi_awlen => s_axi_awlen,
+ s_axi_awsize => s_axi_awsize,
+ m_axi_awid => m_axi_awid,
+ m_axi_awburst => m_axi_awburst,
+ m_axi_awlen => m_axi_awlen,
+ m_axi_awsize => m_axi_awsize,
+ m_axi_awcache => m_axi_awcache,
+ m_axi_awqos => m_axi_awqos,
+ m_axi_awuser => m_axi_awuser,
+ m_axi_arprot => m_axi_arprot,
+ m_axi_arburst => m_axi_arburst,
+ m_axi_arlen => m_axi_arlen,
+ m_axi_arsize => m_axi_arsize,
+ m_axi_arcache => m_axi_arcache,
+ m_axi_arqos => m_axi_arqos,
+ m_axi_aruser => m_axi_aruser,
+ m_axi_awregion => m_axi_awregion,
+ m_axi_arregion => m_axi_arregion,
+ m_axi_arid => m_axi_arid,
+ m_axi_wuser => m_axi_wuser,
+ m_axi_ruser => m_axi_ruser,
+ m_axi_buser => m_axi_buser,
+ s_axi_aruser => s_axi_aruser,
+ s_axi_wuser => s_axi_wuser,
+ s_axi_buser => s_axi_buser,
+ s_axi_ruser => s_axi_ruser
+);
+
+------------------------ End INSTANTIATION Template ---------
diff --git a/Ti375C529_devkit/ip/gAXIS_1to3_switch/ipm/component.pickle b/Ti375C529_devkit/ip/gAXIS_1to3_switch/ipm/component.pickle
new file mode 100644
index 0000000..3730a24
Binary files /dev/null and b/Ti375C529_devkit/ip/gAXIS_1to3_switch/ipm/component.pickle differ
diff --git a/Ti375C529_devkit/ip/gAXIS_1to3_switch/ipm/graph.pickle b/Ti375C529_devkit/ip/gAXIS_1to3_switch/ipm/graph.pickle
new file mode 100644
index 0000000..264dde4
Binary files /dev/null and b/Ti375C529_devkit/ip/gAXIS_1to3_switch/ipm/graph.pickle differ
diff --git a/Ti375C529_devkit/ip/gAXIS_1to3_switch/settings.json b/Ti375C529_devkit/ip/gAXIS_1to3_switch/settings.json
new file mode 100644
index 0000000..9bd53cf
--- /dev/null
+++ b/Ti375C529_devkit/ip/gAXIS_1to3_switch/settings.json
@@ -0,0 +1,54 @@
+{
+ "args": [
+ "-o",
+ "gAXIS_1to3_switch",
+ "--base_path",
+ "ip",
+ "--vlnv",
+ {
+ "vendor": "efinixinc.com",
+ "library": "axi_infra",
+ "name": "efx_axi_interconnect",
+ "version": "5.6"
+ }
+ ],
+ "conf": {
+ "ARB_MODE": "\"ROUND_ROBIN_1\"",
+ "S_PORTS": "1",
+ "TABLE0_AXI_S0__MIN": "32'd0",
+ "TABLE0_AXI_S1__MIN": "32'd512",
+ "TABLE0_AXI_S2__MIN": "32'd285212672",
+ "TABLE0_AXI_S3__MIN": "32'd286261248",
+ "TABLE0_AXI_S4__MIN": "32'd536870912",
+ "TABLE0_AXI_S5__MIN": "32'd805306368",
+ "TABLE0_AXI_S6__MIN": "32'd1073741824",
+ "TABLE0_AXI_S7__MIN": "32'd1090519040",
+ "TABLE0_AXI_S0__MAX": "32'd9",
+ "TABLE0_AXI_S1__MAX": "32'd8",
+ "TABLE0_AXI_S2__MAX": "32'd12",
+ "TABLE0_AXI_S3__MAX": "32'd20",
+ "TABLE0_AXI_S4__MAX": "32'd28",
+ "TABLE0_AXI_S5__MAX": "32'd28",
+ "TABLE0_AXI_S6__MAX": "32'd24",
+ "TABLE0_AXI_S7__MAX": "32'd20",
+ "DATA_WIDTH": "32",
+ "ADDR_WIDTH": "32",
+ "M_PORTS": "2",
+ "ID_WIDTH": "8",
+ "USER_WIDTH": "3",
+ "PROTOCOL": "\"AXI4_LITE\""
+ },
+ "output": {
+ "external_script_generator": [],
+ "external_source_source": [],
+ "external_example_example": [],
+ "external_testbench_synopsys": [],
+ "external_testbench_modelsim": [],
+ "external_testbench_ncsim": [],
+ "external_testbench_aldec": [],
+ "external_testbench_testbench": []
+ },
+ "ooc_synthesis": {},
+ "sw_version": "2026.1.132",
+ "external_path_option": "RELATIVE_PATH"
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gDMA/gDMA.v b/Ti375C529_devkit/ip/gDMA/gDMA.v
new file mode 100644
index 0000000..97c9922
--- /dev/null
+++ b/Ti375C529_devkit/ip/gDMA/gDMA.v
@@ -0,0 +1,11641 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 6.4.2
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+`define IP_UUID _a048ca8f51874147a1cd65d43e6523ef
+`define IP_NAME_CONCAT(a,b) a``b
+`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
+module gDMA
+(
+ input clk,
+ input ctrl_reset,
+ input reset,
+ input ctrl_clk,
+ input [13:0] ctrl_PADDR,
+ output ctrl_PREADY,
+ input ctrl_PENABLE,
+ input ctrl_PSEL,
+ input ctrl_PWRITE,
+ input [31:0] ctrl_PWDATA,
+ output [31:0] ctrl_PRDATA,
+ output ctrl_PSLVERROR,
+ output [1:0] ctrl_interrupts,
+ output read_arvalid,
+ output [31:0] read_araddr,
+ input read_arready,
+ output [3:0] read_arregion,
+ output [7:0] read_arlen,
+ output [2:0] read_arsize,
+ output [1:0] read_arburst,
+ output read_arlock,
+ output [3:0] read_arcache,
+ output [3:0] read_arqos,
+ output [2:0] read_arprot,
+ output read_rready,
+ input read_rvalid,
+ input [127:0] read_rdata,
+ input read_rlast,
+ output write_awvalid,
+ input write_awready,
+ output [31:0] write_awaddr,
+ output [3:0] write_awregion,
+ output [7:0] write_awlen,
+ output [2:0] write_awsize,
+ output [1:0] write_awburst,
+ output write_awlock,
+ output [3:0] write_awcache,
+ output [3:0] write_awqos,
+ output [2:0] write_awprot,
+ output write_wvalid,
+ input write_wready,
+ output [127:0] write_wdata,
+ output [15:0] write_wstrb,
+ output write_wlast,
+ input write_bvalid,
+ output write_bready,
+ input [1:0] write_bresp,
+ output dat1_o_tvalid,
+ input dat1_o_tready,
+ output [7:0] dat1_o_tdata,
+ output [0:0] dat1_o_tkeep,
+ output [3:0] dat1_o_tdest,
+ output dat1_o_tlast,
+ output io_0_descriptorUpdate,
+ input dat1_o_clk,
+ input dat1_o_reset,
+ input dat0_i_clk,
+ input dat0_i_reset,
+ input dat0_i_tvalid,
+ output dat0_i_tready,
+ input [7:0] dat0_i_tdata,
+ input [0:0] dat0_i_tkeep,
+ input [3:0] dat0_i_tdest,
+ input dat0_i_tlast,
+ input [1:0] read_rresp,
+ output io_1_descriptorUpdate
+);
+`IP_MODULE_NAME(EfxDMA)u_EfxDMA
+(
+ .clk ( clk ),
+ .ctrl_reset ( ctrl_reset ),
+ .reset ( reset ),
+ .ctrl_clk ( ctrl_clk ),
+ .ctrl_PADDR ( ctrl_PADDR ),
+ .ctrl_PREADY ( ctrl_PREADY ),
+ .ctrl_PENABLE ( ctrl_PENABLE ),
+ .ctrl_PSEL ( ctrl_PSEL ),
+ .ctrl_PWRITE ( ctrl_PWRITE ),
+ .ctrl_PWDATA ( ctrl_PWDATA ),
+ .ctrl_PRDATA ( ctrl_PRDATA ),
+ .ctrl_PSLVERROR ( ctrl_PSLVERROR ),
+ .ctrl_interrupts ( ctrl_interrupts ),
+ .read_arvalid ( read_arvalid ),
+ .read_araddr ( read_araddr ),
+ .read_arready ( read_arready ),
+ .read_arregion ( read_arregion ),
+ .read_arlen ( read_arlen ),
+ .read_arsize ( read_arsize ),
+ .read_arburst ( read_arburst ),
+ .read_arlock ( read_arlock ),
+ .read_arcache ( read_arcache ),
+ .read_arqos ( read_arqos ),
+ .read_arprot ( read_arprot ),
+ .read_rready ( read_rready ),
+ .read_rvalid ( read_rvalid ),
+ .read_rdata ( read_rdata ),
+ .read_rlast ( read_rlast ),
+ .write_awvalid ( write_awvalid ),
+ .write_awready ( write_awready ),
+ .write_awaddr ( write_awaddr ),
+ .write_awregion ( write_awregion ),
+ .write_awlen ( write_awlen ),
+ .write_awsize ( write_awsize ),
+ .write_awburst ( write_awburst ),
+ .write_awlock ( write_awlock ),
+ .write_awcache ( write_awcache ),
+ .write_awqos ( write_awqos ),
+ .write_awprot ( write_awprot ),
+ .write_wvalid ( write_wvalid ),
+ .write_wready ( write_wready ),
+ .write_wdata ( write_wdata ),
+ .write_wstrb ( write_wstrb ),
+ .write_wlast ( write_wlast ),
+ .write_bvalid ( write_bvalid ),
+ .write_bready ( write_bready ),
+ .write_bresp ( write_bresp ),
+ .dat1_o_tvalid ( dat1_o_tvalid ),
+ .dat1_o_tready ( dat1_o_tready ),
+ .dat1_o_tdata ( dat1_o_tdata ),
+ .dat1_o_tkeep ( dat1_o_tkeep ),
+ .dat1_o_tdest ( dat1_o_tdest ),
+ .dat1_o_tlast ( dat1_o_tlast ),
+ .io_0_descriptorUpdate ( io_0_descriptorUpdate ),
+ .dat1_o_clk ( dat1_o_clk ),
+ .dat1_o_reset ( dat1_o_reset ),
+ .dat0_i_clk ( dat0_i_clk ),
+ .dat0_i_reset ( dat0_i_reset ),
+ .dat0_i_tvalid ( dat0_i_tvalid ),
+ .dat0_i_tready ( dat0_i_tready ),
+ .dat0_i_tdata ( dat0_i_tdata ),
+ .dat0_i_tkeep ( dat0_i_tkeep ),
+ .dat0_i_tdest ( dat0_i_tdest ),
+ .dat0_i_tlast ( dat0_i_tlast ),
+ .read_rresp ( read_rresp ),
+ .io_1_descriptorUpdate ( io_1_descriptorUpdate )
+);
+endmodule
+
+// Generator : SpinalHDL dev git head : a69f4b9a329be784802c37cd8038b7dc9aec3094
+// Component : EfxDMA_a048ca8f51874147a1cd65d43e6523ef
+
+`timescale 1ns/1ps
+
+module EfxDMA_a048ca8f51874147a1cd65d43e6523ef (
+ input wire [13:0] ctrl_PADDR,
+ input wire [0:0] ctrl_PSEL,
+ input wire ctrl_PENABLE,
+ output wire ctrl_PREADY,
+ input wire ctrl_PWRITE,
+ input wire [31:0] ctrl_PWDATA,
+ output wire [31:0] ctrl_PRDATA,
+ output wire ctrl_PSLVERROR,
+ output wire [1:0] ctrl_interrupts,
+ output wire read_arvalid,
+ input wire read_arready,
+ output wire [31:0] read_araddr,
+ output wire [3:0] read_arregion,
+ output wire [7:0] read_arlen,
+ output wire [2:0] read_arsize,
+ output wire [1:0] read_arburst,
+ output wire [0:0] read_arlock,
+ output wire [3:0] read_arcache,
+ output wire [3:0] read_arqos,
+ output wire [2:0] read_arprot,
+ input wire read_rvalid,
+ output wire read_rready,
+ input wire [127:0] read_rdata,
+ input wire [1:0] read_rresp,
+ input wire read_rlast,
+ output wire write_awvalid,
+ input wire write_awready,
+ output wire [31:0] write_awaddr,
+ output wire [3:0] write_awregion,
+ output wire [7:0] write_awlen,
+ output wire [2:0] write_awsize,
+ output wire [1:0] write_awburst,
+ output wire [0:0] write_awlock,
+ output wire [3:0] write_awcache,
+ output wire [3:0] write_awqos,
+ output wire [2:0] write_awprot,
+ output wire write_wvalid,
+ input wire write_wready,
+ output wire [127:0] write_wdata,
+ output wire [15:0] write_wstrb,
+ output wire write_wlast,
+ input wire write_bvalid,
+ output wire write_bready,
+ input wire [1:0] write_bresp,
+ input wire dat0_i_tvalid,
+ output wire dat0_i_tready,
+ input wire [7:0] dat0_i_tdata,
+ input wire [0:0] dat0_i_tkeep,
+ input wire [3:0] dat0_i_tdest,
+ input wire dat0_i_tlast,
+ output wire dat1_o_tvalid,
+ input wire dat1_o_tready,
+ output wire [7:0] dat1_o_tdata,
+ output wire [0:0] dat1_o_tkeep,
+ output wire [3:0] dat1_o_tdest,
+ output wire dat1_o_tlast,
+ output wire io_0_descriptorUpdate,
+ output wire io_1_descriptorUpdate,
+ input wire clk,
+ input wire reset,
+ input wire ctrl_clk,
+ input wire ctrl_reset,
+ input wire dat0_i_clk,
+ input wire dat0_i_reset,
+ input wire dat1_o_clk,
+ input wire dat1_o_reset
+);
+
+ wire core_io_sgRead_cmd_valid;
+ wire core_io_sgRead_cmd_payload_last;
+ wire [0:0] core_io_sgRead_cmd_payload_fragment_opcode;
+ wire [31:0] core_io_sgRead_cmd_payload_fragment_address;
+ wire [4:0] core_io_sgRead_cmd_payload_fragment_length;
+ wire [0:0] core_io_sgRead_cmd_payload_fragment_context;
+ wire core_io_sgRead_rsp_ready;
+ wire core_io_sgWrite_cmd_valid;
+ wire core_io_sgWrite_cmd_payload_last;
+ wire [0:0] core_io_sgWrite_cmd_payload_fragment_opcode;
+ wire [31:0] core_io_sgWrite_cmd_payload_fragment_address;
+ wire [1:0] core_io_sgWrite_cmd_payload_fragment_length;
+ wire [127:0] core_io_sgWrite_cmd_payload_fragment_data;
+ wire [15:0] core_io_sgWrite_cmd_payload_fragment_mask;
+ wire [0:0] core_io_sgWrite_cmd_payload_fragment_context;
+ wire core_io_sgWrite_rsp_ready;
+ wire core_io_read_cmd_valid;
+ wire core_io_read_cmd_payload_last;
+ wire [0:0] core_io_read_cmd_payload_fragment_opcode;
+ wire [31:0] core_io_read_cmd_payload_fragment_address;
+ wire [11:0] core_io_read_cmd_payload_fragment_length;
+ wire [20:0] core_io_read_cmd_payload_fragment_context;
+ wire core_io_read_rsp_ready;
+ wire core_io_write_cmd_valid;
+ wire core_io_write_cmd_payload_last;
+ wire [0:0] core_io_write_cmd_payload_fragment_opcode;
+ wire [31:0] core_io_write_cmd_payload_fragment_address;
+ wire [11:0] core_io_write_cmd_payload_fragment_length;
+ wire [127:0] core_io_write_cmd_payload_fragment_data;
+ wire [15:0] core_io_write_cmd_payload_fragment_mask;
+ wire [12:0] core_io_write_cmd_payload_fragment_context;
+ wire core_io_write_rsp_ready;
+ wire core_io_outputs_0_valid;
+ wire [63:0] core_io_outputs_0_payload_data;
+ wire [7:0] core_io_outputs_0_payload_mask;
+ wire [3:0] core_io_outputs_0_payload_sink;
+ wire core_io_outputs_0_payload_last;
+ wire core_io_inputs_0_ready;
+ wire [1:0] core_io_interrupts;
+ wire core_io_ctrl_PREADY;
+ wire [31:0] core_io_ctrl_PRDATA;
+ wire core_io_ctrl_PSLVERROR;
+ wire core_ll_0_descriptorUpdate;
+ wire core_ll_1_descriptorUpdate;
+ wire withCtrlCc_apbCc_io_input_PREADY;
+ wire [31:0] withCtrlCc_apbCc_io_input_PRDATA;
+ wire withCtrlCc_apbCc_io_input_PSLVERROR;
+ wire [13:0] withCtrlCc_apbCc_io_output_PADDR;
+ wire [0:0] withCtrlCc_apbCc_io_output_PSEL;
+ wire withCtrlCc_apbCc_io_output_PENABLE;
+ wire withCtrlCc_apbCc_io_output_PWRITE;
+ wire [31:0] withCtrlCc_apbCc_io_output_PWDATA;
+ wire [1:0] io_interrupts_buffercc_io_dataOut;
+ wire readLogic_sourceRemover_io_input_cmd_ready;
+ wire readLogic_sourceRemover_io_input_rsp_valid;
+ wire readLogic_sourceRemover_io_input_rsp_payload_last;
+ wire [0:0] readLogic_sourceRemover_io_input_rsp_payload_fragment_source;
+ wire [0:0] readLogic_sourceRemover_io_input_rsp_payload_fragment_opcode;
+ wire [127:0] readLogic_sourceRemover_io_input_rsp_payload_fragment_data;
+ wire [20:0] readLogic_sourceRemover_io_input_rsp_payload_fragment_context;
+ wire readLogic_sourceRemover_io_output_cmd_valid;
+ wire readLogic_sourceRemover_io_output_cmd_payload_last;
+ wire [0:0] readLogic_sourceRemover_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] readLogic_sourceRemover_io_output_cmd_payload_fragment_address;
+ wire [11:0] readLogic_sourceRemover_io_output_cmd_payload_fragment_length;
+ wire [21:0] readLogic_sourceRemover_io_output_cmd_payload_fragment_context;
+ wire readLogic_sourceRemover_io_output_rsp_ready;
+ wire readLogic_bridge_io_input_cmd_ready;
+ wire readLogic_bridge_io_input_rsp_valid;
+ wire readLogic_bridge_io_input_rsp_payload_last;
+ wire [0:0] readLogic_bridge_io_input_rsp_payload_fragment_opcode;
+ wire [127:0] readLogic_bridge_io_input_rsp_payload_fragment_data;
+ wire [21:0] readLogic_bridge_io_input_rsp_payload_fragment_context;
+ wire readLogic_bridge_io_output_ar_valid;
+ wire [31:0] readLogic_bridge_io_output_ar_payload_addr;
+ wire [7:0] readLogic_bridge_io_output_ar_payload_len;
+ wire [2:0] readLogic_bridge_io_output_ar_payload_size;
+ wire [3:0] readLogic_bridge_io_output_ar_payload_cache;
+ wire [2:0] readLogic_bridge_io_output_ar_payload_prot;
+ wire readLogic_bridge_io_output_r_ready;
+ wire writeLogic_sourceRemover_io_input_cmd_ready;
+ wire writeLogic_sourceRemover_io_input_rsp_valid;
+ wire writeLogic_sourceRemover_io_input_rsp_payload_last;
+ wire [0:0] writeLogic_sourceRemover_io_input_rsp_payload_fragment_source;
+ wire [0:0] writeLogic_sourceRemover_io_input_rsp_payload_fragment_opcode;
+ wire [12:0] writeLogic_sourceRemover_io_input_rsp_payload_fragment_context;
+ wire writeLogic_sourceRemover_io_output_cmd_valid;
+ wire writeLogic_sourceRemover_io_output_cmd_payload_last;
+ wire [0:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_address;
+ wire [11:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_length;
+ wire [127:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_data;
+ wire [15:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_mask;
+ wire [13:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_context;
+ wire writeLogic_sourceRemover_io_output_rsp_ready;
+ wire writeLogic_bridge_io_input_cmd_ready;
+ wire writeLogic_bridge_io_input_rsp_valid;
+ wire writeLogic_bridge_io_input_rsp_payload_last;
+ wire [0:0] writeLogic_bridge_io_input_rsp_payload_fragment_opcode;
+ wire [13:0] writeLogic_bridge_io_input_rsp_payload_fragment_context;
+ wire writeLogic_bridge_io_output_aw_valid;
+ wire [31:0] writeLogic_bridge_io_output_aw_payload_addr;
+ wire [7:0] writeLogic_bridge_io_output_aw_payload_len;
+ wire [2:0] writeLogic_bridge_io_output_aw_payload_size;
+ wire [3:0] writeLogic_bridge_io_output_aw_payload_cache;
+ wire [2:0] writeLogic_bridge_io_output_aw_payload_prot;
+ wire writeLogic_bridge_io_output_w_valid;
+ wire [127:0] writeLogic_bridge_io_output_w_payload_data;
+ wire [15:0] writeLogic_bridge_io_output_w_payload_strb;
+ wire writeLogic_bridge_io_output_w_payload_last;
+ wire writeLogic_bridge_io_output_b_ready;
+ wire inputsAdapter_0_upsizer_logic_io_input_ready;
+ wire inputsAdapter_0_upsizer_logic_io_output_valid;
+ wire [63:0] inputsAdapter_0_upsizer_logic_io_output_payload_data;
+ wire [7:0] inputsAdapter_0_upsizer_logic_io_output_payload_mask;
+ wire [3:0] inputsAdapter_0_upsizer_logic_io_output_payload_sink;
+ wire inputsAdapter_0_upsizer_logic_io_output_payload_last;
+ wire inputsAdapter_0_crossclock_fifo_io_push_ready;
+ wire inputsAdapter_0_crossclock_fifo_io_pop_valid;
+ wire [63:0] inputsAdapter_0_crossclock_fifo_io_pop_payload_data;
+ wire [7:0] inputsAdapter_0_crossclock_fifo_io_pop_payload_mask;
+ wire [3:0] inputsAdapter_0_crossclock_fifo_io_pop_payload_sink;
+ wire inputsAdapter_0_crossclock_fifo_io_pop_payload_last;
+ wire [4:0] inputsAdapter_0_crossclock_fifo_io_pushOccupancy;
+ wire [4:0] inputsAdapter_0_crossclock_fifo_io_popOccupancy;
+ wire outputsAdapter_0_crossclock_fifo_io_push_ready;
+ wire outputsAdapter_0_crossclock_fifo_io_pop_valid;
+ wire [63:0] outputsAdapter_0_crossclock_fifo_io_pop_payload_data;
+ wire [7:0] outputsAdapter_0_crossclock_fifo_io_pop_payload_mask;
+ wire [3:0] outputsAdapter_0_crossclock_fifo_io_pop_payload_sink;
+ wire outputsAdapter_0_crossclock_fifo_io_pop_payload_last;
+ wire [4:0] outputsAdapter_0_crossclock_fifo_io_pushOccupancy;
+ wire [4:0] outputsAdapter_0_crossclock_fifo_io_popOccupancy;
+ wire outputsAdapter_0_sparseDownsizer_logic_io_input_ready;
+ wire outputsAdapter_0_sparseDownsizer_logic_io_output_valid;
+ wire [7:0] outputsAdapter_0_sparseDownsizer_logic_io_output_payload_data;
+ wire [0:0] outputsAdapter_0_sparseDownsizer_logic_io_output_payload_mask;
+ wire [3:0] outputsAdapter_0_sparseDownsizer_logic_io_output_payload_sink;
+ wire outputsAdapter_0_sparseDownsizer_logic_io_output_payload_last;
+ wire interconnect_read_aggregated_arbiter_io_inputs_0_cmd_ready;
+ wire interconnect_read_aggregated_arbiter_io_inputs_0_rsp_valid;
+ wire interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_last;
+ wire [0:0] interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode;
+ wire [127:0] interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_data;
+ wire [0:0] interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context;
+ wire interconnect_read_aggregated_arbiter_io_inputs_1_cmd_ready;
+ wire interconnect_read_aggregated_arbiter_io_inputs_1_rsp_valid;
+ wire interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_last;
+ wire [0:0] interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode;
+ wire [127:0] interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_data;
+ wire [20:0] interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context;
+ wire interconnect_read_aggregated_arbiter_io_output_cmd_valid;
+ wire interconnect_read_aggregated_arbiter_io_output_cmd_payload_last;
+ wire [0:0] interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_source;
+ wire [0:0] interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_address;
+ wire [11:0] interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_length;
+ wire [20:0] interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_context;
+ wire interconnect_read_aggregated_arbiter_io_output_rsp_ready;
+ wire interconnect_write_aggregated_arbiter_io_inputs_0_cmd_ready;
+ wire interconnect_write_aggregated_arbiter_io_inputs_0_rsp_valid;
+ wire interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_last;
+ wire [0:0] interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode;
+ wire [0:0] interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context;
+ wire interconnect_write_aggregated_arbiter_io_inputs_1_cmd_ready;
+ wire interconnect_write_aggregated_arbiter_io_inputs_1_rsp_valid;
+ wire interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_last;
+ wire [0:0] interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode;
+ wire [12:0] interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context;
+ wire interconnect_write_aggregated_arbiter_io_output_cmd_valid;
+ wire interconnect_write_aggregated_arbiter_io_output_cmd_payload_last;
+ wire [0:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_source;
+ wire [0:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_address;
+ wire [11:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_length;
+ wire [127:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_data;
+ wire [15:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_mask;
+ wire [12:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_context;
+ wire interconnect_write_aggregated_arbiter_io_output_rsp_ready;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address;
+ wire [11:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length;
+ wire [20:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode;
+ wire [127:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_data;
+ wire [20:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address;
+ wire [4:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode;
+ wire [127:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_data;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address;
+ wire [11:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length;
+ wire [127:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_data;
+ wire [15:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_mask;
+ wire [12:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode;
+ wire [12:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context;
+ wire io_write_cmd_s2mPipe_valid;
+ reg io_write_cmd_s2mPipe_ready;
+ wire io_write_cmd_s2mPipe_payload_last;
+ wire [0:0] io_write_cmd_s2mPipe_payload_fragment_opcode;
+ wire [31:0] io_write_cmd_s2mPipe_payload_fragment_address;
+ wire [11:0] io_write_cmd_s2mPipe_payload_fragment_length;
+ wire [127:0] io_write_cmd_s2mPipe_payload_fragment_data;
+ wire [15:0] io_write_cmd_s2mPipe_payload_fragment_mask;
+ wire [12:0] io_write_cmd_s2mPipe_payload_fragment_context;
+ reg io_write_cmd_rValidN;
+ reg io_write_cmd_rData_last;
+ reg [0:0] io_write_cmd_rData_fragment_opcode;
+ reg [31:0] io_write_cmd_rData_fragment_address;
+ reg [11:0] io_write_cmd_rData_fragment_length;
+ reg [127:0] io_write_cmd_rData_fragment_data;
+ reg [15:0] io_write_cmd_rData_fragment_mask;
+ reg [12:0] io_write_cmd_rData_fragment_context;
+ wire io_write_cmd_s2mPipe_m2sPipe_valid;
+ wire io_write_cmd_s2mPipe_m2sPipe_ready;
+ wire io_write_cmd_s2mPipe_m2sPipe_payload_last;
+ wire [0:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_opcode;
+ wire [31:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_address;
+ wire [11:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_length;
+ wire [127:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_data;
+ wire [15:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_mask;
+ wire [12:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_context;
+ reg io_write_cmd_s2mPipe_rValid;
+ reg io_write_cmd_s2mPipe_rData_last;
+ reg [0:0] io_write_cmd_s2mPipe_rData_fragment_opcode;
+ reg [31:0] io_write_cmd_s2mPipe_rData_fragment_address;
+ reg [11:0] io_write_cmd_s2mPipe_rData_fragment_length;
+ reg [127:0] io_write_cmd_s2mPipe_rData_fragment_data;
+ reg [15:0] io_write_cmd_s2mPipe_rData_fragment_mask;
+ reg [12:0] io_write_cmd_s2mPipe_rData_fragment_context;
+ wire when_Stream_l375;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address;
+ wire [1:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length;
+ wire [127:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_data;
+ wire [15:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_mask;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context;
+ wire interconnect_read_aggregated_cmd_valid;
+ wire interconnect_read_aggregated_cmd_ready;
+ wire interconnect_read_aggregated_cmd_payload_last;
+ wire [0:0] interconnect_read_aggregated_cmd_payload_fragment_source;
+ wire [0:0] interconnect_read_aggregated_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_read_aggregated_cmd_payload_fragment_address;
+ wire [11:0] interconnect_read_aggregated_cmd_payload_fragment_length;
+ wire [20:0] interconnect_read_aggregated_cmd_payload_fragment_context;
+ wire interconnect_read_aggregated_rsp_valid;
+ wire interconnect_read_aggregated_rsp_ready;
+ wire interconnect_read_aggregated_rsp_payload_last;
+ wire [0:0] interconnect_read_aggregated_rsp_payload_fragment_source;
+ wire [0:0] interconnect_read_aggregated_rsp_payload_fragment_opcode;
+ wire [127:0] interconnect_read_aggregated_rsp_payload_fragment_data;
+ wire [20:0] interconnect_read_aggregated_rsp_payload_fragment_context;
+ wire interconnect_write_aggregated_cmd_valid;
+ reg interconnect_write_aggregated_cmd_ready;
+ wire interconnect_write_aggregated_cmd_payload_last;
+ wire [0:0] interconnect_write_aggregated_cmd_payload_fragment_source;
+ wire [0:0] interconnect_write_aggregated_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_write_aggregated_cmd_payload_fragment_address;
+ wire [11:0] interconnect_write_aggregated_cmd_payload_fragment_length;
+ wire [127:0] interconnect_write_aggregated_cmd_payload_fragment_data;
+ wire [15:0] interconnect_write_aggregated_cmd_payload_fragment_mask;
+ wire [12:0] interconnect_write_aggregated_cmd_payload_fragment_context;
+ wire interconnect_write_aggregated_rsp_valid;
+ wire interconnect_write_aggregated_rsp_ready;
+ wire interconnect_write_aggregated_rsp_payload_last;
+ wire [0:0] interconnect_write_aggregated_rsp_payload_fragment_source;
+ wire [0:0] interconnect_write_aggregated_rsp_payload_fragment_opcode;
+ wire [12:0] interconnect_write_aggregated_rsp_payload_fragment_context;
+ wire readLogic_resized_cmd_valid;
+ wire readLogic_resized_cmd_ready;
+ wire readLogic_resized_cmd_payload_last;
+ wire [0:0] readLogic_resized_cmd_payload_fragment_source;
+ wire [0:0] readLogic_resized_cmd_payload_fragment_opcode;
+ wire [31:0] readLogic_resized_cmd_payload_fragment_address;
+ wire [11:0] readLogic_resized_cmd_payload_fragment_length;
+ wire [20:0] readLogic_resized_cmd_payload_fragment_context;
+ wire readLogic_resized_rsp_valid;
+ wire readLogic_resized_rsp_ready;
+ wire readLogic_resized_rsp_payload_last;
+ wire [0:0] readLogic_resized_rsp_payload_fragment_source;
+ wire [0:0] readLogic_resized_rsp_payload_fragment_opcode;
+ wire [127:0] readLogic_resized_rsp_payload_fragment_data;
+ wire [20:0] readLogic_resized_rsp_payload_fragment_context;
+ wire interconnect_read_aggregated_cmd_halfPipe_valid;
+ wire interconnect_read_aggregated_cmd_halfPipe_ready;
+ wire interconnect_read_aggregated_cmd_halfPipe_payload_last;
+ wire [0:0] interconnect_read_aggregated_cmd_halfPipe_payload_fragment_source;
+ wire [0:0] interconnect_read_aggregated_cmd_halfPipe_payload_fragment_opcode;
+ wire [31:0] interconnect_read_aggregated_cmd_halfPipe_payload_fragment_address;
+ wire [11:0] interconnect_read_aggregated_cmd_halfPipe_payload_fragment_length;
+ wire [20:0] interconnect_read_aggregated_cmd_halfPipe_payload_fragment_context;
+ reg interconnect_read_aggregated_cmd_rValid;
+ wire interconnect_read_aggregated_cmd_halfPipe_fire;
+ reg interconnect_read_aggregated_cmd_rData_last;
+ reg [0:0] interconnect_read_aggregated_cmd_rData_fragment_source;
+ reg [0:0] interconnect_read_aggregated_cmd_rData_fragment_opcode;
+ reg [31:0] interconnect_read_aggregated_cmd_rData_fragment_address;
+ reg [11:0] interconnect_read_aggregated_cmd_rData_fragment_length;
+ reg [20:0] interconnect_read_aggregated_cmd_rData_fragment_context;
+ wire readLogic_resized_rsp_combStage_valid;
+ wire readLogic_resized_rsp_combStage_ready;
+ wire readLogic_resized_rsp_combStage_payload_last;
+ wire [0:0] readLogic_resized_rsp_combStage_payload_fragment_source;
+ wire [0:0] readLogic_resized_rsp_combStage_payload_fragment_opcode;
+ wire [127:0] readLogic_resized_rsp_combStage_payload_fragment_data;
+ wire [20:0] readLogic_resized_rsp_combStage_payload_fragment_context;
+ wire readLogic_adapter_ar_valid;
+ wire readLogic_adapter_ar_ready;
+ wire [31:0] readLogic_adapter_ar_payload_addr;
+ wire [3:0] readLogic_adapter_ar_payload_region;
+ wire [7:0] readLogic_adapter_ar_payload_len;
+ wire [2:0] readLogic_adapter_ar_payload_size;
+ wire [1:0] readLogic_adapter_ar_payload_burst;
+ wire [0:0] readLogic_adapter_ar_payload_lock;
+ wire [3:0] readLogic_adapter_ar_payload_cache;
+ wire [3:0] readLogic_adapter_ar_payload_qos;
+ wire [2:0] readLogic_adapter_ar_payload_prot;
+ wire readLogic_adapter_r_valid;
+ wire readLogic_adapter_r_ready;
+ wire [127:0] readLogic_adapter_r_payload_data;
+ wire [1:0] readLogic_adapter_r_payload_resp;
+ wire readLogic_adapter_r_payload_last;
+ wire [3:0] _zz_readLogic_adapter_ar_payload_region;
+ wire readLogic_adapter_ar_halfPipe_valid;
+ wire readLogic_adapter_ar_halfPipe_ready;
+ wire [31:0] readLogic_adapter_ar_halfPipe_payload_addr;
+ wire [3:0] readLogic_adapter_ar_halfPipe_payload_region;
+ wire [7:0] readLogic_adapter_ar_halfPipe_payload_len;
+ wire [2:0] readLogic_adapter_ar_halfPipe_payload_size;
+ wire [1:0] readLogic_adapter_ar_halfPipe_payload_burst;
+ wire [0:0] readLogic_adapter_ar_halfPipe_payload_lock;
+ wire [3:0] readLogic_adapter_ar_halfPipe_payload_cache;
+ wire [3:0] readLogic_adapter_ar_halfPipe_payload_qos;
+ wire [2:0] readLogic_adapter_ar_halfPipe_payload_prot;
+ reg readLogic_adapter_ar_rValid;
+ wire readLogic_adapter_ar_halfPipe_fire;
+ reg [31:0] readLogic_adapter_ar_rData_addr;
+ reg [3:0] readLogic_adapter_ar_rData_region;
+ reg [7:0] readLogic_adapter_ar_rData_len;
+ reg [2:0] readLogic_adapter_ar_rData_size;
+ reg [1:0] readLogic_adapter_ar_rData_burst;
+ reg [0:0] readLogic_adapter_ar_rData_lock;
+ reg [3:0] readLogic_adapter_ar_rData_cache;
+ reg [3:0] readLogic_adapter_ar_rData_qos;
+ reg [2:0] readLogic_adapter_ar_rData_prot;
+ wire read_r_s2mPipe_valid;
+ reg read_r_s2mPipe_ready;
+ wire [127:0] read_r_s2mPipe_payload_data;
+ wire [1:0] read_r_s2mPipe_payload_resp;
+ wire read_r_s2mPipe_payload_last;
+ reg read_r_rValidN;
+ reg [127:0] read_r_rData_data;
+ reg [1:0] read_r_rData_resp;
+ reg read_r_rData_last;
+ wire readLogic_beforeQueue_valid;
+ wire readLogic_beforeQueue_ready;
+ wire [127:0] readLogic_beforeQueue_payload_data;
+ wire [1:0] readLogic_beforeQueue_payload_resp;
+ wire readLogic_beforeQueue_payload_last;
+ reg read_r_s2mPipe_rValid;
+ reg [127:0] read_r_s2mPipe_rData_data;
+ reg [1:0] read_r_s2mPipe_rData_resp;
+ reg read_r_s2mPipe_rData_last;
+ wire when_Stream_l375_1;
+ wire writeLogic_resized_cmd_valid;
+ wire writeLogic_resized_cmd_ready;
+ wire writeLogic_resized_cmd_payload_last;
+ wire [0:0] writeLogic_resized_cmd_payload_fragment_source;
+ wire [0:0] writeLogic_resized_cmd_payload_fragment_opcode;
+ wire [31:0] writeLogic_resized_cmd_payload_fragment_address;
+ wire [11:0] writeLogic_resized_cmd_payload_fragment_length;
+ wire [127:0] writeLogic_resized_cmd_payload_fragment_data;
+ wire [15:0] writeLogic_resized_cmd_payload_fragment_mask;
+ wire [12:0] writeLogic_resized_cmd_payload_fragment_context;
+ wire writeLogic_resized_rsp_valid;
+ wire writeLogic_resized_rsp_ready;
+ wire writeLogic_resized_rsp_payload_last;
+ wire [0:0] writeLogic_resized_rsp_payload_fragment_source;
+ wire [0:0] writeLogic_resized_rsp_payload_fragment_opcode;
+ wire [12:0] writeLogic_resized_rsp_payload_fragment_context;
+ wire interconnect_write_aggregated_cmd_m2sPipe_valid;
+ wire interconnect_write_aggregated_cmd_m2sPipe_ready;
+ wire interconnect_write_aggregated_cmd_m2sPipe_payload_last;
+ wire [0:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_source;
+ wire [0:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_opcode;
+ wire [31:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_address;
+ wire [11:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_length;
+ wire [127:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_data;
+ wire [15:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_mask;
+ wire [12:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_context;
+ reg interconnect_write_aggregated_cmd_rValid;
+ reg interconnect_write_aggregated_cmd_rData_last;
+ reg [0:0] interconnect_write_aggregated_cmd_rData_fragment_source;
+ reg [0:0] interconnect_write_aggregated_cmd_rData_fragment_opcode;
+ reg [31:0] interconnect_write_aggregated_cmd_rData_fragment_address;
+ reg [11:0] interconnect_write_aggregated_cmd_rData_fragment_length;
+ reg [127:0] interconnect_write_aggregated_cmd_rData_fragment_data;
+ reg [15:0] interconnect_write_aggregated_cmd_rData_fragment_mask;
+ reg [12:0] interconnect_write_aggregated_cmd_rData_fragment_context;
+ wire when_Stream_l375_2;
+ wire writeLogic_resized_rsp_combStage_valid;
+ wire writeLogic_resized_rsp_combStage_ready;
+ wire writeLogic_resized_rsp_combStage_payload_last;
+ wire [0:0] writeLogic_resized_rsp_combStage_payload_fragment_source;
+ wire [0:0] writeLogic_resized_rsp_combStage_payload_fragment_opcode;
+ wire [12:0] writeLogic_resized_rsp_combStage_payload_fragment_context;
+ wire writeLogic_adapter_aw_valid;
+ wire writeLogic_adapter_aw_ready;
+ wire [31:0] writeLogic_adapter_aw_payload_addr;
+ wire [3:0] writeLogic_adapter_aw_payload_region;
+ wire [7:0] writeLogic_adapter_aw_payload_len;
+ wire [2:0] writeLogic_adapter_aw_payload_size;
+ wire [1:0] writeLogic_adapter_aw_payload_burst;
+ wire [0:0] writeLogic_adapter_aw_payload_lock;
+ wire [3:0] writeLogic_adapter_aw_payload_cache;
+ wire [3:0] writeLogic_adapter_aw_payload_qos;
+ wire [2:0] writeLogic_adapter_aw_payload_prot;
+ wire writeLogic_adapter_w_valid;
+ wire writeLogic_adapter_w_ready;
+ wire [127:0] writeLogic_adapter_w_payload_data;
+ wire [15:0] writeLogic_adapter_w_payload_strb;
+ wire writeLogic_adapter_w_payload_last;
+ wire writeLogic_adapter_b_valid;
+ wire writeLogic_adapter_b_ready;
+ wire [1:0] writeLogic_adapter_b_payload_resp;
+ wire [3:0] _zz_writeLogic_adapter_aw_payload_region;
+ wire writeLogic_adapter_aw_halfPipe_valid;
+ wire writeLogic_adapter_aw_halfPipe_ready;
+ wire [31:0] writeLogic_adapter_aw_halfPipe_payload_addr;
+ wire [3:0] writeLogic_adapter_aw_halfPipe_payload_region;
+ wire [7:0] writeLogic_adapter_aw_halfPipe_payload_len;
+ wire [2:0] writeLogic_adapter_aw_halfPipe_payload_size;
+ wire [1:0] writeLogic_adapter_aw_halfPipe_payload_burst;
+ wire [0:0] writeLogic_adapter_aw_halfPipe_payload_lock;
+ wire [3:0] writeLogic_adapter_aw_halfPipe_payload_cache;
+ wire [3:0] writeLogic_adapter_aw_halfPipe_payload_qos;
+ wire [2:0] writeLogic_adapter_aw_halfPipe_payload_prot;
+ reg writeLogic_adapter_aw_rValid;
+ wire writeLogic_adapter_aw_halfPipe_fire;
+ reg [31:0] writeLogic_adapter_aw_rData_addr;
+ reg [3:0] writeLogic_adapter_aw_rData_region;
+ reg [7:0] writeLogic_adapter_aw_rData_len;
+ reg [2:0] writeLogic_adapter_aw_rData_size;
+ reg [1:0] writeLogic_adapter_aw_rData_burst;
+ reg [0:0] writeLogic_adapter_aw_rData_lock;
+ reg [3:0] writeLogic_adapter_aw_rData_cache;
+ reg [3:0] writeLogic_adapter_aw_rData_qos;
+ reg [2:0] writeLogic_adapter_aw_rData_prot;
+ wire writeLogic_adapter_w_s2mPipe_valid;
+ reg writeLogic_adapter_w_s2mPipe_ready;
+ wire [127:0] writeLogic_adapter_w_s2mPipe_payload_data;
+ wire [15:0] writeLogic_adapter_w_s2mPipe_payload_strb;
+ wire writeLogic_adapter_w_s2mPipe_payload_last;
+ reg writeLogic_adapter_w_rValidN;
+ reg [127:0] writeLogic_adapter_w_rData_data;
+ reg [15:0] writeLogic_adapter_w_rData_strb;
+ reg writeLogic_adapter_w_rData_last;
+ wire writeLogic_adapter_w_s2mPipe_m2sPipe_valid;
+ wire writeLogic_adapter_w_s2mPipe_m2sPipe_ready;
+ wire [127:0] writeLogic_adapter_w_s2mPipe_m2sPipe_payload_data;
+ wire [15:0] writeLogic_adapter_w_s2mPipe_m2sPipe_payload_strb;
+ wire writeLogic_adapter_w_s2mPipe_m2sPipe_payload_last;
+ reg writeLogic_adapter_w_s2mPipe_rValid;
+ reg [127:0] writeLogic_adapter_w_s2mPipe_rData_data;
+ reg [15:0] writeLogic_adapter_w_s2mPipe_rData_strb;
+ reg writeLogic_adapter_w_s2mPipe_rData_last;
+ wire when_Stream_l375_3;
+ wire write_b_halfPipe_valid;
+ wire write_b_halfPipe_ready;
+ wire [1:0] write_b_halfPipe_payload_resp;
+ reg write_b_rValid;
+ wire write_b_halfPipe_fire;
+ reg [1:0] write_b_rData_resp;
+ wire io_pop_s2mPipe_valid;
+ reg io_pop_s2mPipe_ready;
+ wire [63:0] io_pop_s2mPipe_payload_data;
+ wire [7:0] io_pop_s2mPipe_payload_mask;
+ wire [3:0] io_pop_s2mPipe_payload_sink;
+ wire io_pop_s2mPipe_payload_last;
+ reg io_pop_rValidN;
+ reg [63:0] io_pop_rData_data;
+ reg [7:0] io_pop_rData_mask;
+ reg [3:0] io_pop_rData_sink;
+ reg io_pop_rData_last;
+ wire io_pop_s2mPipe_m2sPipe_valid;
+ wire io_pop_s2mPipe_m2sPipe_ready;
+ wire [63:0] io_pop_s2mPipe_m2sPipe_payload_data;
+ wire [7:0] io_pop_s2mPipe_m2sPipe_payload_mask;
+ wire [3:0] io_pop_s2mPipe_m2sPipe_payload_sink;
+ wire io_pop_s2mPipe_m2sPipe_payload_last;
+ reg io_pop_s2mPipe_rValid;
+ reg [63:0] io_pop_s2mPipe_rData_data;
+ reg [7:0] io_pop_s2mPipe_rData_mask;
+ reg [3:0] io_pop_s2mPipe_rData_sink;
+ reg io_pop_s2mPipe_rData_last;
+ wire when_Stream_l375_4;
+ wire io_outputs_0_s2mPipe_valid;
+ reg io_outputs_0_s2mPipe_ready;
+ wire [63:0] io_outputs_0_s2mPipe_payload_data;
+ wire [7:0] io_outputs_0_s2mPipe_payload_mask;
+ wire [3:0] io_outputs_0_s2mPipe_payload_sink;
+ wire io_outputs_0_s2mPipe_payload_last;
+ reg io_outputs_0_rValidN;
+ reg [63:0] io_outputs_0_rData_data;
+ reg [7:0] io_outputs_0_rData_mask;
+ reg [3:0] io_outputs_0_rData_sink;
+ reg io_outputs_0_rData_last;
+ wire outputsAdapter_0_ptr_valid;
+ wire outputsAdapter_0_ptr_ready;
+ wire [63:0] outputsAdapter_0_ptr_payload_data;
+ wire [7:0] outputsAdapter_0_ptr_payload_mask;
+ wire [3:0] outputsAdapter_0_ptr_payload_sink;
+ wire outputsAdapter_0_ptr_payload_last;
+ reg io_outputs_0_s2mPipe_rValid;
+ reg [63:0] io_outputs_0_s2mPipe_rData_data;
+ reg [7:0] io_outputs_0_s2mPipe_rData_mask;
+ reg [3:0] io_outputs_0_s2mPipe_rData_sink;
+ reg io_outputs_0_s2mPipe_rData_last;
+ wire when_Stream_l375_5;
+
+ EfxDMA_Core_a048ca8f51874147a1cd65d43e6523ef core (
+ .io_sgRead_cmd_valid (core_io_sgRead_cmd_valid ), //o
+ .io_sgRead_cmd_ready (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready ), //i
+ .io_sgRead_cmd_payload_last (core_io_sgRead_cmd_payload_last ), //o
+ .io_sgRead_cmd_payload_fragment_opcode (core_io_sgRead_cmd_payload_fragment_opcode ), //o
+ .io_sgRead_cmd_payload_fragment_address (core_io_sgRead_cmd_payload_fragment_address[31:0] ), //o
+ .io_sgRead_cmd_payload_fragment_length (core_io_sgRead_cmd_payload_fragment_length[4:0] ), //o
+ .io_sgRead_cmd_payload_fragment_context (core_io_sgRead_cmd_payload_fragment_context ), //o
+ .io_sgRead_rsp_valid (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid ), //i
+ .io_sgRead_rsp_ready (core_io_sgRead_rsp_ready ), //o
+ .io_sgRead_rsp_payload_last (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last ), //i
+ .io_sgRead_rsp_payload_fragment_opcode (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode ), //i
+ .io_sgRead_rsp_payload_fragment_data (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_data[127:0] ), //i
+ .io_sgRead_rsp_payload_fragment_context (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context ), //i
+ .io_sgWrite_cmd_valid (core_io_sgWrite_cmd_valid ), //o
+ .io_sgWrite_cmd_ready (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready ), //i
+ .io_sgWrite_cmd_payload_last (core_io_sgWrite_cmd_payload_last ), //o
+ .io_sgWrite_cmd_payload_fragment_opcode (core_io_sgWrite_cmd_payload_fragment_opcode ), //o
+ .io_sgWrite_cmd_payload_fragment_address (core_io_sgWrite_cmd_payload_fragment_address[31:0] ), //o
+ .io_sgWrite_cmd_payload_fragment_length (core_io_sgWrite_cmd_payload_fragment_length[1:0] ), //o
+ .io_sgWrite_cmd_payload_fragment_data (core_io_sgWrite_cmd_payload_fragment_data[127:0] ), //o
+ .io_sgWrite_cmd_payload_fragment_mask (core_io_sgWrite_cmd_payload_fragment_mask[15:0] ), //o
+ .io_sgWrite_cmd_payload_fragment_context (core_io_sgWrite_cmd_payload_fragment_context ), //o
+ .io_sgWrite_rsp_valid (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid ), //i
+ .io_sgWrite_rsp_ready (core_io_sgWrite_rsp_ready ), //o
+ .io_sgWrite_rsp_payload_last (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last ), //i
+ .io_sgWrite_rsp_payload_fragment_opcode (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode ), //i
+ .io_sgWrite_rsp_payload_fragment_context (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context ), //i
+ .io_read_cmd_valid (core_io_read_cmd_valid ), //o
+ .io_read_cmd_ready (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready ), //i
+ .io_read_cmd_payload_last (core_io_read_cmd_payload_last ), //o
+ .io_read_cmd_payload_fragment_opcode (core_io_read_cmd_payload_fragment_opcode ), //o
+ .io_read_cmd_payload_fragment_address (core_io_read_cmd_payload_fragment_address[31:0] ), //o
+ .io_read_cmd_payload_fragment_length (core_io_read_cmd_payload_fragment_length[11:0] ), //o
+ .io_read_cmd_payload_fragment_context (core_io_read_cmd_payload_fragment_context[20:0] ), //o
+ .io_read_rsp_valid (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid ), //i
+ .io_read_rsp_ready (core_io_read_rsp_ready ), //o
+ .io_read_rsp_payload_last (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last ), //i
+ .io_read_rsp_payload_fragment_opcode (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode ), //i
+ .io_read_rsp_payload_fragment_data (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_data[127:0] ), //i
+ .io_read_rsp_payload_fragment_context (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context[20:0] ), //i
+ .io_write_cmd_valid (core_io_write_cmd_valid ), //o
+ .io_write_cmd_ready (io_write_cmd_rValidN ), //i
+ .io_write_cmd_payload_last (core_io_write_cmd_payload_last ), //o
+ .io_write_cmd_payload_fragment_opcode (core_io_write_cmd_payload_fragment_opcode ), //o
+ .io_write_cmd_payload_fragment_address (core_io_write_cmd_payload_fragment_address[31:0] ), //o
+ .io_write_cmd_payload_fragment_length (core_io_write_cmd_payload_fragment_length[11:0] ), //o
+ .io_write_cmd_payload_fragment_data (core_io_write_cmd_payload_fragment_data[127:0] ), //o
+ .io_write_cmd_payload_fragment_mask (core_io_write_cmd_payload_fragment_mask[15:0] ), //o
+ .io_write_cmd_payload_fragment_context (core_io_write_cmd_payload_fragment_context[12:0] ), //o
+ .io_write_rsp_valid (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid ), //i
+ .io_write_rsp_ready (core_io_write_rsp_ready ), //o
+ .io_write_rsp_payload_last (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last ), //i
+ .io_write_rsp_payload_fragment_opcode (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode ), //i
+ .io_write_rsp_payload_fragment_context (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context[12:0]), //i
+ .io_outputs_0_valid (core_io_outputs_0_valid ), //o
+ .io_outputs_0_ready (io_outputs_0_rValidN ), //i
+ .io_outputs_0_payload_data (core_io_outputs_0_payload_data[63:0] ), //o
+ .io_outputs_0_payload_mask (core_io_outputs_0_payload_mask[7:0] ), //o
+ .io_outputs_0_payload_sink (core_io_outputs_0_payload_sink[3:0] ), //o
+ .io_outputs_0_payload_last (core_io_outputs_0_payload_last ), //o
+ .io_inputs_0_valid (io_pop_s2mPipe_m2sPipe_valid ), //i
+ .io_inputs_0_ready (core_io_inputs_0_ready ), //o
+ .io_inputs_0_payload_data (io_pop_s2mPipe_m2sPipe_payload_data[63:0] ), //i
+ .io_inputs_0_payload_mask (io_pop_s2mPipe_m2sPipe_payload_mask[7:0] ), //i
+ .io_inputs_0_payload_sink (io_pop_s2mPipe_m2sPipe_payload_sink[3:0] ), //i
+ .io_inputs_0_payload_last (io_pop_s2mPipe_m2sPipe_payload_last ), //i
+ .io_interrupts (core_io_interrupts[1:0] ), //o
+ .io_ctrl_PADDR (withCtrlCc_apbCc_io_output_PADDR[13:0] ), //i
+ .io_ctrl_PSEL (withCtrlCc_apbCc_io_output_PSEL ), //i
+ .io_ctrl_PENABLE (withCtrlCc_apbCc_io_output_PENABLE ), //i
+ .io_ctrl_PREADY (core_io_ctrl_PREADY ), //o
+ .io_ctrl_PWRITE (withCtrlCc_apbCc_io_output_PWRITE ), //i
+ .io_ctrl_PWDATA (withCtrlCc_apbCc_io_output_PWDATA[31:0] ), //i
+ .io_ctrl_PRDATA (core_io_ctrl_PRDATA[31:0] ), //o
+ .io_ctrl_PSLVERROR (core_io_ctrl_PSLVERROR ), //o
+ .ll_0_descriptorUpdate (core_ll_0_descriptorUpdate ), //o
+ .ll_1_descriptorUpdate (core_ll_1_descriptorUpdate ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_Apb3CC_a048ca8f51874147a1cd65d43e6523ef withCtrlCc_apbCc (
+ .io_input_PADDR (ctrl_PADDR[13:0] ), //i
+ .io_input_PSEL (ctrl_PSEL ), //i
+ .io_input_PENABLE (ctrl_PENABLE ), //i
+ .io_input_PREADY (withCtrlCc_apbCc_io_input_PREADY ), //o
+ .io_input_PWRITE (ctrl_PWRITE ), //i
+ .io_input_PWDATA (ctrl_PWDATA[31:0] ), //i
+ .io_input_PRDATA (withCtrlCc_apbCc_io_input_PRDATA[31:0] ), //o
+ .io_input_PSLVERROR (withCtrlCc_apbCc_io_input_PSLVERROR ), //o
+ .io_output_PADDR (withCtrlCc_apbCc_io_output_PADDR[13:0] ), //o
+ .io_output_PSEL (withCtrlCc_apbCc_io_output_PSEL ), //o
+ .io_output_PENABLE (withCtrlCc_apbCc_io_output_PENABLE ), //o
+ .io_output_PREADY (core_io_ctrl_PREADY ), //i
+ .io_output_PWRITE (withCtrlCc_apbCc_io_output_PWRITE ), //o
+ .io_output_PWDATA (withCtrlCc_apbCc_io_output_PWDATA[31:0]), //o
+ .io_output_PRDATA (core_io_ctrl_PRDATA[31:0] ), //i
+ .io_output_PSLVERROR (core_io_ctrl_PSLVERROR ), //i
+ .ctrl_clk (ctrl_clk ), //i
+ .ctrl_reset (ctrl_reset ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_6_a048ca8f51874147a1cd65d43e6523ef io_interrupts_buffercc (
+ .io_dataIn (core_io_interrupts[1:0] ), //i
+ .io_dataOut (io_interrupts_buffercc_io_dataOut[1:0]), //o
+ .ctrl_clk (ctrl_clk ), //i
+ .ctrl_reset (ctrl_reset ) //i
+ );
+ EfxDMA_BmbSourceRemover_a048ca8f51874147a1cd65d43e6523ef readLogic_sourceRemover (
+ .io_input_cmd_valid (readLogic_resized_cmd_valid ), //i
+ .io_input_cmd_ready (readLogic_sourceRemover_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (readLogic_resized_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_source (readLogic_resized_cmd_payload_fragment_source ), //i
+ .io_input_cmd_payload_fragment_opcode (readLogic_resized_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (readLogic_resized_cmd_payload_fragment_address[31:0] ), //i
+ .io_input_cmd_payload_fragment_length (readLogic_resized_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_context (readLogic_resized_cmd_payload_fragment_context[20:0] ), //i
+ .io_input_rsp_valid (readLogic_sourceRemover_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (readLogic_resized_rsp_ready ), //i
+ .io_input_rsp_payload_last (readLogic_sourceRemover_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_source (readLogic_sourceRemover_io_input_rsp_payload_fragment_source ), //o
+ .io_input_rsp_payload_fragment_opcode (readLogic_sourceRemover_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (readLogic_sourceRemover_io_input_rsp_payload_fragment_data[127:0] ), //o
+ .io_input_rsp_payload_fragment_context (readLogic_sourceRemover_io_input_rsp_payload_fragment_context[20:0] ), //o
+ .io_output_cmd_valid (readLogic_sourceRemover_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (readLogic_bridge_io_input_cmd_ready ), //i
+ .io_output_cmd_payload_last (readLogic_sourceRemover_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_opcode (readLogic_sourceRemover_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (readLogic_sourceRemover_io_output_cmd_payload_fragment_address[31:0]), //o
+ .io_output_cmd_payload_fragment_length (readLogic_sourceRemover_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_cmd_payload_fragment_context (readLogic_sourceRemover_io_output_cmd_payload_fragment_context[21:0]), //o
+ .io_output_rsp_valid (readLogic_bridge_io_input_rsp_valid ), //i
+ .io_output_rsp_ready (readLogic_sourceRemover_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (readLogic_bridge_io_input_rsp_payload_last ), //i
+ .io_output_rsp_payload_fragment_opcode (readLogic_bridge_io_input_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_data (readLogic_bridge_io_input_rsp_payload_fragment_data[127:0] ), //i
+ .io_output_rsp_payload_fragment_context (readLogic_bridge_io_input_rsp_payload_fragment_context[21:0] ) //i
+ );
+ EfxDMA_BmbToAxi4ReadOnlyBridge_a048ca8f51874147a1cd65d43e6523ef readLogic_bridge (
+ .io_input_cmd_valid (readLogic_sourceRemover_io_output_cmd_valid ), //i
+ .io_input_cmd_ready (readLogic_bridge_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (readLogic_sourceRemover_io_output_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (readLogic_sourceRemover_io_output_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (readLogic_sourceRemover_io_output_cmd_payload_fragment_address[31:0]), //i
+ .io_input_cmd_payload_fragment_length (readLogic_sourceRemover_io_output_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_context (readLogic_sourceRemover_io_output_cmd_payload_fragment_context[21:0]), //i
+ .io_input_rsp_valid (readLogic_bridge_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (readLogic_sourceRemover_io_output_rsp_ready ), //i
+ .io_input_rsp_payload_last (readLogic_bridge_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (readLogic_bridge_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (readLogic_bridge_io_input_rsp_payload_fragment_data[127:0] ), //o
+ .io_input_rsp_payload_fragment_context (readLogic_bridge_io_input_rsp_payload_fragment_context[21:0] ), //o
+ .io_output_ar_valid (readLogic_bridge_io_output_ar_valid ), //o
+ .io_output_ar_ready (readLogic_adapter_ar_ready ), //i
+ .io_output_ar_payload_addr (readLogic_bridge_io_output_ar_payload_addr[31:0] ), //o
+ .io_output_ar_payload_len (readLogic_bridge_io_output_ar_payload_len[7:0] ), //o
+ .io_output_ar_payload_size (readLogic_bridge_io_output_ar_payload_size[2:0] ), //o
+ .io_output_ar_payload_cache (readLogic_bridge_io_output_ar_payload_cache[3:0] ), //o
+ .io_output_ar_payload_prot (readLogic_bridge_io_output_ar_payload_prot[2:0] ), //o
+ .io_output_r_valid (readLogic_adapter_r_valid ), //i
+ .io_output_r_ready (readLogic_bridge_io_output_r_ready ), //o
+ .io_output_r_payload_data (readLogic_adapter_r_payload_data[127:0] ), //i
+ .io_output_r_payload_resp (readLogic_adapter_r_payload_resp[1:0] ), //i
+ .io_output_r_payload_last (readLogic_adapter_r_payload_last ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_BmbSourceRemover_1_a048ca8f51874147a1cd65d43e6523ef writeLogic_sourceRemover (
+ .io_input_cmd_valid (writeLogic_resized_cmd_valid ), //i
+ .io_input_cmd_ready (writeLogic_sourceRemover_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (writeLogic_resized_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_source (writeLogic_resized_cmd_payload_fragment_source ), //i
+ .io_input_cmd_payload_fragment_opcode (writeLogic_resized_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (writeLogic_resized_cmd_payload_fragment_address[31:0] ), //i
+ .io_input_cmd_payload_fragment_length (writeLogic_resized_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_data (writeLogic_resized_cmd_payload_fragment_data[127:0] ), //i
+ .io_input_cmd_payload_fragment_mask (writeLogic_resized_cmd_payload_fragment_mask[15:0] ), //i
+ .io_input_cmd_payload_fragment_context (writeLogic_resized_cmd_payload_fragment_context[12:0] ), //i
+ .io_input_rsp_valid (writeLogic_sourceRemover_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (writeLogic_resized_rsp_ready ), //i
+ .io_input_rsp_payload_last (writeLogic_sourceRemover_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_source (writeLogic_sourceRemover_io_input_rsp_payload_fragment_source ), //o
+ .io_input_rsp_payload_fragment_opcode (writeLogic_sourceRemover_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_context (writeLogic_sourceRemover_io_input_rsp_payload_fragment_context[12:0] ), //o
+ .io_output_cmd_valid (writeLogic_sourceRemover_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (writeLogic_bridge_io_input_cmd_ready ), //i
+ .io_output_cmd_payload_last (writeLogic_sourceRemover_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_opcode (writeLogic_sourceRemover_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (writeLogic_sourceRemover_io_output_cmd_payload_fragment_address[31:0]), //o
+ .io_output_cmd_payload_fragment_length (writeLogic_sourceRemover_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_cmd_payload_fragment_data (writeLogic_sourceRemover_io_output_cmd_payload_fragment_data[127:0] ), //o
+ .io_output_cmd_payload_fragment_mask (writeLogic_sourceRemover_io_output_cmd_payload_fragment_mask[15:0] ), //o
+ .io_output_cmd_payload_fragment_context (writeLogic_sourceRemover_io_output_cmd_payload_fragment_context[13:0]), //o
+ .io_output_rsp_valid (writeLogic_bridge_io_input_rsp_valid ), //i
+ .io_output_rsp_ready (writeLogic_sourceRemover_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (writeLogic_bridge_io_input_rsp_payload_last ), //i
+ .io_output_rsp_payload_fragment_opcode (writeLogic_bridge_io_input_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_context (writeLogic_bridge_io_input_rsp_payload_fragment_context[13:0] ) //i
+ );
+ EfxDMA_BmbToAxi4WriteOnlyBridge_a048ca8f51874147a1cd65d43e6523ef writeLogic_bridge (
+ .io_input_cmd_valid (writeLogic_sourceRemover_io_output_cmd_valid ), //i
+ .io_input_cmd_ready (writeLogic_bridge_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (writeLogic_sourceRemover_io_output_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (writeLogic_sourceRemover_io_output_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (writeLogic_sourceRemover_io_output_cmd_payload_fragment_address[31:0]), //i
+ .io_input_cmd_payload_fragment_length (writeLogic_sourceRemover_io_output_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_data (writeLogic_sourceRemover_io_output_cmd_payload_fragment_data[127:0] ), //i
+ .io_input_cmd_payload_fragment_mask (writeLogic_sourceRemover_io_output_cmd_payload_fragment_mask[15:0] ), //i
+ .io_input_cmd_payload_fragment_context (writeLogic_sourceRemover_io_output_cmd_payload_fragment_context[13:0]), //i
+ .io_input_rsp_valid (writeLogic_bridge_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (writeLogic_sourceRemover_io_output_rsp_ready ), //i
+ .io_input_rsp_payload_last (writeLogic_bridge_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (writeLogic_bridge_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_context (writeLogic_bridge_io_input_rsp_payload_fragment_context[13:0] ), //o
+ .io_output_aw_valid (writeLogic_bridge_io_output_aw_valid ), //o
+ .io_output_aw_ready (writeLogic_adapter_aw_ready ), //i
+ .io_output_aw_payload_addr (writeLogic_bridge_io_output_aw_payload_addr[31:0] ), //o
+ .io_output_aw_payload_len (writeLogic_bridge_io_output_aw_payload_len[7:0] ), //o
+ .io_output_aw_payload_size (writeLogic_bridge_io_output_aw_payload_size[2:0] ), //o
+ .io_output_aw_payload_cache (writeLogic_bridge_io_output_aw_payload_cache[3:0] ), //o
+ .io_output_aw_payload_prot (writeLogic_bridge_io_output_aw_payload_prot[2:0] ), //o
+ .io_output_w_valid (writeLogic_bridge_io_output_w_valid ), //o
+ .io_output_w_ready (writeLogic_adapter_w_ready ), //i
+ .io_output_w_payload_data (writeLogic_bridge_io_output_w_payload_data[127:0] ), //o
+ .io_output_w_payload_strb (writeLogic_bridge_io_output_w_payload_strb[15:0] ), //o
+ .io_output_w_payload_last (writeLogic_bridge_io_output_w_payload_last ), //o
+ .io_output_b_valid (writeLogic_adapter_b_valid ), //i
+ .io_output_b_ready (writeLogic_bridge_io_output_b_ready ), //o
+ .io_output_b_payload_resp (writeLogic_adapter_b_payload_resp[1:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_BsbUpSizerDense_a048ca8f51874147a1cd65d43e6523ef inputsAdapter_0_upsizer_logic (
+ .io_input_valid (dat0_i_tvalid ), //i
+ .io_input_ready (inputsAdapter_0_upsizer_logic_io_input_ready ), //o
+ .io_input_payload_data (dat0_i_tdata[7:0] ), //i
+ .io_input_payload_mask (dat0_i_tkeep ), //i
+ .io_input_payload_sink (dat0_i_tdest[3:0] ), //i
+ .io_input_payload_last (dat0_i_tlast ), //i
+ .io_output_valid (inputsAdapter_0_upsizer_logic_io_output_valid ), //o
+ .io_output_ready (inputsAdapter_0_crossclock_fifo_io_push_ready ), //i
+ .io_output_payload_data (inputsAdapter_0_upsizer_logic_io_output_payload_data[63:0]), //o
+ .io_output_payload_mask (inputsAdapter_0_upsizer_logic_io_output_payload_mask[7:0] ), //o
+ .io_output_payload_sink (inputsAdapter_0_upsizer_logic_io_output_payload_sink[3:0] ), //o
+ .io_output_payload_last (inputsAdapter_0_upsizer_logic_io_output_payload_last ), //o
+ .dat0_i_clk (dat0_i_clk ), //i
+ .dat0_i_reset (dat0_i_reset ) //i
+ );
+ EfxDMA_StreamFifoCC_a048ca8f51874147a1cd65d43e6523ef inputsAdapter_0_crossclock_fifo (
+ .io_push_valid (inputsAdapter_0_upsizer_logic_io_output_valid ), //i
+ .io_push_ready (inputsAdapter_0_crossclock_fifo_io_push_ready ), //o
+ .io_push_payload_data (inputsAdapter_0_upsizer_logic_io_output_payload_data[63:0]), //i
+ .io_push_payload_mask (inputsAdapter_0_upsizer_logic_io_output_payload_mask[7:0] ), //i
+ .io_push_payload_sink (inputsAdapter_0_upsizer_logic_io_output_payload_sink[3:0] ), //i
+ .io_push_payload_last (inputsAdapter_0_upsizer_logic_io_output_payload_last ), //i
+ .io_pop_valid (inputsAdapter_0_crossclock_fifo_io_pop_valid ), //o
+ .io_pop_ready (io_pop_rValidN ), //i
+ .io_pop_payload_data (inputsAdapter_0_crossclock_fifo_io_pop_payload_data[63:0] ), //o
+ .io_pop_payload_mask (inputsAdapter_0_crossclock_fifo_io_pop_payload_mask[7:0] ), //o
+ .io_pop_payload_sink (inputsAdapter_0_crossclock_fifo_io_pop_payload_sink[3:0] ), //o
+ .io_pop_payload_last (inputsAdapter_0_crossclock_fifo_io_pop_payload_last ), //o
+ .io_pushOccupancy (inputsAdapter_0_crossclock_fifo_io_pushOccupancy[4:0] ), //o
+ .io_popOccupancy (inputsAdapter_0_crossclock_fifo_io_popOccupancy[4:0] ), //o
+ .dat0_i_clk (dat0_i_clk ), //i
+ .dat0_i_reset (dat0_i_reset ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_StreamFifoCC_1_a048ca8f51874147a1cd65d43e6523ef outputsAdapter_0_crossclock_fifo (
+ .io_push_valid (outputsAdapter_0_ptr_valid ), //i
+ .io_push_ready (outputsAdapter_0_crossclock_fifo_io_push_ready ), //o
+ .io_push_payload_data (outputsAdapter_0_ptr_payload_data[63:0] ), //i
+ .io_push_payload_mask (outputsAdapter_0_ptr_payload_mask[7:0] ), //i
+ .io_push_payload_sink (outputsAdapter_0_ptr_payload_sink[3:0] ), //i
+ .io_push_payload_last (outputsAdapter_0_ptr_payload_last ), //i
+ .io_pop_valid (outputsAdapter_0_crossclock_fifo_io_pop_valid ), //o
+ .io_pop_ready (outputsAdapter_0_sparseDownsizer_logic_io_input_ready ), //i
+ .io_pop_payload_data (outputsAdapter_0_crossclock_fifo_io_pop_payload_data[63:0]), //o
+ .io_pop_payload_mask (outputsAdapter_0_crossclock_fifo_io_pop_payload_mask[7:0] ), //o
+ .io_pop_payload_sink (outputsAdapter_0_crossclock_fifo_io_pop_payload_sink[3:0] ), //o
+ .io_pop_payload_last (outputsAdapter_0_crossclock_fifo_io_pop_payload_last ), //o
+ .io_pushOccupancy (outputsAdapter_0_crossclock_fifo_io_pushOccupancy[4:0] ), //o
+ .io_popOccupancy (outputsAdapter_0_crossclock_fifo_io_popOccupancy[4:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ), //i
+ .dat1_o_clk (dat1_o_clk ), //i
+ .dat1_o_reset (dat1_o_reset ) //i
+ );
+ EfxDMA_BsbDownSizerSparse_a048ca8f51874147a1cd65d43e6523ef outputsAdapter_0_sparseDownsizer_logic (
+ .io_input_valid (outputsAdapter_0_crossclock_fifo_io_pop_valid ), //i
+ .io_input_ready (outputsAdapter_0_sparseDownsizer_logic_io_input_ready ), //o
+ .io_input_payload_data (outputsAdapter_0_crossclock_fifo_io_pop_payload_data[63:0] ), //i
+ .io_input_payload_mask (outputsAdapter_0_crossclock_fifo_io_pop_payload_mask[7:0] ), //i
+ .io_input_payload_sink (outputsAdapter_0_crossclock_fifo_io_pop_payload_sink[3:0] ), //i
+ .io_input_payload_last (outputsAdapter_0_crossclock_fifo_io_pop_payload_last ), //i
+ .io_output_valid (outputsAdapter_0_sparseDownsizer_logic_io_output_valid ), //o
+ .io_output_ready (dat1_o_tready ), //i
+ .io_output_payload_data (outputsAdapter_0_sparseDownsizer_logic_io_output_payload_data[7:0]), //o
+ .io_output_payload_mask (outputsAdapter_0_sparseDownsizer_logic_io_output_payload_mask ), //o
+ .io_output_payload_sink (outputsAdapter_0_sparseDownsizer_logic_io_output_payload_sink[3:0]), //o
+ .io_output_payload_last (outputsAdapter_0_sparseDownsizer_logic_io_output_payload_last ), //o
+ .dat1_o_clk (dat1_o_clk ), //i
+ .dat1_o_reset (dat1_o_reset ) //i
+ );
+ EfxDMA_BmbArbiter_a048ca8f51874147a1cd65d43e6523ef interconnect_read_aggregated_arbiter (
+ .io_inputs_0_cmd_valid (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid ), //i
+ .io_inputs_0_cmd_ready (interconnect_read_aggregated_arbiter_io_inputs_0_cmd_ready ), //o
+ .io_inputs_0_cmd_payload_last (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last ), //i
+ .io_inputs_0_cmd_payload_fragment_opcode (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode ), //i
+ .io_inputs_0_cmd_payload_fragment_address (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address[31:0]), //i
+ .io_inputs_0_cmd_payload_fragment_length (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length[4:0] ), //i
+ .io_inputs_0_cmd_payload_fragment_context (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context ), //i
+ .io_inputs_0_rsp_valid (interconnect_read_aggregated_arbiter_io_inputs_0_rsp_valid ), //o
+ .io_inputs_0_rsp_ready (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready ), //i
+ .io_inputs_0_rsp_payload_last (interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_last ), //o
+ .io_inputs_0_rsp_payload_fragment_opcode (interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode ), //o
+ .io_inputs_0_rsp_payload_fragment_data (interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_data[127:0] ), //o
+ .io_inputs_0_rsp_payload_fragment_context (interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context ), //o
+ .io_inputs_1_cmd_valid (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid ), //i
+ .io_inputs_1_cmd_ready (interconnect_read_aggregated_arbiter_io_inputs_1_cmd_ready ), //o
+ .io_inputs_1_cmd_payload_last (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last ), //i
+ .io_inputs_1_cmd_payload_fragment_opcode (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode ), //i
+ .io_inputs_1_cmd_payload_fragment_address (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address[31:0]), //i
+ .io_inputs_1_cmd_payload_fragment_length (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length[11:0] ), //i
+ .io_inputs_1_cmd_payload_fragment_context (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context[20:0]), //i
+ .io_inputs_1_rsp_valid (interconnect_read_aggregated_arbiter_io_inputs_1_rsp_valid ), //o
+ .io_inputs_1_rsp_ready (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready ), //i
+ .io_inputs_1_rsp_payload_last (interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_last ), //o
+ .io_inputs_1_rsp_payload_fragment_opcode (interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode ), //o
+ .io_inputs_1_rsp_payload_fragment_data (interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_data[127:0] ), //o
+ .io_inputs_1_rsp_payload_fragment_context (interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context[20:0] ), //o
+ .io_output_cmd_valid (interconnect_read_aggregated_arbiter_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (interconnect_read_aggregated_cmd_ready ), //i
+ .io_output_cmd_payload_last (interconnect_read_aggregated_arbiter_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_source (interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_source ), //o
+ .io_output_cmd_payload_fragment_opcode (interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_address[31:0] ), //o
+ .io_output_cmd_payload_fragment_length (interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_cmd_payload_fragment_context (interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_context[20:0] ), //o
+ .io_output_rsp_valid (interconnect_read_aggregated_rsp_valid ), //i
+ .io_output_rsp_ready (interconnect_read_aggregated_arbiter_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (interconnect_read_aggregated_rsp_payload_last ), //i
+ .io_output_rsp_payload_fragment_source (interconnect_read_aggregated_rsp_payload_fragment_source ), //i
+ .io_output_rsp_payload_fragment_opcode (interconnect_read_aggregated_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_data (interconnect_read_aggregated_rsp_payload_fragment_data[127:0] ), //i
+ .io_output_rsp_payload_fragment_context (interconnect_read_aggregated_rsp_payload_fragment_context[20:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_BmbArbiter_1_a048ca8f51874147a1cd65d43e6523ef interconnect_write_aggregated_arbiter (
+ .io_inputs_0_cmd_valid (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid ), //i
+ .io_inputs_0_cmd_ready (interconnect_write_aggregated_arbiter_io_inputs_0_cmd_ready ), //o
+ .io_inputs_0_cmd_payload_last (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last ), //i
+ .io_inputs_0_cmd_payload_fragment_opcode (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode ), //i
+ .io_inputs_0_cmd_payload_fragment_address (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address[31:0]), //i
+ .io_inputs_0_cmd_payload_fragment_length (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length[1:0] ), //i
+ .io_inputs_0_cmd_payload_fragment_data (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_data[127:0] ), //i
+ .io_inputs_0_cmd_payload_fragment_mask (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_mask[15:0] ), //i
+ .io_inputs_0_cmd_payload_fragment_context (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context ), //i
+ .io_inputs_0_rsp_valid (interconnect_write_aggregated_arbiter_io_inputs_0_rsp_valid ), //o
+ .io_inputs_0_rsp_ready (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready ), //i
+ .io_inputs_0_rsp_payload_last (interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_last ), //o
+ .io_inputs_0_rsp_payload_fragment_opcode (interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode ), //o
+ .io_inputs_0_rsp_payload_fragment_context (interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context ), //o
+ .io_inputs_1_cmd_valid (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid ), //i
+ .io_inputs_1_cmd_ready (interconnect_write_aggregated_arbiter_io_inputs_1_cmd_ready ), //o
+ .io_inputs_1_cmd_payload_last (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last ), //i
+ .io_inputs_1_cmd_payload_fragment_opcode (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode ), //i
+ .io_inputs_1_cmd_payload_fragment_address (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address[31:0]), //i
+ .io_inputs_1_cmd_payload_fragment_length (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length[11:0] ), //i
+ .io_inputs_1_cmd_payload_fragment_data (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_data[127:0] ), //i
+ .io_inputs_1_cmd_payload_fragment_mask (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_mask[15:0] ), //i
+ .io_inputs_1_cmd_payload_fragment_context (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context[12:0]), //i
+ .io_inputs_1_rsp_valid (interconnect_write_aggregated_arbiter_io_inputs_1_rsp_valid ), //o
+ .io_inputs_1_rsp_ready (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready ), //i
+ .io_inputs_1_rsp_payload_last (interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_last ), //o
+ .io_inputs_1_rsp_payload_fragment_opcode (interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode ), //o
+ .io_inputs_1_rsp_payload_fragment_context (interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context[12:0] ), //o
+ .io_output_cmd_valid (interconnect_write_aggregated_arbiter_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (interconnect_write_aggregated_cmd_ready ), //i
+ .io_output_cmd_payload_last (interconnect_write_aggregated_arbiter_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_source (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_source ), //o
+ .io_output_cmd_payload_fragment_opcode (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_address[31:0] ), //o
+ .io_output_cmd_payload_fragment_length (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_cmd_payload_fragment_data (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_data[127:0] ), //o
+ .io_output_cmd_payload_fragment_mask (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_mask[15:0] ), //o
+ .io_output_cmd_payload_fragment_context (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_context[12:0] ), //o
+ .io_output_rsp_valid (interconnect_write_aggregated_rsp_valid ), //i
+ .io_output_rsp_ready (interconnect_write_aggregated_arbiter_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (interconnect_write_aggregated_rsp_payload_last ), //i
+ .io_output_rsp_payload_fragment_source (interconnect_write_aggregated_rsp_payload_fragment_source ), //i
+ .io_output_rsp_payload_fragment_opcode (interconnect_write_aggregated_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_context (interconnect_write_aggregated_rsp_payload_fragment_context[12:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign io_0_descriptorUpdate = core_ll_0_descriptorUpdate;
+ assign io_1_descriptorUpdate = core_ll_1_descriptorUpdate;
+ assign ctrl_PREADY = withCtrlCc_apbCc_io_input_PREADY;
+ assign ctrl_PRDATA = withCtrlCc_apbCc_io_input_PRDATA;
+ assign ctrl_PSLVERROR = withCtrlCc_apbCc_io_input_PSLVERROR;
+ assign ctrl_interrupts = io_interrupts_buffercc_io_dataOut;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid = core_io_read_cmd_valid;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready = core_io_read_rsp_ready;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last = core_io_read_cmd_payload_last;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode = core_io_read_cmd_payload_fragment_opcode;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address = core_io_read_cmd_payload_fragment_address;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length = core_io_read_cmd_payload_fragment_length;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context = core_io_read_cmd_payload_fragment_context;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid = core_io_sgRead_cmd_valid;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready = core_io_sgRead_rsp_ready;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last = core_io_sgRead_cmd_payload_last;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode = core_io_sgRead_cmd_payload_fragment_opcode;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address = core_io_sgRead_cmd_payload_fragment_address;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length = core_io_sgRead_cmd_payload_fragment_length;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context = core_io_sgRead_cmd_payload_fragment_context;
+ assign io_write_cmd_s2mPipe_valid = (core_io_write_cmd_valid || (! io_write_cmd_rValidN));
+ assign io_write_cmd_s2mPipe_payload_last = (io_write_cmd_rValidN ? core_io_write_cmd_payload_last : io_write_cmd_rData_last);
+ assign io_write_cmd_s2mPipe_payload_fragment_opcode = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_opcode : io_write_cmd_rData_fragment_opcode);
+ assign io_write_cmd_s2mPipe_payload_fragment_address = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_address : io_write_cmd_rData_fragment_address);
+ assign io_write_cmd_s2mPipe_payload_fragment_length = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_length : io_write_cmd_rData_fragment_length);
+ assign io_write_cmd_s2mPipe_payload_fragment_data = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_data : io_write_cmd_rData_fragment_data);
+ assign io_write_cmd_s2mPipe_payload_fragment_mask = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_mask : io_write_cmd_rData_fragment_mask);
+ assign io_write_cmd_s2mPipe_payload_fragment_context = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_context : io_write_cmd_rData_fragment_context);
+ always @(*) begin
+ io_write_cmd_s2mPipe_ready = io_write_cmd_s2mPipe_m2sPipe_ready;
+ if(when_Stream_l375) begin
+ io_write_cmd_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! io_write_cmd_s2mPipe_m2sPipe_valid);
+ assign io_write_cmd_s2mPipe_m2sPipe_valid = io_write_cmd_s2mPipe_rValid;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_last = io_write_cmd_s2mPipe_rData_last;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_opcode = io_write_cmd_s2mPipe_rData_fragment_opcode;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_address = io_write_cmd_s2mPipe_rData_fragment_address;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_length = io_write_cmd_s2mPipe_rData_fragment_length;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_data = io_write_cmd_s2mPipe_rData_fragment_data;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_mask = io_write_cmd_s2mPipe_rData_fragment_mask;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_context = io_write_cmd_s2mPipe_rData_fragment_context;
+ assign io_write_cmd_s2mPipe_m2sPipe_ready = interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid = io_write_cmd_s2mPipe_m2sPipe_valid;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready = core_io_write_rsp_ready;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last = io_write_cmd_s2mPipe_m2sPipe_payload_last;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_opcode;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_address;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_length;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_data = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_data;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_mask = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_mask;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_context;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid = core_io_sgWrite_cmd_valid;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready = core_io_sgWrite_rsp_ready;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last = core_io_sgWrite_cmd_payload_last;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode = core_io_sgWrite_cmd_payload_fragment_opcode;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address = core_io_sgWrite_cmd_payload_fragment_address;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length = core_io_sgWrite_cmd_payload_fragment_length;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_data = core_io_sgWrite_cmd_payload_fragment_data;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_mask = core_io_sgWrite_cmd_payload_fragment_mask;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context = core_io_sgWrite_cmd_payload_fragment_context;
+ assign interconnect_read_aggregated_cmd_halfPipe_fire = (interconnect_read_aggregated_cmd_halfPipe_valid && interconnect_read_aggregated_cmd_halfPipe_ready);
+ assign interconnect_read_aggregated_cmd_ready = (! interconnect_read_aggregated_cmd_rValid);
+ assign interconnect_read_aggregated_cmd_halfPipe_valid = interconnect_read_aggregated_cmd_rValid;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_last = interconnect_read_aggregated_cmd_rData_last;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_fragment_source = interconnect_read_aggregated_cmd_rData_fragment_source;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_fragment_opcode = interconnect_read_aggregated_cmd_rData_fragment_opcode;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_fragment_address = interconnect_read_aggregated_cmd_rData_fragment_address;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_fragment_length = interconnect_read_aggregated_cmd_rData_fragment_length;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_fragment_context = interconnect_read_aggregated_cmd_rData_fragment_context;
+ assign readLogic_resized_cmd_valid = interconnect_read_aggregated_cmd_halfPipe_valid;
+ assign interconnect_read_aggregated_cmd_halfPipe_ready = readLogic_resized_cmd_ready;
+ assign readLogic_resized_cmd_payload_last = interconnect_read_aggregated_cmd_halfPipe_payload_last;
+ assign readLogic_resized_cmd_payload_fragment_source = interconnect_read_aggregated_cmd_halfPipe_payload_fragment_source;
+ assign readLogic_resized_cmd_payload_fragment_opcode = interconnect_read_aggregated_cmd_halfPipe_payload_fragment_opcode;
+ assign readLogic_resized_cmd_payload_fragment_address = interconnect_read_aggregated_cmd_halfPipe_payload_fragment_address;
+ assign readLogic_resized_cmd_payload_fragment_length = interconnect_read_aggregated_cmd_halfPipe_payload_fragment_length;
+ assign readLogic_resized_cmd_payload_fragment_context = interconnect_read_aggregated_cmd_halfPipe_payload_fragment_context;
+ assign readLogic_resized_rsp_combStage_valid = readLogic_resized_rsp_valid;
+ assign readLogic_resized_rsp_ready = readLogic_resized_rsp_combStage_ready;
+ assign readLogic_resized_rsp_combStage_payload_last = readLogic_resized_rsp_payload_last;
+ assign readLogic_resized_rsp_combStage_payload_fragment_source = readLogic_resized_rsp_payload_fragment_source;
+ assign readLogic_resized_rsp_combStage_payload_fragment_opcode = readLogic_resized_rsp_payload_fragment_opcode;
+ assign readLogic_resized_rsp_combStage_payload_fragment_data = readLogic_resized_rsp_payload_fragment_data;
+ assign readLogic_resized_rsp_combStage_payload_fragment_context = readLogic_resized_rsp_payload_fragment_context;
+ assign interconnect_read_aggregated_rsp_valid = readLogic_resized_rsp_combStage_valid;
+ assign readLogic_resized_rsp_combStage_ready = interconnect_read_aggregated_rsp_ready;
+ assign interconnect_read_aggregated_rsp_payload_last = readLogic_resized_rsp_combStage_payload_last;
+ assign interconnect_read_aggregated_rsp_payload_fragment_source = readLogic_resized_rsp_combStage_payload_fragment_source;
+ assign interconnect_read_aggregated_rsp_payload_fragment_opcode = readLogic_resized_rsp_combStage_payload_fragment_opcode;
+ assign interconnect_read_aggregated_rsp_payload_fragment_data = readLogic_resized_rsp_combStage_payload_fragment_data;
+ assign interconnect_read_aggregated_rsp_payload_fragment_context = readLogic_resized_rsp_combStage_payload_fragment_context;
+ assign readLogic_resized_cmd_ready = readLogic_sourceRemover_io_input_cmd_ready;
+ assign readLogic_resized_rsp_valid = readLogic_sourceRemover_io_input_rsp_valid;
+ assign readLogic_resized_rsp_payload_last = readLogic_sourceRemover_io_input_rsp_payload_last;
+ assign readLogic_resized_rsp_payload_fragment_source = readLogic_sourceRemover_io_input_rsp_payload_fragment_source;
+ assign readLogic_resized_rsp_payload_fragment_opcode = readLogic_sourceRemover_io_input_rsp_payload_fragment_opcode;
+ assign readLogic_resized_rsp_payload_fragment_data = readLogic_sourceRemover_io_input_rsp_payload_fragment_data;
+ assign readLogic_resized_rsp_payload_fragment_context = readLogic_sourceRemover_io_input_rsp_payload_fragment_context;
+ assign readLogic_adapter_ar_valid = readLogic_bridge_io_output_ar_valid;
+ assign readLogic_adapter_ar_payload_addr = readLogic_bridge_io_output_ar_payload_addr;
+ assign _zz_readLogic_adapter_ar_payload_region[3 : 0] = 4'b0000;
+ assign readLogic_adapter_ar_payload_region = _zz_readLogic_adapter_ar_payload_region;
+ assign readLogic_adapter_ar_payload_len = readLogic_bridge_io_output_ar_payload_len;
+ assign readLogic_adapter_ar_payload_size = readLogic_bridge_io_output_ar_payload_size;
+ assign readLogic_adapter_ar_payload_burst = 2'b01;
+ assign readLogic_adapter_ar_payload_lock = 1'b0;
+ assign readLogic_adapter_ar_payload_cache = readLogic_bridge_io_output_ar_payload_cache;
+ assign readLogic_adapter_ar_payload_qos = 4'b0000;
+ assign readLogic_adapter_ar_payload_prot = readLogic_bridge_io_output_ar_payload_prot;
+ assign readLogic_adapter_r_ready = readLogic_bridge_io_output_r_ready;
+ assign readLogic_adapter_ar_halfPipe_fire = (readLogic_adapter_ar_halfPipe_valid && readLogic_adapter_ar_halfPipe_ready);
+ assign readLogic_adapter_ar_ready = (! readLogic_adapter_ar_rValid);
+ assign readLogic_adapter_ar_halfPipe_valid = readLogic_adapter_ar_rValid;
+ assign readLogic_adapter_ar_halfPipe_payload_addr = readLogic_adapter_ar_rData_addr;
+ assign readLogic_adapter_ar_halfPipe_payload_region = readLogic_adapter_ar_rData_region;
+ assign readLogic_adapter_ar_halfPipe_payload_len = readLogic_adapter_ar_rData_len;
+ assign readLogic_adapter_ar_halfPipe_payload_size = readLogic_adapter_ar_rData_size;
+ assign readLogic_adapter_ar_halfPipe_payload_burst = readLogic_adapter_ar_rData_burst;
+ assign readLogic_adapter_ar_halfPipe_payload_lock = readLogic_adapter_ar_rData_lock;
+ assign readLogic_adapter_ar_halfPipe_payload_cache = readLogic_adapter_ar_rData_cache;
+ assign readLogic_adapter_ar_halfPipe_payload_qos = readLogic_adapter_ar_rData_qos;
+ assign readLogic_adapter_ar_halfPipe_payload_prot = readLogic_adapter_ar_rData_prot;
+ assign read_arvalid = readLogic_adapter_ar_halfPipe_valid;
+ assign readLogic_adapter_ar_halfPipe_ready = read_arready;
+ assign read_araddr = readLogic_adapter_ar_halfPipe_payload_addr;
+ assign read_arregion = readLogic_adapter_ar_halfPipe_payload_region;
+ assign read_arlen = readLogic_adapter_ar_halfPipe_payload_len;
+ assign read_arsize = readLogic_adapter_ar_halfPipe_payload_size;
+ assign read_arburst = readLogic_adapter_ar_halfPipe_payload_burst;
+ assign read_arlock = readLogic_adapter_ar_halfPipe_payload_lock;
+ assign read_arcache = readLogic_adapter_ar_halfPipe_payload_cache;
+ assign read_arqos = readLogic_adapter_ar_halfPipe_payload_qos;
+ assign read_arprot = readLogic_adapter_ar_halfPipe_payload_prot;
+ assign read_rready = read_r_rValidN;
+ assign read_r_s2mPipe_valid = (read_rvalid || (! read_r_rValidN));
+ assign read_r_s2mPipe_payload_data = (read_r_rValidN ? read_rdata : read_r_rData_data);
+ assign read_r_s2mPipe_payload_resp = (read_r_rValidN ? read_rresp : read_r_rData_resp);
+ assign read_r_s2mPipe_payload_last = (read_r_rValidN ? read_rlast : read_r_rData_last);
+ always @(*) begin
+ read_r_s2mPipe_ready = readLogic_beforeQueue_ready;
+ if(when_Stream_l375_1) begin
+ read_r_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_1 = (! readLogic_beforeQueue_valid);
+ assign readLogic_beforeQueue_valid = read_r_s2mPipe_rValid;
+ assign readLogic_beforeQueue_payload_data = read_r_s2mPipe_rData_data;
+ assign readLogic_beforeQueue_payload_resp = read_r_s2mPipe_rData_resp;
+ assign readLogic_beforeQueue_payload_last = read_r_s2mPipe_rData_last;
+ assign readLogic_adapter_r_valid = readLogic_beforeQueue_valid;
+ assign readLogic_beforeQueue_ready = readLogic_adapter_r_ready;
+ assign readLogic_adapter_r_payload_data = readLogic_beforeQueue_payload_data;
+ assign readLogic_adapter_r_payload_resp = readLogic_beforeQueue_payload_resp;
+ assign readLogic_adapter_r_payload_last = readLogic_beforeQueue_payload_last;
+ always @(*) begin
+ interconnect_write_aggregated_cmd_ready = interconnect_write_aggregated_cmd_m2sPipe_ready;
+ if(when_Stream_l375_2) begin
+ interconnect_write_aggregated_cmd_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_2 = (! interconnect_write_aggregated_cmd_m2sPipe_valid);
+ assign interconnect_write_aggregated_cmd_m2sPipe_valid = interconnect_write_aggregated_cmd_rValid;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_last = interconnect_write_aggregated_cmd_rData_last;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_source = interconnect_write_aggregated_cmd_rData_fragment_source;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_opcode = interconnect_write_aggregated_cmd_rData_fragment_opcode;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_address = interconnect_write_aggregated_cmd_rData_fragment_address;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_length = interconnect_write_aggregated_cmd_rData_fragment_length;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_data = interconnect_write_aggregated_cmd_rData_fragment_data;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_mask = interconnect_write_aggregated_cmd_rData_fragment_mask;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_context = interconnect_write_aggregated_cmd_rData_fragment_context;
+ assign writeLogic_resized_cmd_valid = interconnect_write_aggregated_cmd_m2sPipe_valid;
+ assign interconnect_write_aggregated_cmd_m2sPipe_ready = writeLogic_resized_cmd_ready;
+ assign writeLogic_resized_cmd_payload_last = interconnect_write_aggregated_cmd_m2sPipe_payload_last;
+ assign writeLogic_resized_cmd_payload_fragment_source = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_source;
+ assign writeLogic_resized_cmd_payload_fragment_opcode = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_opcode;
+ assign writeLogic_resized_cmd_payload_fragment_address = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_address;
+ assign writeLogic_resized_cmd_payload_fragment_length = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_length;
+ assign writeLogic_resized_cmd_payload_fragment_data = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_data;
+ assign writeLogic_resized_cmd_payload_fragment_mask = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_mask;
+ assign writeLogic_resized_cmd_payload_fragment_context = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_context;
+ assign writeLogic_resized_rsp_combStage_valid = writeLogic_resized_rsp_valid;
+ assign writeLogic_resized_rsp_ready = writeLogic_resized_rsp_combStage_ready;
+ assign writeLogic_resized_rsp_combStage_payload_last = writeLogic_resized_rsp_payload_last;
+ assign writeLogic_resized_rsp_combStage_payload_fragment_source = writeLogic_resized_rsp_payload_fragment_source;
+ assign writeLogic_resized_rsp_combStage_payload_fragment_opcode = writeLogic_resized_rsp_payload_fragment_opcode;
+ assign writeLogic_resized_rsp_combStage_payload_fragment_context = writeLogic_resized_rsp_payload_fragment_context;
+ assign interconnect_write_aggregated_rsp_valid = writeLogic_resized_rsp_combStage_valid;
+ assign writeLogic_resized_rsp_combStage_ready = interconnect_write_aggregated_rsp_ready;
+ assign interconnect_write_aggregated_rsp_payload_last = writeLogic_resized_rsp_combStage_payload_last;
+ assign interconnect_write_aggregated_rsp_payload_fragment_source = writeLogic_resized_rsp_combStage_payload_fragment_source;
+ assign interconnect_write_aggregated_rsp_payload_fragment_opcode = writeLogic_resized_rsp_combStage_payload_fragment_opcode;
+ assign interconnect_write_aggregated_rsp_payload_fragment_context = writeLogic_resized_rsp_combStage_payload_fragment_context;
+ assign writeLogic_resized_cmd_ready = writeLogic_sourceRemover_io_input_cmd_ready;
+ assign writeLogic_resized_rsp_valid = writeLogic_sourceRemover_io_input_rsp_valid;
+ assign writeLogic_resized_rsp_payload_last = writeLogic_sourceRemover_io_input_rsp_payload_last;
+ assign writeLogic_resized_rsp_payload_fragment_source = writeLogic_sourceRemover_io_input_rsp_payload_fragment_source;
+ assign writeLogic_resized_rsp_payload_fragment_opcode = writeLogic_sourceRemover_io_input_rsp_payload_fragment_opcode;
+ assign writeLogic_resized_rsp_payload_fragment_context = writeLogic_sourceRemover_io_input_rsp_payload_fragment_context;
+ assign writeLogic_adapter_aw_valid = writeLogic_bridge_io_output_aw_valid;
+ assign writeLogic_adapter_aw_payload_addr = writeLogic_bridge_io_output_aw_payload_addr;
+ assign _zz_writeLogic_adapter_aw_payload_region[3 : 0] = 4'b0000;
+ assign writeLogic_adapter_aw_payload_region = _zz_writeLogic_adapter_aw_payload_region;
+ assign writeLogic_adapter_aw_payload_len = writeLogic_bridge_io_output_aw_payload_len;
+ assign writeLogic_adapter_aw_payload_size = writeLogic_bridge_io_output_aw_payload_size;
+ assign writeLogic_adapter_aw_payload_burst = 2'b01;
+ assign writeLogic_adapter_aw_payload_lock = 1'b0;
+ assign writeLogic_adapter_aw_payload_cache = writeLogic_bridge_io_output_aw_payload_cache;
+ assign writeLogic_adapter_aw_payload_qos = 4'b0000;
+ assign writeLogic_adapter_aw_payload_prot = writeLogic_bridge_io_output_aw_payload_prot;
+ assign writeLogic_adapter_w_valid = writeLogic_bridge_io_output_w_valid;
+ assign writeLogic_adapter_w_payload_data = writeLogic_bridge_io_output_w_payload_data;
+ assign writeLogic_adapter_w_payload_strb = writeLogic_bridge_io_output_w_payload_strb;
+ assign writeLogic_adapter_w_payload_last = writeLogic_bridge_io_output_w_payload_last;
+ assign writeLogic_adapter_b_ready = writeLogic_bridge_io_output_b_ready;
+ assign writeLogic_adapter_aw_halfPipe_fire = (writeLogic_adapter_aw_halfPipe_valid && writeLogic_adapter_aw_halfPipe_ready);
+ assign writeLogic_adapter_aw_ready = (! writeLogic_adapter_aw_rValid);
+ assign writeLogic_adapter_aw_halfPipe_valid = writeLogic_adapter_aw_rValid;
+ assign writeLogic_adapter_aw_halfPipe_payload_addr = writeLogic_adapter_aw_rData_addr;
+ assign writeLogic_adapter_aw_halfPipe_payload_region = writeLogic_adapter_aw_rData_region;
+ assign writeLogic_adapter_aw_halfPipe_payload_len = writeLogic_adapter_aw_rData_len;
+ assign writeLogic_adapter_aw_halfPipe_payload_size = writeLogic_adapter_aw_rData_size;
+ assign writeLogic_adapter_aw_halfPipe_payload_burst = writeLogic_adapter_aw_rData_burst;
+ assign writeLogic_adapter_aw_halfPipe_payload_lock = writeLogic_adapter_aw_rData_lock;
+ assign writeLogic_adapter_aw_halfPipe_payload_cache = writeLogic_adapter_aw_rData_cache;
+ assign writeLogic_adapter_aw_halfPipe_payload_qos = writeLogic_adapter_aw_rData_qos;
+ assign writeLogic_adapter_aw_halfPipe_payload_prot = writeLogic_adapter_aw_rData_prot;
+ assign write_awvalid = writeLogic_adapter_aw_halfPipe_valid;
+ assign writeLogic_adapter_aw_halfPipe_ready = write_awready;
+ assign write_awaddr = writeLogic_adapter_aw_halfPipe_payload_addr;
+ assign write_awregion = writeLogic_adapter_aw_halfPipe_payload_region;
+ assign write_awlen = writeLogic_adapter_aw_halfPipe_payload_len;
+ assign write_awsize = writeLogic_adapter_aw_halfPipe_payload_size;
+ assign write_awburst = writeLogic_adapter_aw_halfPipe_payload_burst;
+ assign write_awlock = writeLogic_adapter_aw_halfPipe_payload_lock;
+ assign write_awcache = writeLogic_adapter_aw_halfPipe_payload_cache;
+ assign write_awqos = writeLogic_adapter_aw_halfPipe_payload_qos;
+ assign write_awprot = writeLogic_adapter_aw_halfPipe_payload_prot;
+ assign writeLogic_adapter_w_ready = writeLogic_adapter_w_rValidN;
+ assign writeLogic_adapter_w_s2mPipe_valid = (writeLogic_adapter_w_valid || (! writeLogic_adapter_w_rValidN));
+ assign writeLogic_adapter_w_s2mPipe_payload_data = (writeLogic_adapter_w_rValidN ? writeLogic_adapter_w_payload_data : writeLogic_adapter_w_rData_data);
+ assign writeLogic_adapter_w_s2mPipe_payload_strb = (writeLogic_adapter_w_rValidN ? writeLogic_adapter_w_payload_strb : writeLogic_adapter_w_rData_strb);
+ assign writeLogic_adapter_w_s2mPipe_payload_last = (writeLogic_adapter_w_rValidN ? writeLogic_adapter_w_payload_last : writeLogic_adapter_w_rData_last);
+ always @(*) begin
+ writeLogic_adapter_w_s2mPipe_ready = writeLogic_adapter_w_s2mPipe_m2sPipe_ready;
+ if(when_Stream_l375_3) begin
+ writeLogic_adapter_w_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_3 = (! writeLogic_adapter_w_s2mPipe_m2sPipe_valid);
+ assign writeLogic_adapter_w_s2mPipe_m2sPipe_valid = writeLogic_adapter_w_s2mPipe_rValid;
+ assign writeLogic_adapter_w_s2mPipe_m2sPipe_payload_data = writeLogic_adapter_w_s2mPipe_rData_data;
+ assign writeLogic_adapter_w_s2mPipe_m2sPipe_payload_strb = writeLogic_adapter_w_s2mPipe_rData_strb;
+ assign writeLogic_adapter_w_s2mPipe_m2sPipe_payload_last = writeLogic_adapter_w_s2mPipe_rData_last;
+ assign write_wvalid = writeLogic_adapter_w_s2mPipe_m2sPipe_valid;
+ assign writeLogic_adapter_w_s2mPipe_m2sPipe_ready = write_wready;
+ assign write_wdata = writeLogic_adapter_w_s2mPipe_m2sPipe_payload_data;
+ assign write_wstrb = writeLogic_adapter_w_s2mPipe_m2sPipe_payload_strb;
+ assign write_wlast = writeLogic_adapter_w_s2mPipe_m2sPipe_payload_last;
+ assign write_b_halfPipe_fire = (write_b_halfPipe_valid && write_b_halfPipe_ready);
+ assign write_bready = (! write_b_rValid);
+ assign write_b_halfPipe_valid = write_b_rValid;
+ assign write_b_halfPipe_payload_resp = write_b_rData_resp;
+ assign writeLogic_adapter_b_valid = write_b_halfPipe_valid;
+ assign write_b_halfPipe_ready = writeLogic_adapter_b_ready;
+ assign writeLogic_adapter_b_payload_resp = write_b_halfPipe_payload_resp;
+ assign dat0_i_tready = inputsAdapter_0_upsizer_logic_io_input_ready;
+ assign io_pop_s2mPipe_valid = (inputsAdapter_0_crossclock_fifo_io_pop_valid || (! io_pop_rValidN));
+ assign io_pop_s2mPipe_payload_data = (io_pop_rValidN ? inputsAdapter_0_crossclock_fifo_io_pop_payload_data : io_pop_rData_data);
+ assign io_pop_s2mPipe_payload_mask = (io_pop_rValidN ? inputsAdapter_0_crossclock_fifo_io_pop_payload_mask : io_pop_rData_mask);
+ assign io_pop_s2mPipe_payload_sink = (io_pop_rValidN ? inputsAdapter_0_crossclock_fifo_io_pop_payload_sink : io_pop_rData_sink);
+ assign io_pop_s2mPipe_payload_last = (io_pop_rValidN ? inputsAdapter_0_crossclock_fifo_io_pop_payload_last : io_pop_rData_last);
+ always @(*) begin
+ io_pop_s2mPipe_ready = io_pop_s2mPipe_m2sPipe_ready;
+ if(when_Stream_l375_4) begin
+ io_pop_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_4 = (! io_pop_s2mPipe_m2sPipe_valid);
+ assign io_pop_s2mPipe_m2sPipe_valid = io_pop_s2mPipe_rValid;
+ assign io_pop_s2mPipe_m2sPipe_payload_data = io_pop_s2mPipe_rData_data;
+ assign io_pop_s2mPipe_m2sPipe_payload_mask = io_pop_s2mPipe_rData_mask;
+ assign io_pop_s2mPipe_m2sPipe_payload_sink = io_pop_s2mPipe_rData_sink;
+ assign io_pop_s2mPipe_m2sPipe_payload_last = io_pop_s2mPipe_rData_last;
+ assign io_pop_s2mPipe_m2sPipe_ready = core_io_inputs_0_ready;
+ assign io_outputs_0_s2mPipe_valid = (core_io_outputs_0_valid || (! io_outputs_0_rValidN));
+ assign io_outputs_0_s2mPipe_payload_data = (io_outputs_0_rValidN ? core_io_outputs_0_payload_data : io_outputs_0_rData_data);
+ assign io_outputs_0_s2mPipe_payload_mask = (io_outputs_0_rValidN ? core_io_outputs_0_payload_mask : io_outputs_0_rData_mask);
+ assign io_outputs_0_s2mPipe_payload_sink = (io_outputs_0_rValidN ? core_io_outputs_0_payload_sink : io_outputs_0_rData_sink);
+ assign io_outputs_0_s2mPipe_payload_last = (io_outputs_0_rValidN ? core_io_outputs_0_payload_last : io_outputs_0_rData_last);
+ always @(*) begin
+ io_outputs_0_s2mPipe_ready = outputsAdapter_0_ptr_ready;
+ if(when_Stream_l375_5) begin
+ io_outputs_0_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_5 = (! outputsAdapter_0_ptr_valid);
+ assign outputsAdapter_0_ptr_valid = io_outputs_0_s2mPipe_rValid;
+ assign outputsAdapter_0_ptr_payload_data = io_outputs_0_s2mPipe_rData_data;
+ assign outputsAdapter_0_ptr_payload_mask = io_outputs_0_s2mPipe_rData_mask;
+ assign outputsAdapter_0_ptr_payload_sink = io_outputs_0_s2mPipe_rData_sink;
+ assign outputsAdapter_0_ptr_payload_last = io_outputs_0_s2mPipe_rData_last;
+ assign outputsAdapter_0_ptr_ready = outputsAdapter_0_crossclock_fifo_io_push_ready;
+ assign dat1_o_tvalid = outputsAdapter_0_sparseDownsizer_logic_io_output_valid;
+ assign dat1_o_tdata = outputsAdapter_0_sparseDownsizer_logic_io_output_payload_data;
+ assign dat1_o_tkeep = outputsAdapter_0_sparseDownsizer_logic_io_output_payload_mask;
+ assign dat1_o_tdest = outputsAdapter_0_sparseDownsizer_logic_io_output_payload_sink;
+ assign dat1_o_tlast = outputsAdapter_0_sparseDownsizer_logic_io_output_payload_last;
+ assign interconnect_read_aggregated_cmd_valid = interconnect_read_aggregated_arbiter_io_output_cmd_valid;
+ assign interconnect_read_aggregated_rsp_ready = interconnect_read_aggregated_arbiter_io_output_rsp_ready;
+ assign interconnect_read_aggregated_cmd_payload_last = interconnect_read_aggregated_arbiter_io_output_cmd_payload_last;
+ assign interconnect_read_aggregated_cmd_payload_fragment_source = interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_source;
+ assign interconnect_read_aggregated_cmd_payload_fragment_opcode = interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_opcode;
+ assign interconnect_read_aggregated_cmd_payload_fragment_address = interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_address;
+ assign interconnect_read_aggregated_cmd_payload_fragment_length = interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_length;
+ assign interconnect_read_aggregated_cmd_payload_fragment_context = interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_context;
+ assign interconnect_write_aggregated_cmd_valid = interconnect_write_aggregated_arbiter_io_output_cmd_valid;
+ assign interconnect_write_aggregated_rsp_ready = interconnect_write_aggregated_arbiter_io_output_rsp_ready;
+ assign interconnect_write_aggregated_cmd_payload_last = interconnect_write_aggregated_arbiter_io_output_cmd_payload_last;
+ assign interconnect_write_aggregated_cmd_payload_fragment_source = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_source;
+ assign interconnect_write_aggregated_cmd_payload_fragment_opcode = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_opcode;
+ assign interconnect_write_aggregated_cmd_payload_fragment_address = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_address;
+ assign interconnect_write_aggregated_cmd_payload_fragment_length = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_length;
+ assign interconnect_write_aggregated_cmd_payload_fragment_data = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_data;
+ assign interconnect_write_aggregated_cmd_payload_fragment_mask = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_mask;
+ assign interconnect_write_aggregated_cmd_payload_fragment_context = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_context;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready = interconnect_read_aggregated_arbiter_io_inputs_0_cmd_ready;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid = interconnect_read_aggregated_arbiter_io_inputs_0_rsp_valid;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last = interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_last;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode = interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_data = interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_data;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context = interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready = interconnect_read_aggregated_arbiter_io_inputs_1_cmd_ready;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid = interconnect_read_aggregated_arbiter_io_inputs_1_rsp_valid;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last = interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_last;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode = interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_data = interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_data;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context = interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready = interconnect_write_aggregated_arbiter_io_inputs_0_cmd_ready;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid = interconnect_write_aggregated_arbiter_io_inputs_0_rsp_valid;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last = interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_last;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode = interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context = interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready = interconnect_write_aggregated_arbiter_io_inputs_1_cmd_ready;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid = interconnect_write_aggregated_arbiter_io_inputs_1_rsp_valid;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last = interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_last;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode = interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context = interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context;
+ always @(posedge clk) begin
+ if(reset) begin
+ io_write_cmd_rValidN <= 1'b1;
+ io_write_cmd_s2mPipe_rValid <= 1'b0;
+ interconnect_read_aggregated_cmd_rValid <= 1'b0;
+ readLogic_adapter_ar_rValid <= 1'b0;
+ read_r_rValidN <= 1'b1;
+ read_r_s2mPipe_rValid <= 1'b0;
+ interconnect_write_aggregated_cmd_rValid <= 1'b0;
+ writeLogic_adapter_aw_rValid <= 1'b0;
+ writeLogic_adapter_w_rValidN <= 1'b1;
+ writeLogic_adapter_w_s2mPipe_rValid <= 1'b0;
+ write_b_rValid <= 1'b0;
+ io_pop_rValidN <= 1'b1;
+ io_pop_s2mPipe_rValid <= 1'b0;
+ io_outputs_0_rValidN <= 1'b1;
+ io_outputs_0_s2mPipe_rValid <= 1'b0;
+ end else begin
+ if(core_io_write_cmd_valid) begin
+ io_write_cmd_rValidN <= 1'b0;
+ end
+ if(io_write_cmd_s2mPipe_ready) begin
+ io_write_cmd_rValidN <= 1'b1;
+ end
+ if(io_write_cmd_s2mPipe_ready) begin
+ io_write_cmd_s2mPipe_rValid <= io_write_cmd_s2mPipe_valid;
+ end
+ if(interconnect_read_aggregated_cmd_valid) begin
+ interconnect_read_aggregated_cmd_rValid <= 1'b1;
+ end
+ if(interconnect_read_aggregated_cmd_halfPipe_fire) begin
+ interconnect_read_aggregated_cmd_rValid <= 1'b0;
+ end
+ if(readLogic_adapter_ar_valid) begin
+ readLogic_adapter_ar_rValid <= 1'b1;
+ end
+ if(readLogic_adapter_ar_halfPipe_fire) begin
+ readLogic_adapter_ar_rValid <= 1'b0;
+ end
+ if(read_rvalid) begin
+ read_r_rValidN <= 1'b0;
+ end
+ if(read_r_s2mPipe_ready) begin
+ read_r_rValidN <= 1'b1;
+ end
+ if(read_r_s2mPipe_ready) begin
+ read_r_s2mPipe_rValid <= read_r_s2mPipe_valid;
+ end
+ if(interconnect_write_aggregated_cmd_ready) begin
+ interconnect_write_aggregated_cmd_rValid <= interconnect_write_aggregated_cmd_valid;
+ end
+ if(writeLogic_adapter_aw_valid) begin
+ writeLogic_adapter_aw_rValid <= 1'b1;
+ end
+ if(writeLogic_adapter_aw_halfPipe_fire) begin
+ writeLogic_adapter_aw_rValid <= 1'b0;
+ end
+ if(writeLogic_adapter_w_valid) begin
+ writeLogic_adapter_w_rValidN <= 1'b0;
+ end
+ if(writeLogic_adapter_w_s2mPipe_ready) begin
+ writeLogic_adapter_w_rValidN <= 1'b1;
+ end
+ if(writeLogic_adapter_w_s2mPipe_ready) begin
+ writeLogic_adapter_w_s2mPipe_rValid <= writeLogic_adapter_w_s2mPipe_valid;
+ end
+ if(write_bvalid) begin
+ write_b_rValid <= 1'b1;
+ end
+ if(write_b_halfPipe_fire) begin
+ write_b_rValid <= 1'b0;
+ end
+ if(inputsAdapter_0_crossclock_fifo_io_pop_valid) begin
+ io_pop_rValidN <= 1'b0;
+ end
+ if(io_pop_s2mPipe_ready) begin
+ io_pop_rValidN <= 1'b1;
+ end
+ if(io_pop_s2mPipe_ready) begin
+ io_pop_s2mPipe_rValid <= io_pop_s2mPipe_valid;
+ end
+ if(core_io_outputs_0_valid) begin
+ io_outputs_0_rValidN <= 1'b0;
+ end
+ if(io_outputs_0_s2mPipe_ready) begin
+ io_outputs_0_rValidN <= 1'b1;
+ end
+ if(io_outputs_0_s2mPipe_ready) begin
+ io_outputs_0_s2mPipe_rValid <= io_outputs_0_s2mPipe_valid;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_write_cmd_rValidN) begin
+ io_write_cmd_rData_last <= core_io_write_cmd_payload_last;
+ io_write_cmd_rData_fragment_opcode <= core_io_write_cmd_payload_fragment_opcode;
+ io_write_cmd_rData_fragment_address <= core_io_write_cmd_payload_fragment_address;
+ io_write_cmd_rData_fragment_length <= core_io_write_cmd_payload_fragment_length;
+ io_write_cmd_rData_fragment_data <= core_io_write_cmd_payload_fragment_data;
+ io_write_cmd_rData_fragment_mask <= core_io_write_cmd_payload_fragment_mask;
+ io_write_cmd_rData_fragment_context <= core_io_write_cmd_payload_fragment_context;
+ end
+ if(io_write_cmd_s2mPipe_ready) begin
+ io_write_cmd_s2mPipe_rData_last <= io_write_cmd_s2mPipe_payload_last;
+ io_write_cmd_s2mPipe_rData_fragment_opcode <= io_write_cmd_s2mPipe_payload_fragment_opcode;
+ io_write_cmd_s2mPipe_rData_fragment_address <= io_write_cmd_s2mPipe_payload_fragment_address;
+ io_write_cmd_s2mPipe_rData_fragment_length <= io_write_cmd_s2mPipe_payload_fragment_length;
+ io_write_cmd_s2mPipe_rData_fragment_data <= io_write_cmd_s2mPipe_payload_fragment_data;
+ io_write_cmd_s2mPipe_rData_fragment_mask <= io_write_cmd_s2mPipe_payload_fragment_mask;
+ io_write_cmd_s2mPipe_rData_fragment_context <= io_write_cmd_s2mPipe_payload_fragment_context;
+ end
+ if(interconnect_read_aggregated_cmd_ready) begin
+ interconnect_read_aggregated_cmd_rData_last <= interconnect_read_aggregated_cmd_payload_last;
+ interconnect_read_aggregated_cmd_rData_fragment_source <= interconnect_read_aggregated_cmd_payload_fragment_source;
+ interconnect_read_aggregated_cmd_rData_fragment_opcode <= interconnect_read_aggregated_cmd_payload_fragment_opcode;
+ interconnect_read_aggregated_cmd_rData_fragment_address <= interconnect_read_aggregated_cmd_payload_fragment_address;
+ interconnect_read_aggregated_cmd_rData_fragment_length <= interconnect_read_aggregated_cmd_payload_fragment_length;
+ interconnect_read_aggregated_cmd_rData_fragment_context <= interconnect_read_aggregated_cmd_payload_fragment_context;
+ end
+ if(readLogic_adapter_ar_ready) begin
+ readLogic_adapter_ar_rData_addr <= readLogic_adapter_ar_payload_addr;
+ readLogic_adapter_ar_rData_region <= readLogic_adapter_ar_payload_region;
+ readLogic_adapter_ar_rData_len <= readLogic_adapter_ar_payload_len;
+ readLogic_adapter_ar_rData_size <= readLogic_adapter_ar_payload_size;
+ readLogic_adapter_ar_rData_burst <= readLogic_adapter_ar_payload_burst;
+ readLogic_adapter_ar_rData_lock <= readLogic_adapter_ar_payload_lock;
+ readLogic_adapter_ar_rData_cache <= readLogic_adapter_ar_payload_cache;
+ readLogic_adapter_ar_rData_qos <= readLogic_adapter_ar_payload_qos;
+ readLogic_adapter_ar_rData_prot <= readLogic_adapter_ar_payload_prot;
+ end
+ if(read_rready) begin
+ read_r_rData_data <= read_rdata;
+ read_r_rData_resp <= read_rresp;
+ read_r_rData_last <= read_rlast;
+ end
+ if(read_r_s2mPipe_ready) begin
+ read_r_s2mPipe_rData_data <= read_r_s2mPipe_payload_data;
+ read_r_s2mPipe_rData_resp <= read_r_s2mPipe_payload_resp;
+ read_r_s2mPipe_rData_last <= read_r_s2mPipe_payload_last;
+ end
+ if(interconnect_write_aggregated_cmd_ready) begin
+ interconnect_write_aggregated_cmd_rData_last <= interconnect_write_aggregated_cmd_payload_last;
+ interconnect_write_aggregated_cmd_rData_fragment_source <= interconnect_write_aggregated_cmd_payload_fragment_source;
+ interconnect_write_aggregated_cmd_rData_fragment_opcode <= interconnect_write_aggregated_cmd_payload_fragment_opcode;
+ interconnect_write_aggregated_cmd_rData_fragment_address <= interconnect_write_aggregated_cmd_payload_fragment_address;
+ interconnect_write_aggregated_cmd_rData_fragment_length <= interconnect_write_aggregated_cmd_payload_fragment_length;
+ interconnect_write_aggregated_cmd_rData_fragment_data <= interconnect_write_aggregated_cmd_payload_fragment_data;
+ interconnect_write_aggregated_cmd_rData_fragment_mask <= interconnect_write_aggregated_cmd_payload_fragment_mask;
+ interconnect_write_aggregated_cmd_rData_fragment_context <= interconnect_write_aggregated_cmd_payload_fragment_context;
+ end
+ if(writeLogic_adapter_aw_ready) begin
+ writeLogic_adapter_aw_rData_addr <= writeLogic_adapter_aw_payload_addr;
+ writeLogic_adapter_aw_rData_region <= writeLogic_adapter_aw_payload_region;
+ writeLogic_adapter_aw_rData_len <= writeLogic_adapter_aw_payload_len;
+ writeLogic_adapter_aw_rData_size <= writeLogic_adapter_aw_payload_size;
+ writeLogic_adapter_aw_rData_burst <= writeLogic_adapter_aw_payload_burst;
+ writeLogic_adapter_aw_rData_lock <= writeLogic_adapter_aw_payload_lock;
+ writeLogic_adapter_aw_rData_cache <= writeLogic_adapter_aw_payload_cache;
+ writeLogic_adapter_aw_rData_qos <= writeLogic_adapter_aw_payload_qos;
+ writeLogic_adapter_aw_rData_prot <= writeLogic_adapter_aw_payload_prot;
+ end
+ if(writeLogic_adapter_w_ready) begin
+ writeLogic_adapter_w_rData_data <= writeLogic_adapter_w_payload_data;
+ writeLogic_adapter_w_rData_strb <= writeLogic_adapter_w_payload_strb;
+ writeLogic_adapter_w_rData_last <= writeLogic_adapter_w_payload_last;
+ end
+ if(writeLogic_adapter_w_s2mPipe_ready) begin
+ writeLogic_adapter_w_s2mPipe_rData_data <= writeLogic_adapter_w_s2mPipe_payload_data;
+ writeLogic_adapter_w_s2mPipe_rData_strb <= writeLogic_adapter_w_s2mPipe_payload_strb;
+ writeLogic_adapter_w_s2mPipe_rData_last <= writeLogic_adapter_w_s2mPipe_payload_last;
+ end
+ if(write_bready) begin
+ write_b_rData_resp <= write_bresp;
+ end
+ if(io_pop_rValidN) begin
+ io_pop_rData_data <= inputsAdapter_0_crossclock_fifo_io_pop_payload_data;
+ io_pop_rData_mask <= inputsAdapter_0_crossclock_fifo_io_pop_payload_mask;
+ io_pop_rData_sink <= inputsAdapter_0_crossclock_fifo_io_pop_payload_sink;
+ io_pop_rData_last <= inputsAdapter_0_crossclock_fifo_io_pop_payload_last;
+ end
+ if(io_pop_s2mPipe_ready) begin
+ io_pop_s2mPipe_rData_data <= io_pop_s2mPipe_payload_data;
+ io_pop_s2mPipe_rData_mask <= io_pop_s2mPipe_payload_mask;
+ io_pop_s2mPipe_rData_sink <= io_pop_s2mPipe_payload_sink;
+ io_pop_s2mPipe_rData_last <= io_pop_s2mPipe_payload_last;
+ end
+ if(io_outputs_0_rValidN) begin
+ io_outputs_0_rData_data <= core_io_outputs_0_payload_data;
+ io_outputs_0_rData_mask <= core_io_outputs_0_payload_mask;
+ io_outputs_0_rData_sink <= core_io_outputs_0_payload_sink;
+ io_outputs_0_rData_last <= core_io_outputs_0_payload_last;
+ end
+ if(io_outputs_0_s2mPipe_ready) begin
+ io_outputs_0_s2mPipe_rData_data <= io_outputs_0_s2mPipe_payload_data;
+ io_outputs_0_s2mPipe_rData_mask <= io_outputs_0_s2mPipe_payload_mask;
+ io_outputs_0_s2mPipe_rData_sink <= io_outputs_0_s2mPipe_payload_sink;
+ io_outputs_0_s2mPipe_rData_last <= io_outputs_0_s2mPipe_payload_last;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbArbiter_1_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_inputs_0_cmd_valid,
+ output wire io_inputs_0_cmd_ready,
+ input wire io_inputs_0_cmd_payload_last,
+ input wire [0:0] io_inputs_0_cmd_payload_fragment_opcode,
+ input wire [31:0] io_inputs_0_cmd_payload_fragment_address,
+ input wire [1:0] io_inputs_0_cmd_payload_fragment_length,
+ input wire [127:0] io_inputs_0_cmd_payload_fragment_data,
+ input wire [15:0] io_inputs_0_cmd_payload_fragment_mask,
+ input wire [0:0] io_inputs_0_cmd_payload_fragment_context,
+ output wire io_inputs_0_rsp_valid,
+ input wire io_inputs_0_rsp_ready,
+ output wire io_inputs_0_rsp_payload_last,
+ output wire [0:0] io_inputs_0_rsp_payload_fragment_opcode,
+ output wire [0:0] io_inputs_0_rsp_payload_fragment_context,
+ input wire io_inputs_1_cmd_valid,
+ output wire io_inputs_1_cmd_ready,
+ input wire io_inputs_1_cmd_payload_last,
+ input wire [0:0] io_inputs_1_cmd_payload_fragment_opcode,
+ input wire [31:0] io_inputs_1_cmd_payload_fragment_address,
+ input wire [11:0] io_inputs_1_cmd_payload_fragment_length,
+ input wire [127:0] io_inputs_1_cmd_payload_fragment_data,
+ input wire [15:0] io_inputs_1_cmd_payload_fragment_mask,
+ input wire [12:0] io_inputs_1_cmd_payload_fragment_context,
+ output wire io_inputs_1_rsp_valid,
+ input wire io_inputs_1_rsp_ready,
+ output wire io_inputs_1_rsp_payload_last,
+ output wire [0:0] io_inputs_1_rsp_payload_fragment_opcode,
+ output wire [12:0] io_inputs_1_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_source,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ output wire [127:0] io_output_cmd_payload_fragment_data,
+ output wire [15:0] io_output_cmd_payload_fragment_mask,
+ output wire [12:0] io_output_cmd_payload_fragment_context,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_source,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [12:0] io_output_rsp_payload_fragment_context,
+ input wire clk,
+ input wire reset
+);
+
+ wire [11:0] memory_arbiter_io_inputs_0_payload_fragment_length;
+ wire [12:0] memory_arbiter_io_inputs_0_payload_fragment_context;
+ wire memory_arbiter_io_inputs_0_ready;
+ wire memory_arbiter_io_inputs_1_ready;
+ wire memory_arbiter_io_output_valid;
+ wire memory_arbiter_io_output_payload_last;
+ wire [0:0] memory_arbiter_io_output_payload_fragment_source;
+ wire [0:0] memory_arbiter_io_output_payload_fragment_opcode;
+ wire [31:0] memory_arbiter_io_output_payload_fragment_address;
+ wire [11:0] memory_arbiter_io_output_payload_fragment_length;
+ wire [127:0] memory_arbiter_io_output_payload_fragment_data;
+ wire [15:0] memory_arbiter_io_output_payload_fragment_mask;
+ wire [12:0] memory_arbiter_io_output_payload_fragment_context;
+ wire [0:0] memory_arbiter_io_chosen;
+ wire [1:0] memory_arbiter_io_chosenOH;
+ wire [1:0] _zz_io_output_cmd_payload_fragment_source;
+ reg _zz_io_output_rsp_ready;
+ wire [0:0] memory_rspSel;
+
+ assign _zz_io_output_cmd_payload_fragment_source = {memory_arbiter_io_output_payload_fragment_source,memory_arbiter_io_chosen};
+ EfxDMA_StreamArbiter_1_a048ca8f51874147a1cd65d43e6523ef memory_arbiter (
+ .io_inputs_0_valid (io_inputs_0_cmd_valid ), //i
+ .io_inputs_0_ready (memory_arbiter_io_inputs_0_ready ), //o
+ .io_inputs_0_payload_last (io_inputs_0_cmd_payload_last ), //i
+ .io_inputs_0_payload_fragment_source (1'b0 ), //i
+ .io_inputs_0_payload_fragment_opcode (io_inputs_0_cmd_payload_fragment_opcode ), //i
+ .io_inputs_0_payload_fragment_address (io_inputs_0_cmd_payload_fragment_address[31:0] ), //i
+ .io_inputs_0_payload_fragment_length (memory_arbiter_io_inputs_0_payload_fragment_length[11:0] ), //i
+ .io_inputs_0_payload_fragment_data (io_inputs_0_cmd_payload_fragment_data[127:0] ), //i
+ .io_inputs_0_payload_fragment_mask (io_inputs_0_cmd_payload_fragment_mask[15:0] ), //i
+ .io_inputs_0_payload_fragment_context (memory_arbiter_io_inputs_0_payload_fragment_context[12:0]), //i
+ .io_inputs_1_valid (io_inputs_1_cmd_valid ), //i
+ .io_inputs_1_ready (memory_arbiter_io_inputs_1_ready ), //o
+ .io_inputs_1_payload_last (io_inputs_1_cmd_payload_last ), //i
+ .io_inputs_1_payload_fragment_source (1'b0 ), //i
+ .io_inputs_1_payload_fragment_opcode (io_inputs_1_cmd_payload_fragment_opcode ), //i
+ .io_inputs_1_payload_fragment_address (io_inputs_1_cmd_payload_fragment_address[31:0] ), //i
+ .io_inputs_1_payload_fragment_length (io_inputs_1_cmd_payload_fragment_length[11:0] ), //i
+ .io_inputs_1_payload_fragment_data (io_inputs_1_cmd_payload_fragment_data[127:0] ), //i
+ .io_inputs_1_payload_fragment_mask (io_inputs_1_cmd_payload_fragment_mask[15:0] ), //i
+ .io_inputs_1_payload_fragment_context (io_inputs_1_cmd_payload_fragment_context[12:0] ), //i
+ .io_output_valid (memory_arbiter_io_output_valid ), //o
+ .io_output_ready (io_output_cmd_ready ), //i
+ .io_output_payload_last (memory_arbiter_io_output_payload_last ), //o
+ .io_output_payload_fragment_source (memory_arbiter_io_output_payload_fragment_source ), //o
+ .io_output_payload_fragment_opcode (memory_arbiter_io_output_payload_fragment_opcode ), //o
+ .io_output_payload_fragment_address (memory_arbiter_io_output_payload_fragment_address[31:0] ), //o
+ .io_output_payload_fragment_length (memory_arbiter_io_output_payload_fragment_length[11:0] ), //o
+ .io_output_payload_fragment_data (memory_arbiter_io_output_payload_fragment_data[127:0] ), //o
+ .io_output_payload_fragment_mask (memory_arbiter_io_output_payload_fragment_mask[15:0] ), //o
+ .io_output_payload_fragment_context (memory_arbiter_io_output_payload_fragment_context[12:0] ), //o
+ .io_chosen (memory_arbiter_io_chosen ), //o
+ .io_chosenOH (memory_arbiter_io_chosenOH[1:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ case(memory_rspSel)
+ 1'b0 : _zz_io_output_rsp_ready = io_inputs_0_rsp_ready;
+ default : _zz_io_output_rsp_ready = io_inputs_1_rsp_ready;
+ endcase
+ end
+
+ assign io_inputs_0_cmd_ready = memory_arbiter_io_inputs_0_ready;
+ assign memory_arbiter_io_inputs_0_payload_fragment_length = {10'd0, io_inputs_0_cmd_payload_fragment_length};
+ assign memory_arbiter_io_inputs_0_payload_fragment_context = {12'd0, io_inputs_0_cmd_payload_fragment_context};
+ assign io_inputs_1_cmd_ready = memory_arbiter_io_inputs_1_ready;
+ assign io_output_cmd_valid = memory_arbiter_io_output_valid;
+ assign io_output_cmd_payload_last = memory_arbiter_io_output_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = memory_arbiter_io_output_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = memory_arbiter_io_output_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = memory_arbiter_io_output_payload_fragment_length;
+ assign io_output_cmd_payload_fragment_data = memory_arbiter_io_output_payload_fragment_data;
+ assign io_output_cmd_payload_fragment_mask = memory_arbiter_io_output_payload_fragment_mask;
+ assign io_output_cmd_payload_fragment_context = memory_arbiter_io_output_payload_fragment_context;
+ assign io_output_cmd_payload_fragment_source = _zz_io_output_cmd_payload_fragment_source[0:0];
+ assign memory_rspSel = io_output_rsp_payload_fragment_source[0 : 0];
+ assign io_inputs_0_rsp_valid = (io_output_rsp_valid && (memory_rspSel == 1'b0));
+ assign io_inputs_0_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_inputs_0_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_inputs_0_rsp_payload_fragment_context = io_output_rsp_payload_fragment_context[0:0];
+ assign io_inputs_1_rsp_valid = (io_output_rsp_valid && (memory_rspSel == 1'b1));
+ assign io_inputs_1_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_inputs_1_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_inputs_1_rsp_payload_fragment_context = io_output_rsp_payload_fragment_context;
+ assign io_output_rsp_ready = _zz_io_output_rsp_ready;
+
+endmodule
+
+module EfxDMA_BmbArbiter_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_inputs_0_cmd_valid,
+ output wire io_inputs_0_cmd_ready,
+ input wire io_inputs_0_cmd_payload_last,
+ input wire [0:0] io_inputs_0_cmd_payload_fragment_opcode,
+ input wire [31:0] io_inputs_0_cmd_payload_fragment_address,
+ input wire [4:0] io_inputs_0_cmd_payload_fragment_length,
+ input wire [0:0] io_inputs_0_cmd_payload_fragment_context,
+ output wire io_inputs_0_rsp_valid,
+ input wire io_inputs_0_rsp_ready,
+ output wire io_inputs_0_rsp_payload_last,
+ output wire [0:0] io_inputs_0_rsp_payload_fragment_opcode,
+ output wire [127:0] io_inputs_0_rsp_payload_fragment_data,
+ output wire [0:0] io_inputs_0_rsp_payload_fragment_context,
+ input wire io_inputs_1_cmd_valid,
+ output wire io_inputs_1_cmd_ready,
+ input wire io_inputs_1_cmd_payload_last,
+ input wire [0:0] io_inputs_1_cmd_payload_fragment_opcode,
+ input wire [31:0] io_inputs_1_cmd_payload_fragment_address,
+ input wire [11:0] io_inputs_1_cmd_payload_fragment_length,
+ input wire [20:0] io_inputs_1_cmd_payload_fragment_context,
+ output wire io_inputs_1_rsp_valid,
+ input wire io_inputs_1_rsp_ready,
+ output wire io_inputs_1_rsp_payload_last,
+ output wire [0:0] io_inputs_1_rsp_payload_fragment_opcode,
+ output wire [127:0] io_inputs_1_rsp_payload_fragment_data,
+ output wire [20:0] io_inputs_1_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_source,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ output wire [20:0] io_output_cmd_payload_fragment_context,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_source,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [127:0] io_output_rsp_payload_fragment_data,
+ input wire [20:0] io_output_rsp_payload_fragment_context,
+ input wire clk,
+ input wire reset
+);
+
+ wire [11:0] memory_arbiter_io_inputs_0_payload_fragment_length;
+ wire [20:0] memory_arbiter_io_inputs_0_payload_fragment_context;
+ wire memory_arbiter_io_inputs_0_ready;
+ wire memory_arbiter_io_inputs_1_ready;
+ wire memory_arbiter_io_output_valid;
+ wire memory_arbiter_io_output_payload_last;
+ wire [0:0] memory_arbiter_io_output_payload_fragment_source;
+ wire [0:0] memory_arbiter_io_output_payload_fragment_opcode;
+ wire [31:0] memory_arbiter_io_output_payload_fragment_address;
+ wire [11:0] memory_arbiter_io_output_payload_fragment_length;
+ wire [20:0] memory_arbiter_io_output_payload_fragment_context;
+ wire [0:0] memory_arbiter_io_chosen;
+ wire [1:0] memory_arbiter_io_chosenOH;
+ wire [1:0] _zz_io_output_cmd_payload_fragment_source;
+ reg _zz_io_output_rsp_ready;
+ wire [0:0] memory_rspSel;
+
+ assign _zz_io_output_cmd_payload_fragment_source = {memory_arbiter_io_output_payload_fragment_source,memory_arbiter_io_chosen};
+ EfxDMA_StreamArbiter_a048ca8f51874147a1cd65d43e6523ef memory_arbiter (
+ .io_inputs_0_valid (io_inputs_0_cmd_valid ), //i
+ .io_inputs_0_ready (memory_arbiter_io_inputs_0_ready ), //o
+ .io_inputs_0_payload_last (io_inputs_0_cmd_payload_last ), //i
+ .io_inputs_0_payload_fragment_source (1'b0 ), //i
+ .io_inputs_0_payload_fragment_opcode (io_inputs_0_cmd_payload_fragment_opcode ), //i
+ .io_inputs_0_payload_fragment_address (io_inputs_0_cmd_payload_fragment_address[31:0] ), //i
+ .io_inputs_0_payload_fragment_length (memory_arbiter_io_inputs_0_payload_fragment_length[11:0] ), //i
+ .io_inputs_0_payload_fragment_context (memory_arbiter_io_inputs_0_payload_fragment_context[20:0]), //i
+ .io_inputs_1_valid (io_inputs_1_cmd_valid ), //i
+ .io_inputs_1_ready (memory_arbiter_io_inputs_1_ready ), //o
+ .io_inputs_1_payload_last (io_inputs_1_cmd_payload_last ), //i
+ .io_inputs_1_payload_fragment_source (1'b0 ), //i
+ .io_inputs_1_payload_fragment_opcode (io_inputs_1_cmd_payload_fragment_opcode ), //i
+ .io_inputs_1_payload_fragment_address (io_inputs_1_cmd_payload_fragment_address[31:0] ), //i
+ .io_inputs_1_payload_fragment_length (io_inputs_1_cmd_payload_fragment_length[11:0] ), //i
+ .io_inputs_1_payload_fragment_context (io_inputs_1_cmd_payload_fragment_context[20:0] ), //i
+ .io_output_valid (memory_arbiter_io_output_valid ), //o
+ .io_output_ready (io_output_cmd_ready ), //i
+ .io_output_payload_last (memory_arbiter_io_output_payload_last ), //o
+ .io_output_payload_fragment_source (memory_arbiter_io_output_payload_fragment_source ), //o
+ .io_output_payload_fragment_opcode (memory_arbiter_io_output_payload_fragment_opcode ), //o
+ .io_output_payload_fragment_address (memory_arbiter_io_output_payload_fragment_address[31:0] ), //o
+ .io_output_payload_fragment_length (memory_arbiter_io_output_payload_fragment_length[11:0] ), //o
+ .io_output_payload_fragment_context (memory_arbiter_io_output_payload_fragment_context[20:0] ), //o
+ .io_chosen (memory_arbiter_io_chosen ), //o
+ .io_chosenOH (memory_arbiter_io_chosenOH[1:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ case(memory_rspSel)
+ 1'b0 : _zz_io_output_rsp_ready = io_inputs_0_rsp_ready;
+ default : _zz_io_output_rsp_ready = io_inputs_1_rsp_ready;
+ endcase
+ end
+
+ assign io_inputs_0_cmd_ready = memory_arbiter_io_inputs_0_ready;
+ assign memory_arbiter_io_inputs_0_payload_fragment_length = {7'd0, io_inputs_0_cmd_payload_fragment_length};
+ assign memory_arbiter_io_inputs_0_payload_fragment_context = {20'd0, io_inputs_0_cmd_payload_fragment_context};
+ assign io_inputs_1_cmd_ready = memory_arbiter_io_inputs_1_ready;
+ assign io_output_cmd_valid = memory_arbiter_io_output_valid;
+ assign io_output_cmd_payload_last = memory_arbiter_io_output_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = memory_arbiter_io_output_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = memory_arbiter_io_output_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = memory_arbiter_io_output_payload_fragment_length;
+ assign io_output_cmd_payload_fragment_context = memory_arbiter_io_output_payload_fragment_context;
+ assign io_output_cmd_payload_fragment_source = _zz_io_output_cmd_payload_fragment_source[0:0];
+ assign memory_rspSel = io_output_rsp_payload_fragment_source[0 : 0];
+ assign io_inputs_0_rsp_valid = (io_output_rsp_valid && (memory_rspSel == 1'b0));
+ assign io_inputs_0_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_inputs_0_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_inputs_0_rsp_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ assign io_inputs_0_rsp_payload_fragment_context = io_output_rsp_payload_fragment_context[0:0];
+ assign io_inputs_1_rsp_valid = (io_output_rsp_valid && (memory_rspSel == 1'b1));
+ assign io_inputs_1_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_inputs_1_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_inputs_1_rsp_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ assign io_inputs_1_rsp_payload_fragment_context = io_output_rsp_payload_fragment_context;
+ assign io_output_rsp_ready = _zz_io_output_rsp_ready;
+
+endmodule
+
+module EfxDMA_BsbDownSizerSparse_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_valid,
+ output wire io_input_ready,
+ input wire [63:0] io_input_payload_data,
+ input wire [7:0] io_input_payload_mask,
+ input wire [3:0] io_input_payload_sink,
+ input wire io_input_payload_last,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire [7:0] io_output_payload_data,
+ output wire [0:0] io_output_payload_mask,
+ output wire [3:0] io_output_payload_sink,
+ output wire io_output_payload_last,
+ input wire dat1_o_clk,
+ input wire dat1_o_reset
+);
+
+ reg [7:0] _zz_io_output_payload_data;
+ reg [0:0] _zz_io_output_payload_mask;
+ reg [2:0] counter;
+ wire end_1;
+ wire io_output_fire;
+
+ always @(*) begin
+ case(counter)
+ 3'b000 : begin
+ _zz_io_output_payload_data = io_input_payload_data[7 : 0];
+ _zz_io_output_payload_mask = io_input_payload_mask[0 : 0];
+ end
+ 3'b001 : begin
+ _zz_io_output_payload_data = io_input_payload_data[15 : 8];
+ _zz_io_output_payload_mask = io_input_payload_mask[1 : 1];
+ end
+ 3'b010 : begin
+ _zz_io_output_payload_data = io_input_payload_data[23 : 16];
+ _zz_io_output_payload_mask = io_input_payload_mask[2 : 2];
+ end
+ 3'b011 : begin
+ _zz_io_output_payload_data = io_input_payload_data[31 : 24];
+ _zz_io_output_payload_mask = io_input_payload_mask[3 : 3];
+ end
+ 3'b100 : begin
+ _zz_io_output_payload_data = io_input_payload_data[39 : 32];
+ _zz_io_output_payload_mask = io_input_payload_mask[4 : 4];
+ end
+ 3'b101 : begin
+ _zz_io_output_payload_data = io_input_payload_data[47 : 40];
+ _zz_io_output_payload_mask = io_input_payload_mask[5 : 5];
+ end
+ 3'b110 : begin
+ _zz_io_output_payload_data = io_input_payload_data[55 : 48];
+ _zz_io_output_payload_mask = io_input_payload_mask[6 : 6];
+ end
+ default : begin
+ _zz_io_output_payload_data = io_input_payload_data[63 : 56];
+ _zz_io_output_payload_mask = io_input_payload_mask[7 : 7];
+ end
+ endcase
+ end
+
+ assign end_1 = (counter == 3'b111);
+ assign io_output_fire = (io_output_valid && io_output_ready);
+ assign io_input_ready = (io_output_ready && end_1);
+ assign io_output_valid = io_input_valid;
+ assign io_output_payload_data = _zz_io_output_payload_data;
+ assign io_output_payload_mask = _zz_io_output_payload_mask;
+ assign io_output_payload_sink = io_input_payload_sink;
+ assign io_output_payload_last = (io_input_payload_last && end_1);
+ always @(posedge dat1_o_clk) begin
+ if(dat1_o_reset) begin
+ counter <= 3'b000;
+ end else begin
+ if(io_output_fire) begin
+ counter <= (counter + 3'b001);
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamFifoCC_1_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [63:0] io_push_payload_data,
+ input wire [7:0] io_push_payload_mask,
+ input wire [3:0] io_push_payload_sink,
+ input wire io_push_payload_last,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [63:0] io_pop_payload_data,
+ output wire [7:0] io_pop_payload_mask,
+ output wire [3:0] io_pop_payload_sink,
+ output wire io_pop_payload_last,
+ output wire [4:0] io_pushOccupancy,
+ output wire [4:0] io_popOccupancy,
+ input wire clk,
+ input wire reset,
+ input wire dat1_o_clk,
+ input wire dat1_o_reset
+);
+
+ reg [76:0] ram_spinal_port1;
+ wire [4:0] popToPushGray_buffercc_io_dataOut;
+ wire [4:0] pushToPopGray_buffercc_io_dataOut;
+ wire [4:0] _zz_pushCC_pushPtrGray;
+ wire [3:0] _zz_ram_port;
+ wire [76:0] _zz_ram_port_1;
+ wire [4:0] _zz_popCC_popPtrGray;
+ reg _zz_1;
+ wire [4:0] popToPushGray;
+ wire [4:0] pushToPopGray;
+ reg [4:0] pushCC_pushPtr;
+ wire [4:0] pushCC_pushPtrPlus;
+ wire io_push_fire;
+ reg [4:0] pushCC_pushPtrGray;
+ wire [4:0] pushCC_popPtrGray;
+ wire pushCC_full;
+ wire _zz_io_pushOccupancy;
+ wire _zz_io_pushOccupancy_1;
+ wire _zz_io_pushOccupancy_2;
+ wire _zz_io_pushOccupancy_3;
+ reg [4:0] popCC_popPtr;
+ (* keep , syn_keep *) wire [4:0] popCC_popPtrPlus /* synthesis syn_keep = 1 */ ;
+ wire [4:0] popCC_popPtrGray;
+ wire [4:0] popCC_pushPtrGray;
+ wire popCC_addressGen_valid;
+ reg popCC_addressGen_ready;
+ wire [3:0] popCC_addressGen_payload;
+ wire popCC_empty;
+ wire popCC_addressGen_fire;
+ wire popCC_readArbitation_valid;
+ wire popCC_readArbitation_ready;
+ wire [3:0] popCC_readArbitation_payload;
+ reg popCC_addressGen_rValid;
+ reg [3:0] popCC_addressGen_rData;
+ wire when_Stream_l375;
+ wire popCC_readPort_cmd_valid;
+ wire [3:0] popCC_readPort_cmd_payload;
+ wire [63:0] popCC_readPort_rsp_data;
+ wire [7:0] popCC_readPort_rsp_mask;
+ wire [3:0] popCC_readPort_rsp_sink;
+ wire popCC_readPort_rsp_last;
+ wire [76:0] _zz_popCC_readPort_rsp_data;
+ wire popCC_readArbitation_translated_valid;
+ wire popCC_readArbitation_translated_ready;
+ wire [63:0] popCC_readArbitation_translated_payload_data;
+ wire [7:0] popCC_readArbitation_translated_payload_mask;
+ wire [3:0] popCC_readArbitation_translated_payload_sink;
+ wire popCC_readArbitation_translated_payload_last;
+ wire popCC_readArbitation_fire;
+ reg [4:0] popCC_ptrToPush;
+ reg [4:0] popCC_ptrToOccupancy;
+ wire _zz_io_popOccupancy;
+ wire _zz_io_popOccupancy_1;
+ wire _zz_io_popOccupancy_2;
+ wire _zz_io_popOccupancy_3;
+ reg [76:0] ram [0:15];
+
+ assign _zz_pushCC_pushPtrGray = (pushCC_pushPtrPlus >>> 1'b1);
+ assign _zz_ram_port = pushCC_pushPtr[3:0];
+ assign _zz_popCC_popPtrGray = (popCC_popPtr >>> 1'b1);
+ assign _zz_ram_port_1 = {io_push_payload_last,{io_push_payload_sink,{io_push_payload_mask,io_push_payload_data}}};
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ ram[_zz_ram_port] <= _zz_ram_port_1;
+ end
+ end
+
+ always @(posedge dat1_o_clk) begin
+ if(popCC_readPort_cmd_valid) begin
+ ram_spinal_port1 <= ram[popCC_readPort_cmd_payload];
+ end
+ end
+
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_3_a048ca8f51874147a1cd65d43e6523ef popToPushGray_buffercc (
+ .io_dataIn (popToPushGray[4:0] ), //i
+ .io_dataOut (popToPushGray_buffercc_io_dataOut[4:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_5_a048ca8f51874147a1cd65d43e6523ef pushToPopGray_buffercc (
+ .io_dataIn (pushToPopGray[4:0] ), //i
+ .io_dataOut (pushToPopGray_buffercc_io_dataOut[4:0]), //o
+ .dat1_o_clk (dat1_o_clk ), //i
+ .dat1_o_reset (dat1_o_reset ) //i
+ );
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(io_push_fire) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign pushCC_pushPtrPlus = (pushCC_pushPtr + 5'h01);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign pushCC_popPtrGray = popToPushGray_buffercc_io_dataOut;
+ assign pushCC_full = ((pushCC_pushPtrGray[4 : 3] == (~ pushCC_popPtrGray[4 : 3])) && (pushCC_pushPtrGray[2 : 0] == pushCC_popPtrGray[2 : 0]));
+ assign io_push_ready = (! pushCC_full);
+ assign _zz_io_pushOccupancy = (pushCC_popPtrGray[1] ^ _zz_io_pushOccupancy_1);
+ assign _zz_io_pushOccupancy_1 = (pushCC_popPtrGray[2] ^ _zz_io_pushOccupancy_2);
+ assign _zz_io_pushOccupancy_2 = (pushCC_popPtrGray[3] ^ _zz_io_pushOccupancy_3);
+ assign _zz_io_pushOccupancy_3 = pushCC_popPtrGray[4];
+ assign io_pushOccupancy = (pushCC_pushPtr - {_zz_io_pushOccupancy_3,{_zz_io_pushOccupancy_2,{_zz_io_pushOccupancy_1,{_zz_io_pushOccupancy,(pushCC_popPtrGray[0] ^ _zz_io_pushOccupancy)}}}});
+ assign popCC_popPtrPlus = (popCC_popPtr + 5'h01);
+ assign popCC_popPtrGray = (_zz_popCC_popPtrGray ^ popCC_popPtr);
+ assign popCC_pushPtrGray = pushToPopGray_buffercc_io_dataOut;
+ assign popCC_empty = (popCC_popPtrGray == popCC_pushPtrGray);
+ assign popCC_addressGen_valid = (! popCC_empty);
+ assign popCC_addressGen_payload = popCC_popPtr[3:0];
+ assign popCC_addressGen_fire = (popCC_addressGen_valid && popCC_addressGen_ready);
+ always @(*) begin
+ popCC_addressGen_ready = popCC_readArbitation_ready;
+ if(when_Stream_l375) begin
+ popCC_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! popCC_readArbitation_valid);
+ assign popCC_readArbitation_valid = popCC_addressGen_rValid;
+ assign popCC_readArbitation_payload = popCC_addressGen_rData;
+ assign _zz_popCC_readPort_rsp_data = ram_spinal_port1;
+ assign popCC_readPort_rsp_data = _zz_popCC_readPort_rsp_data[63 : 0];
+ assign popCC_readPort_rsp_mask = _zz_popCC_readPort_rsp_data[71 : 64];
+ assign popCC_readPort_rsp_sink = _zz_popCC_readPort_rsp_data[75 : 72];
+ assign popCC_readPort_rsp_last = _zz_popCC_readPort_rsp_data[76];
+ assign popCC_readPort_cmd_valid = popCC_addressGen_fire;
+ assign popCC_readPort_cmd_payload = popCC_addressGen_payload;
+ assign popCC_readArbitation_translated_valid = popCC_readArbitation_valid;
+ assign popCC_readArbitation_ready = popCC_readArbitation_translated_ready;
+ assign popCC_readArbitation_translated_payload_data = popCC_readPort_rsp_data;
+ assign popCC_readArbitation_translated_payload_mask = popCC_readPort_rsp_mask;
+ assign popCC_readArbitation_translated_payload_sink = popCC_readPort_rsp_sink;
+ assign popCC_readArbitation_translated_payload_last = popCC_readPort_rsp_last;
+ assign io_pop_valid = popCC_readArbitation_translated_valid;
+ assign popCC_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_data = popCC_readArbitation_translated_payload_data;
+ assign io_pop_payload_mask = popCC_readArbitation_translated_payload_mask;
+ assign io_pop_payload_sink = popCC_readArbitation_translated_payload_sink;
+ assign io_pop_payload_last = popCC_readArbitation_translated_payload_last;
+ assign popCC_readArbitation_fire = (popCC_readArbitation_valid && popCC_readArbitation_ready);
+ assign _zz_io_popOccupancy = (popCC_pushPtrGray[1] ^ _zz_io_popOccupancy_1);
+ assign _zz_io_popOccupancy_1 = (popCC_pushPtrGray[2] ^ _zz_io_popOccupancy_2);
+ assign _zz_io_popOccupancy_2 = (popCC_pushPtrGray[3] ^ _zz_io_popOccupancy_3);
+ assign _zz_io_popOccupancy_3 = popCC_pushPtrGray[4];
+ assign io_popOccupancy = ({_zz_io_popOccupancy_3,{_zz_io_popOccupancy_2,{_zz_io_popOccupancy_1,{_zz_io_popOccupancy,(popCC_pushPtrGray[0] ^ _zz_io_popOccupancy)}}}} - popCC_ptrToOccupancy);
+ assign pushToPopGray = pushCC_pushPtrGray;
+ assign popToPushGray = popCC_ptrToPush;
+ always @(posedge clk) begin
+ if(reset) begin
+ pushCC_pushPtr <= 5'h0;
+ pushCC_pushPtrGray <= 5'h0;
+ end else begin
+ if(io_push_fire) begin
+ pushCC_pushPtrGray <= (_zz_pushCC_pushPtrGray ^ pushCC_pushPtrPlus);
+ end
+ if(io_push_fire) begin
+ pushCC_pushPtr <= pushCC_pushPtrPlus;
+ end
+ end
+ end
+
+ always @(posedge dat1_o_clk) begin
+ if(dat1_o_reset) begin
+ popCC_popPtr <= 5'h0;
+ popCC_addressGen_rValid <= 1'b0;
+ popCC_ptrToPush <= 5'h0;
+ popCC_ptrToOccupancy <= 5'h0;
+ end else begin
+ if(popCC_addressGen_fire) begin
+ popCC_popPtr <= popCC_popPtrPlus;
+ end
+ if(popCC_addressGen_ready) begin
+ popCC_addressGen_rValid <= popCC_addressGen_valid;
+ end
+ if(popCC_readArbitation_fire) begin
+ popCC_ptrToPush <= popCC_popPtrGray;
+ end
+ if(popCC_readArbitation_fire) begin
+ popCC_ptrToOccupancy <= popCC_popPtr;
+ end
+ end
+ end
+
+ always @(posedge dat1_o_clk) begin
+ if(popCC_addressGen_ready) begin
+ popCC_addressGen_rData <= popCC_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamFifoCC_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [63:0] io_push_payload_data,
+ input wire [7:0] io_push_payload_mask,
+ input wire [3:0] io_push_payload_sink,
+ input wire io_push_payload_last,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [63:0] io_pop_payload_data,
+ output wire [7:0] io_pop_payload_mask,
+ output wire [3:0] io_pop_payload_sink,
+ output wire io_pop_payload_last,
+ output wire [4:0] io_pushOccupancy,
+ output wire [4:0] io_popOccupancy,
+ input wire dat0_i_clk,
+ input wire dat0_i_reset,
+ input wire clk,
+ input wire reset
+);
+
+ reg [76:0] ram_spinal_port1;
+ wire [4:0] popToPushGray_buffercc_io_dataOut;
+ wire [4:0] pushToPopGray_buffercc_io_dataOut;
+ wire [4:0] _zz_pushCC_pushPtrGray;
+ wire [3:0] _zz_ram_port;
+ wire [76:0] _zz_ram_port_1;
+ wire [4:0] _zz_popCC_popPtrGray;
+ reg _zz_1;
+ wire [4:0] popToPushGray;
+ wire [4:0] pushToPopGray;
+ reg [4:0] pushCC_pushPtr;
+ wire [4:0] pushCC_pushPtrPlus;
+ wire io_push_fire;
+ reg [4:0] pushCC_pushPtrGray;
+ wire [4:0] pushCC_popPtrGray;
+ wire pushCC_full;
+ wire _zz_io_pushOccupancy;
+ wire _zz_io_pushOccupancy_1;
+ wire _zz_io_pushOccupancy_2;
+ wire _zz_io_pushOccupancy_3;
+ reg [4:0] popCC_popPtr;
+ (* keep , syn_keep *) wire [4:0] popCC_popPtrPlus /* synthesis syn_keep = 1 */ ;
+ wire [4:0] popCC_popPtrGray;
+ wire [4:0] popCC_pushPtrGray;
+ wire popCC_addressGen_valid;
+ reg popCC_addressGen_ready;
+ wire [3:0] popCC_addressGen_payload;
+ wire popCC_empty;
+ wire popCC_addressGen_fire;
+ wire popCC_readArbitation_valid;
+ wire popCC_readArbitation_ready;
+ wire [3:0] popCC_readArbitation_payload;
+ reg popCC_addressGen_rValid;
+ reg [3:0] popCC_addressGen_rData;
+ wire when_Stream_l375;
+ wire popCC_readPort_cmd_valid;
+ wire [3:0] popCC_readPort_cmd_payload;
+ wire [63:0] popCC_readPort_rsp_data;
+ wire [7:0] popCC_readPort_rsp_mask;
+ wire [3:0] popCC_readPort_rsp_sink;
+ wire popCC_readPort_rsp_last;
+ wire [76:0] _zz_popCC_readPort_rsp_data;
+ wire popCC_readArbitation_translated_valid;
+ wire popCC_readArbitation_translated_ready;
+ wire [63:0] popCC_readArbitation_translated_payload_data;
+ wire [7:0] popCC_readArbitation_translated_payload_mask;
+ wire [3:0] popCC_readArbitation_translated_payload_sink;
+ wire popCC_readArbitation_translated_payload_last;
+ wire popCC_readArbitation_fire;
+ reg [4:0] popCC_ptrToPush;
+ reg [4:0] popCC_ptrToOccupancy;
+ wire _zz_io_popOccupancy;
+ wire _zz_io_popOccupancy_1;
+ wire _zz_io_popOccupancy_2;
+ wire _zz_io_popOccupancy_3;
+ reg [76:0] ram [0:15];
+
+ assign _zz_pushCC_pushPtrGray = (pushCC_pushPtrPlus >>> 1'b1);
+ assign _zz_ram_port = pushCC_pushPtr[3:0];
+ assign _zz_popCC_popPtrGray = (popCC_popPtr >>> 1'b1);
+ assign _zz_ram_port_1 = {io_push_payload_last,{io_push_payload_sink,{io_push_payload_mask,io_push_payload_data}}};
+ always @(posedge dat0_i_clk) begin
+ if(_zz_1) begin
+ ram[_zz_ram_port] <= _zz_ram_port_1;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(popCC_readPort_cmd_valid) begin
+ ram_spinal_port1 <= ram[popCC_readPort_cmd_payload];
+ end
+ end
+
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_2_a048ca8f51874147a1cd65d43e6523ef popToPushGray_buffercc (
+ .io_dataIn (popToPushGray[4:0] ), //i
+ .io_dataOut (popToPushGray_buffercc_io_dataOut[4:0]), //o
+ .dat0_i_clk (dat0_i_clk ), //i
+ .dat0_i_reset (dat0_i_reset ) //i
+ );
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_3_a048ca8f51874147a1cd65d43e6523ef pushToPopGray_buffercc (
+ .io_dataIn (pushToPopGray[4:0] ), //i
+ .io_dataOut (pushToPopGray_buffercc_io_dataOut[4:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(io_push_fire) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign pushCC_pushPtrPlus = (pushCC_pushPtr + 5'h01);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign pushCC_popPtrGray = popToPushGray_buffercc_io_dataOut;
+ assign pushCC_full = ((pushCC_pushPtrGray[4 : 3] == (~ pushCC_popPtrGray[4 : 3])) && (pushCC_pushPtrGray[2 : 0] == pushCC_popPtrGray[2 : 0]));
+ assign io_push_ready = (! pushCC_full);
+ assign _zz_io_pushOccupancy = (pushCC_popPtrGray[1] ^ _zz_io_pushOccupancy_1);
+ assign _zz_io_pushOccupancy_1 = (pushCC_popPtrGray[2] ^ _zz_io_pushOccupancy_2);
+ assign _zz_io_pushOccupancy_2 = (pushCC_popPtrGray[3] ^ _zz_io_pushOccupancy_3);
+ assign _zz_io_pushOccupancy_3 = pushCC_popPtrGray[4];
+ assign io_pushOccupancy = (pushCC_pushPtr - {_zz_io_pushOccupancy_3,{_zz_io_pushOccupancy_2,{_zz_io_pushOccupancy_1,{_zz_io_pushOccupancy,(pushCC_popPtrGray[0] ^ _zz_io_pushOccupancy)}}}});
+ assign popCC_popPtrPlus = (popCC_popPtr + 5'h01);
+ assign popCC_popPtrGray = (_zz_popCC_popPtrGray ^ popCC_popPtr);
+ assign popCC_pushPtrGray = pushToPopGray_buffercc_io_dataOut;
+ assign popCC_empty = (popCC_popPtrGray == popCC_pushPtrGray);
+ assign popCC_addressGen_valid = (! popCC_empty);
+ assign popCC_addressGen_payload = popCC_popPtr[3:0];
+ assign popCC_addressGen_fire = (popCC_addressGen_valid && popCC_addressGen_ready);
+ always @(*) begin
+ popCC_addressGen_ready = popCC_readArbitation_ready;
+ if(when_Stream_l375) begin
+ popCC_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! popCC_readArbitation_valid);
+ assign popCC_readArbitation_valid = popCC_addressGen_rValid;
+ assign popCC_readArbitation_payload = popCC_addressGen_rData;
+ assign _zz_popCC_readPort_rsp_data = ram_spinal_port1;
+ assign popCC_readPort_rsp_data = _zz_popCC_readPort_rsp_data[63 : 0];
+ assign popCC_readPort_rsp_mask = _zz_popCC_readPort_rsp_data[71 : 64];
+ assign popCC_readPort_rsp_sink = _zz_popCC_readPort_rsp_data[75 : 72];
+ assign popCC_readPort_rsp_last = _zz_popCC_readPort_rsp_data[76];
+ assign popCC_readPort_cmd_valid = popCC_addressGen_fire;
+ assign popCC_readPort_cmd_payload = popCC_addressGen_payload;
+ assign popCC_readArbitation_translated_valid = popCC_readArbitation_valid;
+ assign popCC_readArbitation_ready = popCC_readArbitation_translated_ready;
+ assign popCC_readArbitation_translated_payload_data = popCC_readPort_rsp_data;
+ assign popCC_readArbitation_translated_payload_mask = popCC_readPort_rsp_mask;
+ assign popCC_readArbitation_translated_payload_sink = popCC_readPort_rsp_sink;
+ assign popCC_readArbitation_translated_payload_last = popCC_readPort_rsp_last;
+ assign io_pop_valid = popCC_readArbitation_translated_valid;
+ assign popCC_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_data = popCC_readArbitation_translated_payload_data;
+ assign io_pop_payload_mask = popCC_readArbitation_translated_payload_mask;
+ assign io_pop_payload_sink = popCC_readArbitation_translated_payload_sink;
+ assign io_pop_payload_last = popCC_readArbitation_translated_payload_last;
+ assign popCC_readArbitation_fire = (popCC_readArbitation_valid && popCC_readArbitation_ready);
+ assign _zz_io_popOccupancy = (popCC_pushPtrGray[1] ^ _zz_io_popOccupancy_1);
+ assign _zz_io_popOccupancy_1 = (popCC_pushPtrGray[2] ^ _zz_io_popOccupancy_2);
+ assign _zz_io_popOccupancy_2 = (popCC_pushPtrGray[3] ^ _zz_io_popOccupancy_3);
+ assign _zz_io_popOccupancy_3 = popCC_pushPtrGray[4];
+ assign io_popOccupancy = ({_zz_io_popOccupancy_3,{_zz_io_popOccupancy_2,{_zz_io_popOccupancy_1,{_zz_io_popOccupancy,(popCC_pushPtrGray[0] ^ _zz_io_popOccupancy)}}}} - popCC_ptrToOccupancy);
+ assign pushToPopGray = pushCC_pushPtrGray;
+ assign popToPushGray = popCC_ptrToPush;
+ always @(posedge dat0_i_clk) begin
+ if(dat0_i_reset) begin
+ pushCC_pushPtr <= 5'h0;
+ pushCC_pushPtrGray <= 5'h0;
+ end else begin
+ if(io_push_fire) begin
+ pushCC_pushPtrGray <= (_zz_pushCC_pushPtrGray ^ pushCC_pushPtrPlus);
+ end
+ if(io_push_fire) begin
+ pushCC_pushPtr <= pushCC_pushPtrPlus;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ popCC_popPtr <= 5'h0;
+ popCC_addressGen_rValid <= 1'b0;
+ popCC_ptrToPush <= 5'h0;
+ popCC_ptrToOccupancy <= 5'h0;
+ end else begin
+ if(popCC_addressGen_fire) begin
+ popCC_popPtr <= popCC_popPtrPlus;
+ end
+ if(popCC_addressGen_ready) begin
+ popCC_addressGen_rValid <= popCC_addressGen_valid;
+ end
+ if(popCC_readArbitation_fire) begin
+ popCC_ptrToPush <= popCC_popPtrGray;
+ end
+ if(popCC_readArbitation_fire) begin
+ popCC_ptrToOccupancy <= popCC_popPtr;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(popCC_addressGen_ready) begin
+ popCC_addressGen_rData <= popCC_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BsbUpSizerDense_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_valid,
+ output wire io_input_ready,
+ input wire [7:0] io_input_payload_data,
+ input wire [0:0] io_input_payload_mask,
+ input wire [3:0] io_input_payload_sink,
+ input wire io_input_payload_last,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire [63:0] io_output_payload_data,
+ output wire [7:0] io_output_payload_mask,
+ output wire [3:0] io_output_payload_sink,
+ output wire io_output_payload_last,
+ input wire dat0_i_clk,
+ input wire dat0_i_reset
+);
+
+ reg valid;
+ reg [2:0] counter;
+ reg [63:0] buffer_data;
+ reg [7:0] buffer_mask;
+ reg [3:0] buffer_sink;
+ reg buffer_last;
+ wire full;
+ wire canAggregate;
+ wire onOutput;
+ wire [2:0] counterSample;
+ wire io_output_fire;
+ wire io_input_fire;
+ wire [7:0] _zz_1;
+ wire [7:0] _zz_2;
+
+ assign full = ((counter == 3'b000) || buffer_last);
+ assign canAggregate = ((((valid && (! buffer_last)) && (! full)) && 1'b1) && (buffer_sink == io_input_payload_sink));
+ assign counterSample = (canAggregate ? counter : 3'b000);
+ assign io_output_fire = (io_output_valid && io_output_ready);
+ assign io_input_fire = (io_input_valid && io_input_ready);
+ assign _zz_1 = ({7'd0,1'b1} <<< counterSample);
+ assign _zz_2 = ({7'd0,1'b1} <<< counterSample);
+ assign io_output_valid = (valid && ((valid && full) || (io_input_valid && (! canAggregate))));
+ assign io_output_payload_data = buffer_data;
+ assign io_output_payload_mask = buffer_mask;
+ assign io_output_payload_sink = buffer_sink;
+ assign io_output_payload_last = buffer_last;
+ assign io_input_ready = (((! valid) || canAggregate) || io_output_ready);
+ always @(posedge dat0_i_clk) begin
+ if(dat0_i_reset) begin
+ valid <= 1'b0;
+ counter <= 3'b000;
+ buffer_last <= 1'b0;
+ buffer_mask <= 8'h0;
+ end else begin
+ if(io_output_fire) begin
+ valid <= 1'b0;
+ buffer_mask <= 8'h0;
+ end
+ if(io_input_fire) begin
+ valid <= 1'b1;
+ if(_zz_2[0]) begin
+ buffer_mask[0 : 0] <= io_input_payload_mask;
+ end
+ if(_zz_2[1]) begin
+ buffer_mask[1 : 1] <= io_input_payload_mask;
+ end
+ if(_zz_2[2]) begin
+ buffer_mask[2 : 2] <= io_input_payload_mask;
+ end
+ if(_zz_2[3]) begin
+ buffer_mask[3 : 3] <= io_input_payload_mask;
+ end
+ if(_zz_2[4]) begin
+ buffer_mask[4 : 4] <= io_input_payload_mask;
+ end
+ if(_zz_2[5]) begin
+ buffer_mask[5 : 5] <= io_input_payload_mask;
+ end
+ if(_zz_2[6]) begin
+ buffer_mask[6 : 6] <= io_input_payload_mask;
+ end
+ if(_zz_2[7]) begin
+ buffer_mask[7 : 7] <= io_input_payload_mask;
+ end
+ buffer_last <= io_input_payload_last;
+ counter <= (counterSample + 3'b001);
+ end
+ end
+ end
+
+ always @(posedge dat0_i_clk) begin
+ if(io_input_fire) begin
+ buffer_sink <= io_input_payload_sink;
+ if(_zz_1[0]) begin
+ buffer_data[7 : 0] <= io_input_payload_data;
+ end
+ if(_zz_1[1]) begin
+ buffer_data[15 : 8] <= io_input_payload_data;
+ end
+ if(_zz_1[2]) begin
+ buffer_data[23 : 16] <= io_input_payload_data;
+ end
+ if(_zz_1[3]) begin
+ buffer_data[31 : 24] <= io_input_payload_data;
+ end
+ if(_zz_1[4]) begin
+ buffer_data[39 : 32] <= io_input_payload_data;
+ end
+ if(_zz_1[5]) begin
+ buffer_data[47 : 40] <= io_input_payload_data;
+ end
+ if(_zz_1[6]) begin
+ buffer_data[55 : 48] <= io_input_payload_data;
+ end
+ if(_zz_1[7]) begin
+ buffer_data[63 : 56] <= io_input_payload_data;
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbToAxi4WriteOnlyBridge_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [127:0] io_input_cmd_payload_fragment_data,
+ input wire [15:0] io_input_cmd_payload_fragment_mask,
+ input wire [13:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [13:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_aw_valid,
+ input wire io_output_aw_ready,
+ output wire [31:0] io_output_aw_payload_addr,
+ output wire [7:0] io_output_aw_payload_len,
+ output wire [2:0] io_output_aw_payload_size,
+ output wire [3:0] io_output_aw_payload_cache,
+ output wire [2:0] io_output_aw_payload_prot,
+ output wire io_output_w_valid,
+ input wire io_output_w_ready,
+ output wire [127:0] io_output_w_payload_data,
+ output wire [15:0] io_output_w_payload_strb,
+ output wire io_output_w_payload_last,
+ input wire io_output_b_valid,
+ output wire io_output_b_ready,
+ input wire [1:0] io_output_b_payload_resp,
+ input wire clk,
+ input wire reset
+);
+
+ reg contextRemover_io_output_cmd_ready;
+ reg [0:0] contextRemover_io_output_rsp_payload_fragment_opcode;
+ wire contextRemover_io_input_cmd_ready;
+ wire contextRemover_io_input_rsp_valid;
+ wire contextRemover_io_input_rsp_payload_last;
+ wire [0:0] contextRemover_io_input_rsp_payload_fragment_opcode;
+ wire [13:0] contextRemover_io_input_rsp_payload_fragment_context;
+ wire contextRemover_io_output_cmd_valid;
+ wire contextRemover_io_output_cmd_payload_last;
+ wire [0:0] contextRemover_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] contextRemover_io_output_cmd_payload_fragment_address;
+ wire [11:0] contextRemover_io_output_cmd_payload_fragment_length;
+ wire [127:0] contextRemover_io_output_cmd_payload_fragment_data;
+ wire [15:0] contextRemover_io_output_cmd_payload_fragment_mask;
+ wire contextRemover_io_output_rsp_ready;
+ wire [8:0] _zz_io_output_aw_payload_len;
+ wire [12:0] _zz_io_output_aw_payload_len_1;
+ wire [12:0] _zz_io_output_aw_payload_len_2;
+ wire [3:0] _zz_io_output_aw_payload_len_3;
+ wire cmdFork_valid;
+ reg cmdFork_ready;
+ wire cmdFork_payload_last;
+ wire [0:0] cmdFork_payload_fragment_opcode;
+ wire [31:0] cmdFork_payload_fragment_address;
+ wire [11:0] cmdFork_payload_fragment_length;
+ wire [127:0] cmdFork_payload_fragment_data;
+ wire [15:0] cmdFork_payload_fragment_mask;
+ wire dataFork_valid;
+ wire dataFork_ready;
+ wire dataFork_payload_last;
+ wire [0:0] dataFork_payload_fragment_opcode;
+ wire [31:0] dataFork_payload_fragment_address;
+ wire [11:0] dataFork_payload_fragment_length;
+ wire [127:0] dataFork_payload_fragment_data;
+ wire [15:0] dataFork_payload_fragment_mask;
+ reg contextRemover_io_output_cmd_fork2_logic_linkEnable_0;
+ reg contextRemover_io_output_cmd_fork2_logic_linkEnable_1;
+ wire when_Stream_l1063;
+ wire when_Stream_l1063_1;
+ wire cmdFork_fire;
+ wire dataFork_fire;
+ wire contextRemover_io_output_cmd_fire;
+ reg contextRemover_io_output_cmd_payload_first;
+ wire when_Stream_l445;
+ reg cmdStage_valid;
+ wire cmdStage_ready;
+ wire cmdStage_payload_last;
+ wire [0:0] cmdStage_payload_fragment_opcode;
+ wire [31:0] cmdStage_payload_fragment_address;
+ wire [11:0] cmdStage_payload_fragment_length;
+ wire [127:0] cmdStage_payload_fragment_data;
+ wire [15:0] cmdStage_payload_fragment_mask;
+ wire when_BmbToAxi4Bridge_l297;
+
+ assign _zz_io_output_aw_payload_len = _zz_io_output_aw_payload_len_1[12 : 4];
+ assign _zz_io_output_aw_payload_len_1 = ({1'b0,cmdStage_payload_fragment_length} + _zz_io_output_aw_payload_len_2);
+ assign _zz_io_output_aw_payload_len_3 = cmdStage_payload_fragment_address[3 : 0];
+ assign _zz_io_output_aw_payload_len_2 = {9'd0, _zz_io_output_aw_payload_len_3};
+ EfxDMA_BmbContextRemover_1_a048ca8f51874147a1cd65d43e6523ef contextRemover (
+ .io_input_cmd_valid (io_input_cmd_valid ), //i
+ .io_input_cmd_ready (contextRemover_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (io_input_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (io_input_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (io_input_cmd_payload_fragment_address[31:0] ), //i
+ .io_input_cmd_payload_fragment_length (io_input_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_data (io_input_cmd_payload_fragment_data[127:0] ), //i
+ .io_input_cmd_payload_fragment_mask (io_input_cmd_payload_fragment_mask[15:0] ), //i
+ .io_input_cmd_payload_fragment_context (io_input_cmd_payload_fragment_context[13:0] ), //i
+ .io_input_rsp_valid (contextRemover_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (io_input_rsp_ready ), //i
+ .io_input_rsp_payload_last (contextRemover_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (contextRemover_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_context (contextRemover_io_input_rsp_payload_fragment_context[13:0] ), //o
+ .io_output_cmd_valid (contextRemover_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (contextRemover_io_output_cmd_ready ), //i
+ .io_output_cmd_payload_last (contextRemover_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_opcode (contextRemover_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (contextRemover_io_output_cmd_payload_fragment_address[31:0]), //o
+ .io_output_cmd_payload_fragment_length (contextRemover_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_cmd_payload_fragment_data (contextRemover_io_output_cmd_payload_fragment_data[127:0] ), //o
+ .io_output_cmd_payload_fragment_mask (contextRemover_io_output_cmd_payload_fragment_mask[15:0] ), //o
+ .io_output_rsp_valid (io_output_b_valid ), //i
+ .io_output_rsp_ready (contextRemover_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (1'b1 ), //i
+ .io_output_rsp_payload_fragment_opcode (contextRemover_io_output_rsp_payload_fragment_opcode ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign io_input_cmd_ready = contextRemover_io_input_cmd_ready;
+ assign io_input_rsp_valid = contextRemover_io_input_rsp_valid;
+ assign io_input_rsp_payload_last = contextRemover_io_input_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = contextRemover_io_input_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_context = contextRemover_io_input_rsp_payload_fragment_context;
+ always @(*) begin
+ contextRemover_io_output_cmd_ready = 1'b1;
+ if(when_Stream_l1063) begin
+ contextRemover_io_output_cmd_ready = 1'b0;
+ end
+ if(when_Stream_l1063_1) begin
+ contextRemover_io_output_cmd_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l1063 = ((! cmdFork_ready) && contextRemover_io_output_cmd_fork2_logic_linkEnable_0);
+ assign when_Stream_l1063_1 = ((! dataFork_ready) && contextRemover_io_output_cmd_fork2_logic_linkEnable_1);
+ assign cmdFork_valid = (contextRemover_io_output_cmd_valid && contextRemover_io_output_cmd_fork2_logic_linkEnable_0);
+ assign cmdFork_payload_last = contextRemover_io_output_cmd_payload_last;
+ assign cmdFork_payload_fragment_opcode = contextRemover_io_output_cmd_payload_fragment_opcode;
+ assign cmdFork_payload_fragment_address = contextRemover_io_output_cmd_payload_fragment_address;
+ assign cmdFork_payload_fragment_length = contextRemover_io_output_cmd_payload_fragment_length;
+ assign cmdFork_payload_fragment_data = contextRemover_io_output_cmd_payload_fragment_data;
+ assign cmdFork_payload_fragment_mask = contextRemover_io_output_cmd_payload_fragment_mask;
+ assign cmdFork_fire = (cmdFork_valid && cmdFork_ready);
+ assign dataFork_valid = (contextRemover_io_output_cmd_valid && contextRemover_io_output_cmd_fork2_logic_linkEnable_1);
+ assign dataFork_payload_last = contextRemover_io_output_cmd_payload_last;
+ assign dataFork_payload_fragment_opcode = contextRemover_io_output_cmd_payload_fragment_opcode;
+ assign dataFork_payload_fragment_address = contextRemover_io_output_cmd_payload_fragment_address;
+ assign dataFork_payload_fragment_length = contextRemover_io_output_cmd_payload_fragment_length;
+ assign dataFork_payload_fragment_data = contextRemover_io_output_cmd_payload_fragment_data;
+ assign dataFork_payload_fragment_mask = contextRemover_io_output_cmd_payload_fragment_mask;
+ assign dataFork_fire = (dataFork_valid && dataFork_ready);
+ assign contextRemover_io_output_cmd_fire = (contextRemover_io_output_cmd_valid && contextRemover_io_output_cmd_ready);
+ assign when_Stream_l445 = (! contextRemover_io_output_cmd_payload_first);
+ always @(*) begin
+ cmdStage_valid = cmdFork_valid;
+ if(when_Stream_l445) begin
+ cmdStage_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ cmdFork_ready = cmdStage_ready;
+ if(when_Stream_l445) begin
+ cmdFork_ready = 1'b1;
+ end
+ end
+
+ assign cmdStage_payload_last = cmdFork_payload_last;
+ assign cmdStage_payload_fragment_opcode = cmdFork_payload_fragment_opcode;
+ assign cmdStage_payload_fragment_address = cmdFork_payload_fragment_address;
+ assign cmdStage_payload_fragment_length = cmdFork_payload_fragment_length;
+ assign cmdStage_payload_fragment_data = cmdFork_payload_fragment_data;
+ assign cmdStage_payload_fragment_mask = cmdFork_payload_fragment_mask;
+ assign io_output_aw_valid = cmdStage_valid;
+ assign cmdStage_ready = io_output_aw_ready;
+ assign io_output_aw_payload_addr = cmdStage_payload_fragment_address;
+ assign io_output_aw_payload_len = _zz_io_output_aw_payload_len[7:0];
+ assign io_output_aw_payload_size = 3'b100;
+ assign io_output_aw_payload_prot = 3'b010;
+ assign io_output_aw_payload_cache = 4'b1111;
+ assign io_output_w_valid = dataFork_valid;
+ assign dataFork_ready = io_output_w_ready;
+ assign io_output_w_payload_data = dataFork_payload_fragment_data;
+ assign io_output_w_payload_strb = dataFork_payload_fragment_mask;
+ assign io_output_w_payload_last = dataFork_payload_last;
+ assign io_output_b_ready = contextRemover_io_output_rsp_ready;
+ assign when_BmbToAxi4Bridge_l297 = (io_output_b_payload_resp == 2'b00);
+ always @(*) begin
+ if(when_BmbToAxi4Bridge_l297) begin
+ contextRemover_io_output_rsp_payload_fragment_opcode = 1'b0;
+ end else begin
+ contextRemover_io_output_rsp_payload_fragment_opcode = 1'b1;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ contextRemover_io_output_cmd_payload_first <= 1'b1;
+ end else begin
+ if(cmdFork_fire) begin
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(dataFork_fire) begin
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(contextRemover_io_output_cmd_ready) begin
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(contextRemover_io_output_cmd_fire) begin
+ contextRemover_io_output_cmd_payload_first <= contextRemover_io_output_cmd_payload_last;
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbSourceRemover_1_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_source,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [127:0] io_input_cmd_payload_fragment_data,
+ input wire [15:0] io_input_cmd_payload_fragment_mask,
+ input wire [12:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_source,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [12:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ output wire [127:0] io_output_cmd_payload_fragment_data,
+ output wire [15:0] io_output_cmd_payload_fragment_mask,
+ output wire [13:0] io_output_cmd_payload_fragment_context,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [13:0] io_output_rsp_payload_fragment_context
+);
+
+ wire [0:0] cmdContext_source;
+ wire [12:0] cmdContext_context;
+ wire [0:0] rspContext_source;
+ wire [12:0] rspContext_context;
+ wire [13:0] _zz_rspContext_source;
+
+ assign cmdContext_source = io_input_cmd_payload_fragment_source;
+ assign cmdContext_context = io_input_cmd_payload_fragment_context;
+ assign io_output_cmd_valid = io_input_cmd_valid;
+ assign io_input_cmd_ready = io_output_cmd_ready;
+ assign io_output_cmd_payload_last = io_input_cmd_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign io_output_cmd_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign io_output_cmd_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign io_output_cmd_payload_fragment_context = {cmdContext_context,cmdContext_source};
+ assign _zz_rspContext_source = io_output_rsp_payload_fragment_context;
+ assign rspContext_source = _zz_rspContext_source[0 : 0];
+ assign rspContext_context = _zz_rspContext_source[13 : 1];
+ assign io_input_rsp_valid = io_output_rsp_valid;
+ assign io_output_rsp_ready = io_input_rsp_ready;
+ assign io_input_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_source = rspContext_source;
+ assign io_input_rsp_payload_fragment_context = rspContext_context;
+
+endmodule
+
+module EfxDMA_BmbToAxi4ReadOnlyBridge_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [21:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [127:0] io_input_rsp_payload_fragment_data,
+ output wire [21:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_ar_valid,
+ input wire io_output_ar_ready,
+ output wire [31:0] io_output_ar_payload_addr,
+ output wire [7:0] io_output_ar_payload_len,
+ output wire [2:0] io_output_ar_payload_size,
+ output wire [3:0] io_output_ar_payload_cache,
+ output wire [2:0] io_output_ar_payload_prot,
+ input wire io_output_r_valid,
+ output wire io_output_r_ready,
+ input wire [127:0] io_output_r_payload_data,
+ input wire [1:0] io_output_r_payload_resp,
+ input wire io_output_r_payload_last,
+ input wire clk,
+ input wire reset
+);
+
+ reg [0:0] contextRemover_io_output_rsp_payload_fragment_opcode;
+ wire contextRemover_io_input_cmd_ready;
+ wire contextRemover_io_input_rsp_valid;
+ wire contextRemover_io_input_rsp_payload_last;
+ wire [0:0] contextRemover_io_input_rsp_payload_fragment_opcode;
+ wire [127:0] contextRemover_io_input_rsp_payload_fragment_data;
+ wire [21:0] contextRemover_io_input_rsp_payload_fragment_context;
+ wire contextRemover_io_output_cmd_valid;
+ wire contextRemover_io_output_cmd_payload_last;
+ wire [0:0] contextRemover_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] contextRemover_io_output_cmd_payload_fragment_address;
+ wire [11:0] contextRemover_io_output_cmd_payload_fragment_length;
+ wire contextRemover_io_output_rsp_ready;
+ wire [8:0] _zz_io_output_ar_payload_len;
+ wire [12:0] _zz_io_output_ar_payload_len_1;
+ wire [12:0] _zz_io_output_ar_payload_len_2;
+ wire [3:0] _zz_io_output_ar_payload_len_3;
+ wire when_BmbToAxi4Bridge_l243;
+
+ assign _zz_io_output_ar_payload_len = _zz_io_output_ar_payload_len_1[12 : 4];
+ assign _zz_io_output_ar_payload_len_1 = ({1'b0,contextRemover_io_output_cmd_payload_fragment_length} + _zz_io_output_ar_payload_len_2);
+ assign _zz_io_output_ar_payload_len_3 = contextRemover_io_output_cmd_payload_fragment_address[3 : 0];
+ assign _zz_io_output_ar_payload_len_2 = {9'd0, _zz_io_output_ar_payload_len_3};
+ EfxDMA_BmbContextRemover_a048ca8f51874147a1cd65d43e6523ef contextRemover (
+ .io_input_cmd_valid (io_input_cmd_valid ), //i
+ .io_input_cmd_ready (contextRemover_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (io_input_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (io_input_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (io_input_cmd_payload_fragment_address[31:0] ), //i
+ .io_input_cmd_payload_fragment_length (io_input_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_context (io_input_cmd_payload_fragment_context[21:0] ), //i
+ .io_input_rsp_valid (contextRemover_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (io_input_rsp_ready ), //i
+ .io_input_rsp_payload_last (contextRemover_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (contextRemover_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (contextRemover_io_input_rsp_payload_fragment_data[127:0] ), //o
+ .io_input_rsp_payload_fragment_context (contextRemover_io_input_rsp_payload_fragment_context[21:0] ), //o
+ .io_output_cmd_valid (contextRemover_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (io_output_ar_ready ), //i
+ .io_output_cmd_payload_last (contextRemover_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_opcode (contextRemover_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (contextRemover_io_output_cmd_payload_fragment_address[31:0]), //o
+ .io_output_cmd_payload_fragment_length (contextRemover_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_rsp_valid (io_output_r_valid ), //i
+ .io_output_rsp_ready (contextRemover_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (io_output_r_payload_last ), //i
+ .io_output_rsp_payload_fragment_opcode (contextRemover_io_output_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_data (io_output_r_payload_data[127:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign io_input_cmd_ready = contextRemover_io_input_cmd_ready;
+ assign io_input_rsp_valid = contextRemover_io_input_rsp_valid;
+ assign io_input_rsp_payload_last = contextRemover_io_input_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = contextRemover_io_input_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_data = contextRemover_io_input_rsp_payload_fragment_data;
+ assign io_input_rsp_payload_fragment_context = contextRemover_io_input_rsp_payload_fragment_context;
+ assign io_output_ar_valid = contextRemover_io_output_cmd_valid;
+ assign io_output_ar_payload_addr = contextRemover_io_output_cmd_payload_fragment_address;
+ assign io_output_ar_payload_len = _zz_io_output_ar_payload_len[7:0];
+ assign io_output_ar_payload_size = 3'b100;
+ assign io_output_ar_payload_prot = 3'b010;
+ assign io_output_ar_payload_cache = 4'b1111;
+ assign io_output_r_ready = contextRemover_io_output_rsp_ready;
+ assign when_BmbToAxi4Bridge_l243 = (io_output_r_payload_resp == 2'b00);
+ always @(*) begin
+ if(when_BmbToAxi4Bridge_l243) begin
+ contextRemover_io_output_rsp_payload_fragment_opcode = 1'b0;
+ end else begin
+ contextRemover_io_output_rsp_payload_fragment_opcode = 1'b1;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbSourceRemover_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_source,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [20:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_source,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [127:0] io_input_rsp_payload_fragment_data,
+ output wire [20:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ output wire [21:0] io_output_cmd_payload_fragment_context,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [127:0] io_output_rsp_payload_fragment_data,
+ input wire [21:0] io_output_rsp_payload_fragment_context
+);
+
+ wire [0:0] cmdContext_source;
+ wire [20:0] cmdContext_context;
+ wire [0:0] rspContext_source;
+ wire [20:0] rspContext_context;
+ wire [21:0] _zz_rspContext_source;
+
+ assign cmdContext_source = io_input_cmd_payload_fragment_source;
+ assign cmdContext_context = io_input_cmd_payload_fragment_context;
+ assign io_output_cmd_valid = io_input_cmd_valid;
+ assign io_input_cmd_ready = io_output_cmd_ready;
+ assign io_output_cmd_payload_last = io_input_cmd_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign io_output_cmd_payload_fragment_context = {cmdContext_context,cmdContext_source};
+ assign _zz_rspContext_source = io_output_rsp_payload_fragment_context;
+ assign rspContext_source = _zz_rspContext_source[0 : 0];
+ assign rspContext_context = _zz_rspContext_source[21 : 1];
+ assign io_input_rsp_valid = io_output_rsp_valid;
+ assign io_output_rsp_ready = io_input_rsp_ready;
+ assign io_input_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ assign io_input_rsp_payload_fragment_source = rspContext_source;
+ assign io_input_rsp_payload_fragment_context = rspContext_context;
+
+endmodule
+
+module EfxDMA_BufferCC_6_a048ca8f51874147a1cd65d43e6523ef (
+ input wire [1:0] io_dataIn,
+ output wire [1:0] io_dataOut,
+ input wire ctrl_clk,
+ input wire ctrl_reset
+);
+
+ (* async_reg = "true" *) reg [1:0] buffers_0;
+ (* async_reg = "true" *) reg [1:0] buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge ctrl_clk) begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+
+
+endmodule
+
+module EfxDMA_Apb3CC_a048ca8f51874147a1cd65d43e6523ef (
+ input wire [13:0] io_input_PADDR,
+ input wire [0:0] io_input_PSEL,
+ input wire io_input_PENABLE,
+ output wire io_input_PREADY,
+ input wire io_input_PWRITE,
+ input wire [31:0] io_input_PWDATA,
+ output wire [31:0] io_input_PRDATA,
+ output wire io_input_PSLVERROR,
+ output wire [13:0] io_output_PADDR,
+ output reg [0:0] io_output_PSEL,
+ output reg io_output_PENABLE,
+ input wire io_output_PREADY,
+ output wire io_output_PWRITE,
+ output wire [31:0] io_output_PWDATA,
+ input wire [31:0] io_output_PRDATA,
+ input wire io_output_PSLVERROR,
+ input wire ctrl_clk,
+ input wire ctrl_reset,
+ input wire clk,
+ input wire reset
+);
+
+ wire flowCCUnsafeByToggle_io_output_valid;
+ wire [13:0] flowCCUnsafeByToggle_io_output_payload_PADDR;
+ wire flowCCUnsafeByToggle_io_output_payload_PWRITE;
+ wire [31:0] flowCCUnsafeByToggle_io_output_payload_PWDATA;
+ wire flowCCUnsafeByToggle_1_io_output_valid;
+ wire [31:0] flowCCUnsafeByToggle_1_io_output_payload_PRDATA;
+ wire flowCCUnsafeByToggle_1_io_output_payload_PSLVERROR;
+ wire inputLogic_inputCmd_valid;
+ wire [13:0] inputLogic_inputCmd_payload_PADDR;
+ wire inputLogic_inputCmd_payload_PWRITE;
+ wire [31:0] inputLogic_inputCmd_payload_PWDATA;
+ wire inputLogic_inputRsp_valid;
+ wire [31:0] inputLogic_inputRsp_payload_PRDATA;
+ wire inputLogic_inputRsp_payload_PSLVERROR;
+ reg inputLogic_state;
+ wire flowCCUnsafeByToggle_io_output_toStream_valid;
+ reg flowCCUnsafeByToggle_io_output_toStream_ready;
+ wire [13:0] flowCCUnsafeByToggle_io_output_toStream_payload_PADDR;
+ wire flowCCUnsafeByToggle_io_output_toStream_payload_PWRITE;
+ wire [31:0] flowCCUnsafeByToggle_io_output_toStream_payload_PWDATA;
+ wire outputLogic_outputCmd_valid;
+ reg outputLogic_outputCmd_ready;
+ wire [13:0] outputLogic_outputCmd_payload_PADDR;
+ wire outputLogic_outputCmd_payload_PWRITE;
+ wire [31:0] outputLogic_outputCmd_payload_PWDATA;
+ reg flowCCUnsafeByToggle_io_output_toStream_rValid;
+ wire flowCCUnsafeByToggle_io_output_toStream_fire;
+ (* async_reg = "true" *) reg [13:0] flowCCUnsafeByToggle_io_output_toStream_rData_PADDR;
+ (* async_reg = "true" *) reg flowCCUnsafeByToggle_io_output_toStream_rData_PWRITE;
+ (* async_reg = "true" *) reg [31:0] flowCCUnsafeByToggle_io_output_toStream_rData_PWDATA;
+ wire when_Stream_l375;
+ reg outputLogic_state;
+ wire when_Apb3CCToggle_l81;
+ wire outputLogic_outputRsp_valid;
+ wire [31:0] outputLogic_outputRsp_payload_PRDATA;
+ wire outputLogic_outputRsp_payload_PSLVERROR;
+ wire outputLogic_outputCmd_fire;
+
+ EfxDMA_FlowCCUnsafeByToggle_a048ca8f51874147a1cd65d43e6523ef flowCCUnsafeByToggle (
+ .io_input_valid (inputLogic_inputCmd_valid ), //i
+ .io_input_payload_PADDR (inputLogic_inputCmd_payload_PADDR[13:0] ), //i
+ .io_input_payload_PWRITE (inputLogic_inputCmd_payload_PWRITE ), //i
+ .io_input_payload_PWDATA (inputLogic_inputCmd_payload_PWDATA[31:0] ), //i
+ .io_output_valid (flowCCUnsafeByToggle_io_output_valid ), //o
+ .io_output_payload_PADDR (flowCCUnsafeByToggle_io_output_payload_PADDR[13:0] ), //o
+ .io_output_payload_PWRITE (flowCCUnsafeByToggle_io_output_payload_PWRITE ), //o
+ .io_output_payload_PWDATA (flowCCUnsafeByToggle_io_output_payload_PWDATA[31:0]), //o
+ .ctrl_clk (ctrl_clk ), //i
+ .ctrl_reset (ctrl_reset ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_FlowCCUnsafeByToggle_1_a048ca8f51874147a1cd65d43e6523ef flowCCUnsafeByToggle_1 (
+ .io_input_valid (outputLogic_outputRsp_valid ), //i
+ .io_input_payload_PRDATA (outputLogic_outputRsp_payload_PRDATA[31:0] ), //i
+ .io_input_payload_PSLVERROR (outputLogic_outputRsp_payload_PSLVERROR ), //i
+ .io_output_valid (flowCCUnsafeByToggle_1_io_output_valid ), //o
+ .io_output_payload_PRDATA (flowCCUnsafeByToggle_1_io_output_payload_PRDATA[31:0]), //o
+ .io_output_payload_PSLVERROR (flowCCUnsafeByToggle_1_io_output_payload_PSLVERROR ), //o
+ .clk (clk ), //i
+ .reset (reset ), //i
+ .ctrl_clk (ctrl_clk ), //i
+ .ctrl_reset (ctrl_reset ) //i
+ );
+ assign inputLogic_inputCmd_valid = ((io_input_PSEL[0] && io_input_PENABLE) && (! inputLogic_state));
+ assign inputLogic_inputCmd_payload_PADDR = io_input_PADDR;
+ assign inputLogic_inputCmd_payload_PWRITE = io_input_PWRITE;
+ assign inputLogic_inputCmd_payload_PWDATA = io_input_PWDATA;
+ assign io_input_PREADY = inputLogic_inputRsp_valid;
+ assign io_input_PRDATA = inputLogic_inputRsp_payload_PRDATA;
+ assign io_input_PSLVERROR = inputLogic_inputRsp_payload_PSLVERROR;
+ assign flowCCUnsafeByToggle_io_output_toStream_valid = flowCCUnsafeByToggle_io_output_valid;
+ assign flowCCUnsafeByToggle_io_output_toStream_payload_PADDR = flowCCUnsafeByToggle_io_output_payload_PADDR;
+ assign flowCCUnsafeByToggle_io_output_toStream_payload_PWRITE = flowCCUnsafeByToggle_io_output_payload_PWRITE;
+ assign flowCCUnsafeByToggle_io_output_toStream_payload_PWDATA = flowCCUnsafeByToggle_io_output_payload_PWDATA;
+ assign flowCCUnsafeByToggle_io_output_toStream_fire = (flowCCUnsafeByToggle_io_output_toStream_valid && flowCCUnsafeByToggle_io_output_toStream_ready);
+ always @(*) begin
+ flowCCUnsafeByToggle_io_output_toStream_ready = outputLogic_outputCmd_ready;
+ if(when_Stream_l375) begin
+ flowCCUnsafeByToggle_io_output_toStream_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! outputLogic_outputCmd_valid);
+ assign outputLogic_outputCmd_valid = flowCCUnsafeByToggle_io_output_toStream_rValid;
+ assign outputLogic_outputCmd_payload_PADDR = flowCCUnsafeByToggle_io_output_toStream_rData_PADDR;
+ assign outputLogic_outputCmd_payload_PWRITE = flowCCUnsafeByToggle_io_output_toStream_rData_PWRITE;
+ assign outputLogic_outputCmd_payload_PWDATA = flowCCUnsafeByToggle_io_output_toStream_rData_PWDATA;
+ always @(*) begin
+ io_output_PENABLE = 1'b0;
+ if(outputLogic_outputCmd_valid) begin
+ if(when_Apb3CCToggle_l81) begin
+ io_output_PENABLE = 1'b0;
+ end else begin
+ io_output_PENABLE = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ io_output_PSEL = 1'b0;
+ if(outputLogic_outputCmd_valid) begin
+ io_output_PSEL = 1'b1;
+ end
+ end
+
+ assign io_output_PADDR = outputLogic_outputCmd_payload_PADDR;
+ assign io_output_PWDATA = outputLogic_outputCmd_payload_PWDATA;
+ assign io_output_PWRITE = outputLogic_outputCmd_payload_PWRITE;
+ always @(*) begin
+ outputLogic_outputCmd_ready = 1'b0;
+ if(outputLogic_outputCmd_valid) begin
+ if(!when_Apb3CCToggle_l81) begin
+ if(io_output_PREADY) begin
+ outputLogic_outputCmd_ready = 1'b1;
+ end
+ end
+ end
+ end
+
+ assign when_Apb3CCToggle_l81 = (! outputLogic_state);
+ assign outputLogic_outputCmd_fire = (outputLogic_outputCmd_valid && outputLogic_outputCmd_ready);
+ assign outputLogic_outputRsp_valid = outputLogic_outputCmd_fire;
+ assign outputLogic_outputRsp_payload_PRDATA = io_output_PRDATA;
+ assign outputLogic_outputRsp_payload_PSLVERROR = io_output_PSLVERROR;
+ assign inputLogic_inputRsp_valid = flowCCUnsafeByToggle_1_io_output_valid;
+ assign inputLogic_inputRsp_payload_PRDATA = flowCCUnsafeByToggle_1_io_output_payload_PRDATA;
+ assign inputLogic_inputRsp_payload_PSLVERROR = flowCCUnsafeByToggle_1_io_output_payload_PSLVERROR;
+ always @(posedge ctrl_clk) begin
+ if(ctrl_reset) begin
+ inputLogic_state <= 1'b0;
+ end else begin
+ if(inputLogic_inputCmd_valid) begin
+ inputLogic_state <= 1'b1;
+ end
+ if(inputLogic_inputRsp_valid) begin
+ inputLogic_state <= 1'b0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ flowCCUnsafeByToggle_io_output_toStream_rValid <= 1'b0;
+ outputLogic_state <= 1'b0;
+ end else begin
+ if(flowCCUnsafeByToggle_io_output_toStream_ready) begin
+ flowCCUnsafeByToggle_io_output_toStream_rValid <= flowCCUnsafeByToggle_io_output_toStream_valid;
+ end
+ if(outputLogic_outputCmd_valid) begin
+ if(when_Apb3CCToggle_l81) begin
+ outputLogic_state <= 1'b1;
+ end else begin
+ if(io_output_PREADY) begin
+ outputLogic_state <= 1'b0;
+ end
+ end
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(flowCCUnsafeByToggle_io_output_toStream_fire) begin
+ flowCCUnsafeByToggle_io_output_toStream_rData_PADDR <= flowCCUnsafeByToggle_io_output_toStream_payload_PADDR;
+ flowCCUnsafeByToggle_io_output_toStream_rData_PWRITE <= flowCCUnsafeByToggle_io_output_toStream_payload_PWRITE;
+ flowCCUnsafeByToggle_io_output_toStream_rData_PWDATA <= flowCCUnsafeByToggle_io_output_toStream_payload_PWDATA;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_Core_a048ca8f51874147a1cd65d43e6523ef (
+ output wire io_sgRead_cmd_valid,
+ input wire io_sgRead_cmd_ready,
+ output wire io_sgRead_cmd_payload_last,
+ output wire [0:0] io_sgRead_cmd_payload_fragment_opcode,
+ output wire [31:0] io_sgRead_cmd_payload_fragment_address,
+ output wire [4:0] io_sgRead_cmd_payload_fragment_length,
+ output wire [0:0] io_sgRead_cmd_payload_fragment_context,
+ input wire io_sgRead_rsp_valid,
+ output wire io_sgRead_rsp_ready,
+ input wire io_sgRead_rsp_payload_last,
+ input wire [0:0] io_sgRead_rsp_payload_fragment_opcode,
+ input wire [127:0] io_sgRead_rsp_payload_fragment_data,
+ input wire [0:0] io_sgRead_rsp_payload_fragment_context,
+ output wire io_sgWrite_cmd_valid,
+ input wire io_sgWrite_cmd_ready,
+ output wire io_sgWrite_cmd_payload_last,
+ output wire [0:0] io_sgWrite_cmd_payload_fragment_opcode,
+ output wire [31:0] io_sgWrite_cmd_payload_fragment_address,
+ output wire [1:0] io_sgWrite_cmd_payload_fragment_length,
+ output reg [127:0] io_sgWrite_cmd_payload_fragment_data,
+ output reg [15:0] io_sgWrite_cmd_payload_fragment_mask,
+ output wire [0:0] io_sgWrite_cmd_payload_fragment_context,
+ input wire io_sgWrite_rsp_valid,
+ output wire io_sgWrite_rsp_ready,
+ input wire io_sgWrite_rsp_payload_last,
+ input wire [0:0] io_sgWrite_rsp_payload_fragment_opcode,
+ input wire [0:0] io_sgWrite_rsp_payload_fragment_context,
+ output reg io_read_cmd_valid,
+ input wire io_read_cmd_ready,
+ output wire io_read_cmd_payload_last,
+ output wire [0:0] io_read_cmd_payload_fragment_opcode,
+ output wire [31:0] io_read_cmd_payload_fragment_address,
+ output wire [11:0] io_read_cmd_payload_fragment_length,
+ output wire [20:0] io_read_cmd_payload_fragment_context,
+ input wire io_read_rsp_valid,
+ output wire io_read_rsp_ready,
+ input wire io_read_rsp_payload_last,
+ input wire [0:0] io_read_rsp_payload_fragment_opcode,
+ input wire [127:0] io_read_rsp_payload_fragment_data,
+ input wire [20:0] io_read_rsp_payload_fragment_context,
+ output wire io_write_cmd_valid,
+ input wire io_write_cmd_ready,
+ output wire io_write_cmd_payload_last,
+ output wire [0:0] io_write_cmd_payload_fragment_opcode,
+ output wire [31:0] io_write_cmd_payload_fragment_address,
+ output wire [11:0] io_write_cmd_payload_fragment_length,
+ output wire [127:0] io_write_cmd_payload_fragment_data,
+ output wire [15:0] io_write_cmd_payload_fragment_mask,
+ output wire [12:0] io_write_cmd_payload_fragment_context,
+ input wire io_write_rsp_valid,
+ output wire io_write_rsp_ready,
+ input wire io_write_rsp_payload_last,
+ input wire [0:0] io_write_rsp_payload_fragment_opcode,
+ input wire [12:0] io_write_rsp_payload_fragment_context,
+ output wire io_outputs_0_valid,
+ input wire io_outputs_0_ready,
+ output wire [63:0] io_outputs_0_payload_data,
+ output wire [7:0] io_outputs_0_payload_mask,
+ output wire [3:0] io_outputs_0_payload_sink,
+ output wire io_outputs_0_payload_last,
+ input wire io_inputs_0_valid,
+ output reg io_inputs_0_ready,
+ input wire [63:0] io_inputs_0_payload_data,
+ input wire [7:0] io_inputs_0_payload_mask,
+ input wire [3:0] io_inputs_0_payload_sink,
+ input wire io_inputs_0_payload_last,
+ output reg [1:0] io_interrupts,
+ input wire [13:0] io_ctrl_PADDR,
+ input wire [0:0] io_ctrl_PSEL,
+ input wire io_ctrl_PENABLE,
+ output wire io_ctrl_PREADY,
+ input wire io_ctrl_PWRITE,
+ input wire [31:0] io_ctrl_PWDATA,
+ output reg [31:0] io_ctrl_PRDATA,
+ output wire io_ctrl_PSLVERROR,
+ output wire ll_0_descriptorUpdate,
+ output wire ll_1_descriptorUpdate,
+ input wire clk,
+ input wire reset
+);
+
+ wire [9:0] memory_core_io_writes_0_cmd_payload_address;
+ wire [6:0] memory_core_io_writes_0_cmd_payload_context;
+ wire [9:0] memory_core_io_writes_1_cmd_payload_address;
+ reg [15:0] memory_core_io_writes_1_cmd_payload_mask;
+ wire [6:0] memory_core_io_writes_1_cmd_payload_context;
+ wire memory_core_io_reads_0_cmd_valid;
+ wire [9:0] memory_core_io_reads_0_cmd_payload_address;
+ wire [2:0] memory_core_io_reads_0_cmd_payload_context;
+ wire [9:0] memory_core_io_reads_1_cmd_payload_address;
+ wire [11:0] memory_core_io_reads_1_cmd_payload_context;
+ wire [15:0] b2m_fsm_aggregate_engine_io_input_payload_mask;
+ wire b2m_fsm_aggregate_engine_io_flush;
+ wire [3:0] b2m_fsm_aggregate_engine_io_offset;
+ wire memory_core_io_writes_0_cmd_ready;
+ wire memory_core_io_writes_0_rsp_valid;
+ wire [6:0] memory_core_io_writes_0_rsp_payload_context;
+ wire memory_core_io_writes_1_cmd_ready;
+ wire memory_core_io_writes_1_rsp_valid;
+ wire [6:0] memory_core_io_writes_1_rsp_payload_context;
+ wire memory_core_io_reads_0_cmd_ready;
+ wire memory_core_io_reads_0_rsp_valid;
+ wire [63:0] memory_core_io_reads_0_rsp_payload_data;
+ wire [7:0] memory_core_io_reads_0_rsp_payload_mask;
+ wire [2:0] memory_core_io_reads_0_rsp_payload_context;
+ wire memory_core_io_reads_1_cmd_ready;
+ wire memory_core_io_reads_1_rsp_valid;
+ wire [127:0] memory_core_io_reads_1_rsp_payload_data;
+ wire [15:0] memory_core_io_reads_1_rsp_payload_mask;
+ wire [11:0] memory_core_io_reads_1_rsp_payload_context;
+ wire b2m_fsm_aggregate_engine_io_input_ready;
+ wire [127:0] b2m_fsm_aggregate_engine_io_output_data;
+ wire [15:0] b2m_fsm_aggregate_engine_io_output_mask;
+ wire b2m_fsm_aggregate_engine_io_output_consumed;
+ wire [3:0] b2m_fsm_aggregate_engine_io_output_usedUntil;
+ wire [26:0] _zz_channels_0_bytesProbe_value;
+ wire [26:0] _zz_channels_0_bytesProbe_value_1;
+ wire [13:0] _zz_channels_0_fifo_pop_withOverride_backupNext;
+ wire [13:0] _zz_channels_0_fifo_pop_withOverride_exposed;
+ wire [26:0] _zz_channels_0_pop_b2m_selfFlush;
+ wire [13:0] _zz_channels_0_pop_b2m_request;
+ wire [10:0] _zz_channels_0_pop_b2m_request_1;
+ wire [9:0] _zz_channels_0_pop_b2m_request_2;
+ wire [3:0] _zz_channels_0_pop_b2m_memPending;
+ wire [3:0] _zz_channels_0_pop_b2m_memPending_1;
+ wire [0:0] _zz_channels_0_pop_b2m_memPending_2;
+ wire [3:0] _zz_channels_0_pop_b2m_memPending_3;
+ wire [0:0] _zz_channels_0_pop_b2m_memPending_4;
+ wire [10:0] _zz_channels_0_fifo_push_available;
+ wire [26:0] _zz_channels_1_bytesProbe_value;
+ wire [26:0] _zz_channels_1_bytesProbe_value_1;
+ wire [13:0] _zz_channels_1_fifo_pop_withoutOverride_exposed;
+ wire [3:0] _zz_channels_1_push_m2b_memPending;
+ wire [3:0] _zz_channels_1_push_m2b_memPending_1;
+ wire [0:0] _zz_channels_1_push_m2b_memPending_2;
+ wire [3:0] _zz_channels_1_push_m2b_memPending_3;
+ wire [0:0] _zz_channels_1_push_m2b_memPending_4;
+ wire [10:0] _zz_channels_1_push_m2b_loadRequest;
+ wire [8:0] _zz_channels_1_push_m2b_loadRequest_1;
+ wire [25:0] _zz_when_DmaSg_l486;
+ wire [10:0] _zz_channels_1_fifo_push_available;
+ wire [0:0] _zz_s2b_0_cmd_firsts;
+ wire [4:0] _zz_s2b_0_cmd_firsts_1;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_8;
+ reg [3:0] _zz_s2b_0_cmd_byteCount_9;
+ wire [2:0] _zz_s2b_0_cmd_byteCount_10;
+ reg [3:0] _zz_s2b_0_cmd_byteCount_11;
+ wire [2:0] _zz_s2b_0_cmd_byteCount_12;
+ reg [3:0] _zz_s2b_0_cmd_byteCount_13;
+ wire [2:0] _zz_s2b_0_cmd_byteCount_14;
+ wire [1:0] _zz_s2b_0_cmd_byteCount_15;
+ wire [1:0] _zz__zz_m2b_cmd_s0_priority_chosenOh_2;
+ wire [1:0] _zz__zz_m2b_cmd_s0_priority_chosenOh_2_1;
+ wire [0:0] _zz__zz_m2b_cmd_s0_priority_chosenOh_2_2;
+ reg [0:0] _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3;
+ wire [25:0] _zz_m2b_cmd_s0_length;
+ wire [25:0] _zz_m2b_cmd_s0_length_1;
+ wire [25:0] _zz_m2b_cmd_s0_length_2;
+ wire [25:0] _zz_m2b_cmd_s0_lastBurst;
+ wire [31:0] _zz_m2b_cmd_s1_context_stop;
+ wire [31:0] _zz_m2b_cmd_s1_context_stop_1;
+ wire [31:0] _zz_m2b_cmd_s1_addressNext;
+ wire [31:0] _zz_m2b_cmd_s1_addressNext_1;
+ wire [25:0] _zz_m2b_cmd_s1_byteLeftNext;
+ wire [25:0] _zz_m2b_cmd_s1_byteLeftNext_1;
+ wire [12:0] _zz_m2b_cmd_s1_fifoPushDecr;
+ wire [11:0] _zz_m2b_cmd_s1_fifoPushDecr_1;
+ wire [11:0] _zz_m2b_cmd_s1_fifoPushDecr_2;
+ wire [3:0] _zz_m2b_cmd_s1_fifoPushDecr_3;
+ wire [12:0] _zz_m2b_cmd_s1_fifoPushDecr_4;
+ wire [1:0] _zz_m2b_cmd_s1_fifoPushDecr_5;
+ wire [1:0] _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2;
+ wire [1:0] _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_1;
+ wire [0:0] _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_2;
+ reg [0:0] _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3;
+ wire [0:0] _zz_when;
+ wire [12:0] _zz_b2m_fsm_bytesInBurstP1;
+ wire [1:0] _zz_b2m_fsm_bytesInBurstP1_1;
+ wire [31:0] _zz_b2m_fsm_addressNext;
+ wire [26:0] _zz_b2m_fsm_bytesLeftNext;
+ wire [13:0] _zz_b2m_fsm_bytesLeftNext_1;
+ wire [25:0] _zz__zz_b2m_fsm_sel_bytesInBurst_1;
+ wire [25:0] _zz__zz_b2m_fsm_sel_bytesInBurst_1_1;
+ wire [11:0] _zz__zz_b2m_fsm_sel_bytesInBurst_2;
+ wire [25:0] _zz_b2m_fsm_sel_bytesInBurst_3;
+ wire [25:0] _zz_b2m_fsm_sel_bytesInBurst_4;
+ wire [25:0] _zz_b2m_fsm_sel_bytesInBurst_5;
+ wire [13:0] _zz_b2m_fsm_fifoCompletion;
+ wire [13:0] _zz_b2m_fsm_fifoCompletion_1;
+ wire [11:0] _zz_b2m_fsm_beatCounter;
+ wire [11:0] _zz_b2m_fsm_beatCounter_1;
+ wire [3:0] _zz_b2m_fsm_beatCounter_2;
+ wire [10:0] _zz_b2m_fsm_sel_ptr;
+ wire [3:0] _zz_b2m_fsm_aggregate_bytesToSkipMask;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_1;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_2;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_3;
+ wire [0:0] _zz_b2m_fsm_aggregate_bytesToSkipMask_4;
+ wire [9:0] _zz_b2m_fsm_aggregate_bytesToSkipMask_5;
+ wire [3:0] _zz_b2m_fsm_aggregate_bytesToSkipMask_6;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_7;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_8;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_9;
+ wire [0:0] _zz_b2m_fsm_aggregate_bytesToSkipMask_10;
+ wire [3:0] _zz_b2m_fsm_aggregate_bytesToSkipMask_11;
+ wire [3:0] _zz_b2m_fsm_cmd_maskLastTriggerComb;
+ wire [3:0] _zz_b2m_fsm_cmd_maskLast;
+ wire _zz_b2m_fsm_cmd_maskLast_1;
+ wire [0:0] _zz_b2m_fsm_cmd_maskLast_2;
+ wire [7:0] _zz_b2m_fsm_cmd_maskLast_3;
+ wire [3:0] _zz_b2m_fsm_cmd_maskLast_4;
+ wire [3:0] _zz_b2m_fsm_cmd_maskLast_5;
+ wire [3:0] _zz_b2m_fsm_cmd_maskFirst;
+ wire _zz_b2m_fsm_cmd_maskFirst_1;
+ wire [0:0] _zz_b2m_fsm_cmd_maskFirst_2;
+ wire [7:0] _zz_b2m_fsm_cmd_maskFirst_3;
+ wire [3:0] _zz_b2m_fsm_cmd_maskFirst_4;
+ wire [3:0] _zz_b2m_fsm_cmd_maskFirst_5;
+ wire [0:0] _zz_when_1;
+ wire [0:0] _zz_when_2;
+ wire [1:0] _zz__zz_ll_arbiter_head_1;
+ wire [1:0] _zz__zz_ll_arbiter_head_1_1;
+ wire [1:0] _zz_ll_arbiter_head_2;
+ wire [1:0] _zz_ll_arbiter_isJustASink;
+ wire [1:0] _zz_ll_arbiter_doDescriptorStall;
+ wire [1:0] _zz_ll_arbiter_onSgStream;
+ wire [1:0] _zz_ll_cmd_ptr;
+ wire [1:0] _zz_ll_cmd_ptrNext;
+ wire [1:0] _zz_ll_cmd_endOfPacket;
+ wire [0:0] _zz_channels_0_channelStart;
+ wire [0:0] _zz_channels_0_ctrl_kick;
+ wire [0:0] _zz_channels_0_channelStart_1;
+ wire [0:0] _zz_channels_0_ll_sgStart;
+ wire [0:0] _zz_channels_0_interrupts_completion_valid;
+ wire [0:0] _zz_channels_0_interrupts_onChannelCompletion_valid;
+ wire [0:0] _zz_channels_0_interrupts_onLinkedListUpdate_valid;
+ wire [0:0] _zz_channels_0_interrupts_s2mPacket_valid;
+ wire [0:0] _zz_channels_1_channelStart;
+ wire [0:0] _zz_channels_1_ctrl_kick;
+ wire [0:0] _zz_channels_1_channelStart_1;
+ wire [0:0] _zz_channels_1_ll_sgStart;
+ wire [0:0] _zz_channels_1_interrupts_completion_valid;
+ wire [0:0] _zz_channels_1_interrupts_onChannelCompletion_valid;
+ wire [0:0] _zz_channels_1_interrupts_onLinkedListUpdate_valid;
+ wire [31:0] _zz_io_ctrl_PRDATA;
+ wire [31:0] _zz_io_ctrl_PRDATA_1;
+ wire [10:0] _zz_channels_0_fifo_push_ptrIncr_value;
+ wire [0:0] _zz_channels_0_fifo_push_ptrIncr_value_1;
+ wire [13:0] _zz_channels_0_fifo_pop_bytesIncr_value_1;
+ wire [3:0] _zz_channels_0_fifo_pop_bytesIncr_value_2;
+ wire [10:0] _zz_channels_0_fifo_pop_ptrIncr_value;
+ wire [1:0] _zz_channels_0_fifo_pop_ptrIncr_value_1;
+ wire [10:0] _zz_channels_1_fifo_push_ptrIncr_value_1;
+ wire [1:0] _zz_channels_1_fifo_push_ptrIncr_value_2;
+ wire [13:0] _zz_channels_1_fifo_pop_bytesIncr_value_1;
+ wire [4:0] _zz_channels_1_fifo_pop_bytesIncr_value_2;
+ wire [4:0] _zz_channels_1_fifo_pop_bytesIncr_value_3;
+ wire [10:0] _zz_channels_1_fifo_pop_ptrIncr_value;
+ wire [0:0] _zz_channels_1_fifo_pop_ptrIncr_value_1;
+ wire ctrl_readErrorFlag;
+ wire ctrl_writeErrorFlag;
+ wire ctrl_askWrite;
+ wire ctrl_askRead;
+ wire ctrl_doWrite;
+ wire ctrl_doRead;
+ reg channels_0_channelStart;
+ reg channels_0_channelStop;
+ reg channels_0_channelCompletion;
+ reg channels_0_channelValid;
+ reg channels_0_descriptorStart;
+ reg channels_0_descriptorCompletion;
+ reg channels_0_descriptorValid;
+ reg [25:0] channels_0_bytes;
+ reg [1:0] channels_0_priority;
+ reg [1:0] channels_0_weight;
+ reg channels_0_readyToStop;
+ reg [26:0] channels_0_bytesProbe_value;
+ reg channels_0_bytesProbe_incr_valid;
+ reg [11:0] channels_0_bytesProbe_incr_payload;
+ reg channels_0_ctrl_kick;
+ reg channels_0_ll_sgStart;
+ reg channels_0_ll_valid;
+ reg channels_0_ll_onSgStream;
+ reg channels_0_ll_head;
+ reg channels_0_ll_justASync;
+ reg channels_0_ll_waitDone;
+ reg channels_0_ll_readDone;
+ reg channels_0_ll_writeDone;
+ reg channels_0_ll_gotDescriptorStall;
+ reg channels_0_ll_controlNoCompletion;
+ reg channels_0_ll_packet;
+ reg channels_0_ll_requireSync;
+ reg [31:0] channels_0_ll_ptr;
+ reg [31:0] channels_0_ll_ptrNext;
+ wire channels_0_ll_requestLl;
+ reg channels_0_ll_descriptorUpdated;
+ wire when_DmaSg_l318;
+ wire when_DmaSg_l320;
+ wire when_DmaSg_l322;
+ wire when_DmaSg_l328;
+ wire [10:0] channels_0_fifo_base;
+ wire [10:0] channels_0_fifo_words;
+ reg [10:0] channels_0_fifo_push_available;
+ wire [10:0] channels_0_fifo_push_availableDecr;
+ reg [10:0] channels_0_fifo_push_ptr;
+ wire [10:0] channels_0_fifo_push_ptrWithBase;
+ wire [10:0] channels_0_fifo_push_ptrIncr_value;
+ reg [10:0] channels_0_fifo_pop_ptr;
+ wire [13:0] channels_0_fifo_pop_bytes;
+ wire [10:0] channels_0_fifo_pop_ptrWithBase;
+ wire [13:0] channels_0_fifo_pop_bytesIncr_value;
+ wire [13:0] channels_0_fifo_pop_bytesDecr_value;
+ wire channels_0_fifo_pop_empty;
+ wire [10:0] channels_0_fifo_pop_ptrIncr_value;
+ reg [13:0] channels_0_fifo_pop_withOverride_backup;
+ wire [13:0] channels_0_fifo_pop_withOverride_backupNext;
+ reg channels_0_fifo_pop_withOverride_load;
+ reg channels_0_fifo_pop_withOverride_unload;
+ reg [13:0] channels_0_fifo_pop_withOverride_exposed;
+ reg channels_0_fifo_pop_withOverride_valid;
+ wire when_DmaSg_l409;
+ wire channels_0_fifo_empty;
+ reg channels_0_push_memory;
+ reg channels_0_push_s2b_completionOnLast;
+ reg channels_0_push_s2b_packetEvent;
+ reg channels_0_push_s2b_packetLock;
+ reg channels_0_push_s2b_waitFirst;
+ wire when_DmaSg_l457;
+ reg channels_0_pop_memory;
+ wire [11:0] channels_0_pop_b2m_bytePerBurst;
+ reg channels_0_pop_b2m_fire;
+ reg channels_0_pop_b2m_waitFinalRsp;
+ reg channels_0_pop_b2m_flush;
+ reg channels_0_pop_b2m_packetSync;
+ reg channels_0_pop_b2m_packet;
+ wire when_DmaSg_l505;
+ reg channels_0_pop_b2m_memRsp;
+ reg [3:0] channels_0_pop_b2m_memPending;
+ reg [31:0] channels_0_pop_b2m_address;
+ reg [26:0] channels_0_pop_b2m_bytesLeft;
+ wire channels_0_pop_b2m_selfFlush;
+ wire channels_0_pop_b2m_request;
+ reg [3:0] channels_0_pop_b2m_bytesToSkip;
+ reg [13:0] channels_0_pop_b2m_decrBytes;
+ reg channels_0_pop_b2m_memPendingInc;
+ wire when_DmaSg_l523;
+ wire when_DmaSg_l532;
+ wire when_DmaSg_l536;
+ wire when_DmaSg_l547;
+ wire when_DmaSg_l563;
+ wire channels_0_readyForChannelCompletion;
+ wire when_DmaSg_l575;
+ reg _zz_when_DmaSg_l593;
+ wire when_DmaSg_l593;
+ wire channels_0_s2b_full;
+ reg [10:0] channels_0_fifo_pop_ptrIncr_value_regNext;
+ wire when_DmaSg_l255;
+ reg channels_0_interrupts_completion_enable;
+ reg channels_0_interrupts_completion_valid;
+ wire when_DmaSg_l255_1;
+ wire when_DmaSg_l255_2;
+ reg channels_0_interrupts_onChannelCompletion_enable;
+ reg channels_0_interrupts_onChannelCompletion_valid;
+ wire when_DmaSg_l255_3;
+ reg channels_0_interrupts_onLinkedListUpdate_enable;
+ reg channels_0_interrupts_onLinkedListUpdate_valid;
+ wire when_DmaSg_l255_4;
+ reg channels_0_interrupts_s2mPacket_enable;
+ reg channels_0_interrupts_s2mPacket_valid;
+ wire when_DmaSg_l255_5;
+ wire when_DmaSg_l625;
+ reg channels_1_channelStart;
+ reg channels_1_channelStop;
+ reg channels_1_channelCompletion;
+ reg channels_1_channelValid;
+ reg channels_1_descriptorStart;
+ reg channels_1_descriptorCompletion;
+ reg channels_1_descriptorValid;
+ reg [25:0] channels_1_bytes;
+ reg [1:0] channels_1_priority;
+ reg [1:0] channels_1_weight;
+ reg channels_1_readyToStop;
+ reg [26:0] channels_1_bytesProbe_value;
+ reg channels_1_bytesProbe_incr_valid;
+ reg [11:0] channels_1_bytesProbe_incr_payload;
+ reg channels_1_ctrl_kick;
+ reg channels_1_ll_sgStart;
+ reg channels_1_ll_valid;
+ reg channels_1_ll_onSgStream;
+ reg channels_1_ll_head;
+ reg channels_1_ll_justASync;
+ reg channels_1_ll_waitDone;
+ reg channels_1_ll_readDone;
+ reg channels_1_ll_writeDone;
+ reg channels_1_ll_gotDescriptorStall;
+ reg channels_1_ll_controlNoCompletion;
+ reg channels_1_ll_packet;
+ reg channels_1_ll_requireSync;
+ reg [31:0] channels_1_ll_ptr;
+ reg [31:0] channels_1_ll_ptrNext;
+ wire channels_1_ll_requestLl;
+ reg channels_1_ll_descriptorUpdated;
+ wire when_DmaSg_l318_1;
+ wire when_DmaSg_l320_1;
+ wire when_DmaSg_l322_1;
+ wire when_DmaSg_l328_1;
+ wire [10:0] channels_1_fifo_base;
+ wire [10:0] channels_1_fifo_words;
+ reg [10:0] channels_1_fifo_push_available;
+ reg [10:0] channels_1_fifo_push_availableDecr;
+ reg [10:0] channels_1_fifo_push_ptr;
+ wire [10:0] channels_1_fifo_push_ptrWithBase;
+ wire [10:0] channels_1_fifo_push_ptrIncr_value;
+ reg [10:0] channels_1_fifo_pop_ptr;
+ wire [13:0] channels_1_fifo_pop_bytes;
+ wire [10:0] channels_1_fifo_pop_ptrWithBase;
+ wire [13:0] channels_1_fifo_pop_bytesIncr_value;
+ wire [13:0] channels_1_fifo_pop_bytesDecr_value;
+ wire channels_1_fifo_pop_empty;
+ wire [10:0] channels_1_fifo_pop_ptrIncr_value;
+ reg [13:0] channels_1_fifo_pop_withoutOverride_exposed;
+ wire channels_1_fifo_empty;
+ reg channels_1_push_memory;
+ reg [31:0] channels_1_push_m2b_address;
+ wire [11:0] channels_1_push_m2b_bytePerBurst;
+ reg channels_1_push_m2b_loadDone;
+ reg [25:0] channels_1_push_m2b_bytesLeft;
+ reg [3:0] channels_1_push_m2b_memPending;
+ reg channels_1_push_m2b_memPendingIncr;
+ reg channels_1_push_m2b_memPendingDecr;
+ reg channels_1_push_m2b_loadRequest;
+ reg channels_1_pop_memory;
+ reg channels_1_pop_b2s_last;
+ reg [3:0] channels_1_pop_b2s_sinkId;
+ reg channels_1_pop_b2s_veryLastTrigger;
+ reg channels_1_pop_b2s_veryLastValid;
+ wire when_DmaSg_l474;
+ reg [10:0] channels_1_pop_b2s_veryLastPtr;
+ reg channels_1_pop_b2s_veryLastEndPacket;
+ wire when_DmaSg_l483;
+ wire when_DmaSg_l486;
+ wire when_DmaSg_l562;
+ reg channels_1_readyForChannelCompletion;
+ wire when_DmaSg_l566;
+ wire when_DmaSg_l575_1;
+ reg _zz_when_DmaSg_l593_1;
+ wire when_DmaSg_l593_1;
+ wire channels_1_s2b_full;
+ reg [10:0] channels_1_fifo_pop_ptrIncr_value_regNext;
+ wire when_DmaSg_l255_6;
+ reg channels_1_interrupts_completion_enable;
+ reg channels_1_interrupts_completion_valid;
+ wire when_DmaSg_l255_7;
+ wire when_DmaSg_l255_8;
+ reg channels_1_interrupts_onChannelCompletion_enable;
+ reg channels_1_interrupts_onChannelCompletion_valid;
+ wire when_DmaSg_l255_9;
+ reg channels_1_interrupts_onLinkedListUpdate_enable;
+ reg channels_1_interrupts_onLinkedListUpdate_valid;
+ wire when_DmaSg_l255_10;
+ wire when_DmaSg_l625_1;
+ wire io_inputs_0_fire;
+ wire when_package_l12;
+ reg io_inputs_0_payload_last_regNextWhen;
+ wire when_package_l12_1;
+ reg io_inputs_0_payload_last_regNextWhen_1;
+ wire when_package_l12_2;
+ reg io_inputs_0_payload_last_regNextWhen_2;
+ wire when_package_l12_3;
+ reg io_inputs_0_payload_last_regNextWhen_3;
+ wire when_package_l12_4;
+ reg io_inputs_0_payload_last_regNextWhen_4;
+ wire when_package_l12_5;
+ reg io_inputs_0_payload_last_regNextWhen_5;
+ wire when_package_l12_6;
+ reg io_inputs_0_payload_last_regNextWhen_6;
+ wire when_package_l12_7;
+ reg io_inputs_0_payload_last_regNextWhen_7;
+ wire when_package_l12_8;
+ reg io_inputs_0_payload_last_regNextWhen_8;
+ wire when_package_l12_9;
+ reg io_inputs_0_payload_last_regNextWhen_9;
+ wire when_package_l12_10;
+ reg io_inputs_0_payload_last_regNextWhen_10;
+ wire when_package_l12_11;
+ reg io_inputs_0_payload_last_regNextWhen_11;
+ wire when_package_l12_12;
+ reg io_inputs_0_payload_last_regNextWhen_12;
+ wire when_package_l12_13;
+ reg io_inputs_0_payload_last_regNextWhen_13;
+ wire when_package_l12_14;
+ reg io_inputs_0_payload_last_regNextWhen_14;
+ wire when_package_l12_15;
+ reg io_inputs_0_payload_last_regNextWhen_15;
+ wire [15:0] s2b_0_cmd_firsts;
+ wire s2b_0_cmd_first;
+ wire [0:0] s2b_0_cmd_channelsOh;
+ wire s2b_0_cmd_noHit;
+ wire [0:0] s2b_0_cmd_channelsFull;
+ reg io_inputs_0_thrown_valid;
+ wire io_inputs_0_thrown_ready;
+ wire [63:0] io_inputs_0_thrown_payload_data;
+ wire [7:0] io_inputs_0_thrown_payload_mask;
+ wire [3:0] io_inputs_0_thrown_payload_sink;
+ wire io_inputs_0_thrown_payload_last;
+ wire _zz_io_inputs_0_thrown_ready;
+ wire s2b_0_cmd_sinkHalted_valid;
+ wire s2b_0_cmd_sinkHalted_ready;
+ wire [63:0] s2b_0_cmd_sinkHalted_payload_data;
+ wire [7:0] s2b_0_cmd_sinkHalted_payload_mask;
+ wire [3:0] s2b_0_cmd_sinkHalted_payload_sink;
+ wire s2b_0_cmd_sinkHalted_payload_last;
+ wire [3:0] _zz_s2b_0_cmd_byteCount;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_1;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_2;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_3;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_4;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_5;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_6;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_7;
+ wire [3:0] s2b_0_cmd_byteCount;
+ wire [0:0] s2b_0_cmd_context_channel;
+ wire [3:0] s2b_0_cmd_context_bytes;
+ wire s2b_0_cmd_context_flush;
+ wire s2b_0_cmd_context_packet;
+ wire memory_core_io_writes_0_cmd_fire;
+ wire when_DmaSg_l665;
+ wire [0:0] s2b_0_rsp_context_channel;
+ wire [3:0] s2b_0_rsp_context_bytes;
+ wire s2b_0_rsp_context_flush;
+ wire s2b_0_rsp_context_packet;
+ wire [6:0] _zz_s2b_0_rsp_context_channel;
+ wire _zz_channels_0_fifo_pop_bytesIncr_value;
+ wire when_DmaSg_l679;
+ wire when_DmaSg_l681;
+ wire when_DmaSg_l682;
+ wire [0:0] b2s_0_cmd_channelsOh;
+ wire [0:0] b2s_0_cmd_context_channel;
+ wire b2s_0_cmd_context_veryLast;
+ wire b2s_0_cmd_context_endPacket;
+ wire [10:0] b2s_0_cmd_veryLastPtr;
+ wire [10:0] b2s_0_cmd_address;
+ wire [0:0] b2s_0_rsp_context_channel;
+ wire b2s_0_rsp_context_veryLast;
+ wire b2s_0_rsp_context_endPacket;
+ wire [2:0] _zz_b2s_0_rsp_context_channel;
+ wire io_outputs_0_fire;
+ wire when_DmaSg_l725;
+ wire when_DmaSg_l726;
+ reg m2b_cmd_s0_valid;
+ wire [1:0] _zz_m2b_cmd_s0_priority_masked;
+ wire [0:0] m2b_cmd_s0_priority_masked;
+ reg [0:0] m2b_cmd_s0_priority_roundRobins_0;
+ reg [0:0] m2b_cmd_s0_priority_roundRobins_1;
+ reg [0:0] m2b_cmd_s0_priority_roundRobins_2;
+ reg [0:0] m2b_cmd_s0_priority_roundRobins_3;
+ reg [1:0] m2b_cmd_s0_priority_counter;
+ wire [0:0] _zz_m2b_cmd_s0_priority_chosenOh;
+ wire [1:0] _zz_m2b_cmd_s0_priority_chosenOh_1;
+ wire [1:0] _zz_m2b_cmd_s0_priority_chosenOh_2;
+ wire [0:0] m2b_cmd_s0_priority_chosenOh;
+ wire m2b_cmd_s0_priority_weightLast;
+ wire [0:0] m2b_cmd_s0_priority_contextNext;
+ wire when_DmaSg_l758;
+ wire when_DmaSg_l760;
+ wire when_DmaSg_l763;
+ wire when_DmaSg_l763_1;
+ wire when_DmaSg_l763_2;
+ wire when_DmaSg_l763_3;
+ wire when_DmaSg_l773;
+ wire [31:0] m2b_cmd_s0_address;
+ wire [25:0] m2b_cmd_s0_bytesLeft;
+ wire [11:0] m2b_cmd_s0_readAddressBurstRange;
+ wire [11:0] m2b_cmd_s0_lengthHead;
+ wire [11:0] m2b_cmd_s0_length;
+ wire m2b_cmd_s0_lastBurst;
+ reg m2b_cmd_s1_valid;
+ reg [31:0] m2b_cmd_s1_address;
+ reg [11:0] m2b_cmd_s1_length;
+ reg m2b_cmd_s1_lastBurst;
+ reg [25:0] m2b_cmd_s1_bytesLeft;
+ wire [3:0] m2b_cmd_s1_context_start;
+ wire [3:0] m2b_cmd_s1_context_stop;
+ wire [11:0] m2b_cmd_s1_context_length;
+ wire m2b_cmd_s1_context_last;
+ wire [31:0] m2b_cmd_s1_addressNext;
+ wire [25:0] m2b_cmd_s1_byteLeftNext;
+ wire [9:0] m2b_cmd_s1_fifoPushDecr;
+ wire when_DmaSg_l828;
+ wire [3:0] m2b_rsp_context_start;
+ wire [3:0] m2b_rsp_context_stop;
+ wire [11:0] m2b_rsp_context_length;
+ wire m2b_rsp_context_last;
+ wire [20:0] _zz_m2b_rsp_context_start;
+ wire m2b_rsp_veryLast;
+ wire io_read_rsp_fire;
+ wire when_DmaSg_l847;
+ wire when_DmaSg_l848;
+ reg m2b_rsp_first;
+ wire m2b_rsp_writeContext_last;
+ wire m2b_rsp_writeContext_lastOfBurst;
+ wire [4:0] m2b_rsp_writeContext_loadByteInNextBeat;
+ wire memory_core_io_writes_1_cmd_fire;
+ wire _zz_channels_1_fifo_push_ptrIncr_value;
+ wire when_DmaSg_l874;
+ wire m2b_writeRsp_context_last;
+ wire m2b_writeRsp_context_lastOfBurst;
+ wire [4:0] m2b_writeRsp_context_loadByteInNextBeat;
+ wire [6:0] _zz_m2b_writeRsp_context_last;
+ wire _zz_channels_1_fifo_pop_bytesIncr_value;
+ wire when_DmaSg_l893;
+ reg b2m_fsm_sel_valid;
+ reg b2m_fsm_sel_ready;
+ reg [11:0] b2m_fsm_sel_bytePerBurst;
+ reg [11:0] b2m_fsm_sel_bytesInBurst;
+ reg [13:0] b2m_fsm_sel_bytesInFifo;
+ reg [31:0] b2m_fsm_sel_address;
+ reg [10:0] b2m_fsm_sel_ptr;
+ reg [10:0] b2m_fsm_sel_ptrMask;
+ reg b2m_fsm_sel_flush;
+ reg b2m_fsm_sel_packet;
+ reg [25:0] b2m_fsm_sel_bytesLeft;
+ reg b2m_fsm_arbiter_logic_valid;
+ wire [1:0] _zz_b2m_fsm_arbiter_logic_priority_masked;
+ wire [0:0] b2m_fsm_arbiter_logic_priority_masked;
+ reg [0:0] b2m_fsm_arbiter_logic_priority_roundRobins_0;
+ reg [0:0] b2m_fsm_arbiter_logic_priority_roundRobins_1;
+ reg [0:0] b2m_fsm_arbiter_logic_priority_roundRobins_2;
+ reg [0:0] b2m_fsm_arbiter_logic_priority_roundRobins_3;
+ reg [1:0] b2m_fsm_arbiter_logic_priority_counter;
+ wire [0:0] _zz_b2m_fsm_arbiter_logic_priority_chosenOh;
+ wire [1:0] _zz_b2m_fsm_arbiter_logic_priority_chosenOh_1;
+ wire [1:0] _zz_b2m_fsm_arbiter_logic_priority_chosenOh_2;
+ wire [0:0] b2m_fsm_arbiter_logic_priority_chosenOh;
+ wire b2m_fsm_arbiter_logic_priority_weightLast;
+ wire [0:0] b2m_fsm_arbiter_logic_priority_contextNext;
+ wire when_DmaSg_l758_1;
+ wire when_DmaSg_l760_1;
+ wire when_DmaSg_l763_4;
+ wire when_DmaSg_l763_5;
+ wire when_DmaSg_l763_6;
+ wire when_DmaSg_l763_7;
+ wire when_DmaSg_l773_1;
+ wire when_DmaSg_l935;
+ wire [12:0] b2m_fsm_bytesInBurstP1;
+ wire [31:0] b2m_fsm_addressNext;
+ wire [26:0] b2m_fsm_bytesLeftNext;
+ wire b2m_fsm_isFinalCmd;
+ reg [7:0] b2m_fsm_beatCounter;
+ reg b2m_fsm_sel_valid_regNext;
+ wire b2m_fsm_s0;
+ reg b2m_fsm_s1;
+ reg b2m_fsm_s2;
+ wire when_DmaSg_l986;
+ wire [13:0] _zz_b2m_fsm_sel_bytesInBurst;
+ wire [25:0] _zz_b2m_fsm_sel_bytesInBurst_1;
+ wire [11:0] _zz_b2m_fsm_sel_bytesInBurst_2;
+ wire b2m_fsm_fifoCompletion;
+ wire when_DmaSg_l996;
+ wire when_DmaSg_l1001;
+ reg b2m_fsm_toggle;
+ wire when_DmaSg_l1013;
+ wire [10:0] b2m_fsm_fetch_context_ptr;
+ wire b2m_fsm_fetch_context_toggle;
+ wire when_DmaSg_l1033;
+ wire [10:0] b2m_fsm_aggregate_context_ptr;
+ wire b2m_fsm_aggregate_context_toggle;
+ wire [11:0] _zz_b2m_fsm_aggregate_context_ptr;
+ wire memory_core_io_reads_1_rsp_s2mPipe_valid;
+ reg memory_core_io_reads_1_rsp_s2mPipe_ready;
+ wire [127:0] memory_core_io_reads_1_rsp_s2mPipe_payload_data;
+ wire [15:0] memory_core_io_reads_1_rsp_s2mPipe_payload_mask;
+ wire [11:0] memory_core_io_reads_1_rsp_s2mPipe_payload_context;
+ reg memory_core_io_reads_1_rsp_rValidN;
+ reg [127:0] memory_core_io_reads_1_rsp_rData_data;
+ reg [15:0] memory_core_io_reads_1_rsp_rData_mask;
+ reg [11:0] memory_core_io_reads_1_rsp_rData_context;
+ wire when_Stream_l445;
+ reg b2m_fsm_aggregate_memoryPort_valid;
+ wire b2m_fsm_aggregate_memoryPort_ready;
+ wire [127:0] b2m_fsm_aggregate_memoryPort_payload_data;
+ wire [15:0] b2m_fsm_aggregate_memoryPort_payload_mask;
+ wire [11:0] b2m_fsm_aggregate_memoryPort_payload_context;
+ reg b2m_fsm_aggregate_first;
+ wire b2m_fsm_aggregate_memoryPort_fire;
+ wire when_DmaSg_l1050;
+ wire [3:0] b2m_fsm_aggregate_bytesToSkip;
+ wire [15:0] b2m_fsm_aggregate_bytesToSkipMask;
+ reg _zz_io_flush;
+ wire [3:0] b2m_fsm_cmd_maskFirstTrigger;
+ wire [3:0] b2m_fsm_cmd_maskLastTriggerComb;
+ reg [3:0] b2m_fsm_cmd_maskLastTriggerReg;
+ reg [15:0] b2m_fsm_cmd_maskLast;
+ wire [15:0] b2m_fsm_cmd_maskFirst;
+ wire b2m_fsm_cmd_enoughAggregation;
+ wire io_write_cmd_fire;
+ reg io_write_cmd_payload_first;
+ wire b2m_fsm_cmd_doPtrIncr;
+ wire [11:0] b2m_fsm_cmd_context_length;
+ wire b2m_fsm_cmd_context_doPacketSync;
+ wire when_DmaSg_l1102;
+ wire [11:0] b2m_rsp_context_length;
+ wire b2m_rsp_context_doPacketSync;
+ wire [12:0] _zz_b2m_rsp_context_length;
+ wire io_write_rsp_fire;
+ wire when_DmaSg_l1116;
+ wire [1:0] _zz_ll_arbiter_head;
+ wire _zz_ll_arbiter_head_1;
+ wire ll_arbiter_head;
+ wire ll_arbiter_isJustASink;
+ wire ll_arbiter_doDescriptorStall;
+ wire ll_arbiter_onSgStream;
+ reg ll_cmd_valid;
+ wire when_DmaSg_l1149;
+ reg ll_cmd_oh_0;
+ reg ll_cmd_oh_1;
+ wire when_DmaSg_l1148;
+ reg [31:0] ll_cmd_ptr;
+ wire when_DmaSg_l1148_1;
+ reg [31:0] ll_cmd_ptrNext;
+ wire when_DmaSg_l1148_2;
+ reg [26:0] ll_cmd_bytesDone;
+ wire when_DmaSg_l1148_3;
+ reg ll_cmd_endOfPacket;
+ wire when_DmaSg_l1154;
+ reg ll_cmd_isJustASink;
+ wire when_DmaSg_l1155;
+ reg ll_cmd_doDescriptorStall;
+ wire when_DmaSg_l1156;
+ reg ll_cmd_onSgStream;
+ reg ll_cmd_readFired;
+ reg ll_cmd_writeFired;
+ wire when_DmaSg_l1160;
+ wire when_DmaSg_l1161;
+ wire when_DmaSg_l1169;
+ wire when_DmaSg_l1169_1;
+ wire when_DmaSg_l1177;
+ wire [0:0] ll_cmd_context_channel;
+ wire [3:0] ll_cmd_writeMaskSplit_0;
+ wire [3:0] ll_cmd_writeMaskSplit_1;
+ wire [3:0] ll_cmd_writeMaskSplit_2;
+ wire [3:0] ll_cmd_writeMaskSplit_3;
+ wire [31:0] ll_cmd_writeDataSplit_0;
+ wire [31:0] ll_cmd_writeDataSplit_1;
+ wire [31:0] ll_cmd_writeDataSplit_2;
+ wire [31:0] ll_cmd_writeDataSplit_3;
+ wire io_sgRead_cmd_fire;
+ wire io_sgWrite_cmd_fire;
+ wire [0:0] ll_readRsp_context_channel;
+ wire [1:0] _zz_ll_readRsp_oh_0;
+ wire ll_readRsp_oh_0;
+ wire ll_readRsp_oh_1;
+ reg [0:0] ll_readRsp_beatCounter;
+ reg ll_readRsp_completed;
+ wire io_sgRead_rsp_fire;
+ wire when_DmaSg_l1248;
+ wire when_DmaSg_l1248_1;
+ wire when_DmaSg_l1248_2;
+ wire when_DmaSg_l1248_3;
+ wire when_DmaSg_l1248_4;
+ wire when_DmaSg_l1248_5;
+ wire when_DmaSg_l1248_6;
+ wire when_DmaSg_l1271;
+ wire [0:0] ll_writeRsp_context_channel;
+ wire [1:0] _zz_ll_writeRsp_oh_0;
+ wire ll_writeRsp_oh_0;
+ wire ll_writeRsp_oh_1;
+ wire io_sgWrite_rsp_fire;
+ reg when_BusSlaveFactory_l377;
+ wire when_BusSlaveFactory_l379;
+ reg when_BusSlaveFactory_l377_1;
+ wire when_BusSlaveFactory_l379_1;
+ reg when_BusSlaveFactory_l377_2;
+ wire when_BusSlaveFactory_l379_2;
+ reg when_BusSlaveFactory_l377_3;
+ wire when_BusSlaveFactory_l379_3;
+ reg when_BusSlaveFactory_l341;
+ wire when_BusSlaveFactory_l347;
+ reg when_BusSlaveFactory_l341_1;
+ wire when_BusSlaveFactory_l347_1;
+ reg when_BusSlaveFactory_l341_2;
+ wire when_BusSlaveFactory_l347_2;
+ reg when_BusSlaveFactory_l341_3;
+ wire when_BusSlaveFactory_l347_3;
+ reg when_BusSlaveFactory_l377_4;
+ wire when_BusSlaveFactory_l379_4;
+ reg when_BusSlaveFactory_l377_5;
+ wire when_BusSlaveFactory_l379_5;
+ reg when_BusSlaveFactory_l377_6;
+ wire when_BusSlaveFactory_l379_6;
+ reg when_BusSlaveFactory_l377_7;
+ wire when_BusSlaveFactory_l379_7;
+ reg when_BusSlaveFactory_l341_4;
+ wire when_BusSlaveFactory_l347_4;
+ reg when_BusSlaveFactory_l341_5;
+ wire when_BusSlaveFactory_l347_5;
+ reg when_BusSlaveFactory_l341_6;
+ wire when_BusSlaveFactory_l347_6;
+ wire when_Apb3SlaveFactory_l81;
+ wire when_Apb3SlaveFactory_l81_1;
+ wire when_Apb3SlaveFactory_l81_2;
+ wire when_Apb3SlaveFactory_l81_3;
+ function [15:0] zz_io_sgWrite_cmd_payload_fragment_mask(input dummy);
+ begin
+ zz_io_sgWrite_cmd_payload_fragment_mask[7 : 4] = 4'b0000;
+ zz_io_sgWrite_cmd_payload_fragment_mask[11 : 8] = 4'b0000;
+ zz_io_sgWrite_cmd_payload_fragment_mask[15 : 12] = 4'b0000;
+ zz_io_sgWrite_cmd_payload_fragment_mask[3 : 0] = 4'b1111;
+ end
+ endfunction
+ wire [15:0] _zz_1;
+
+ assign _zz_channels_0_bytesProbe_value = (channels_0_bytesProbe_value + _zz_channels_0_bytesProbe_value_1);
+ assign _zz_channels_0_bytesProbe_value_1 = {15'd0, channels_0_bytesProbe_incr_payload};
+ assign _zz_channels_0_fifo_pop_withOverride_backupNext = (channels_0_fifo_pop_withOverride_backup + channels_0_fifo_pop_bytesIncr_value);
+ assign _zz_channels_0_fifo_pop_withOverride_exposed = (channels_0_fifo_pop_withOverride_exposed - channels_0_fifo_pop_bytesDecr_value);
+ assign _zz_channels_0_pop_b2m_selfFlush = {13'd0, channels_0_fifo_pop_bytes};
+ assign _zz_channels_0_pop_b2m_request = {2'd0, channels_0_pop_b2m_bytePerBurst};
+ assign _zz_channels_0_pop_b2m_request_2 = (channels_0_fifo_words >>> 1'd1);
+ assign _zz_channels_0_pop_b2m_request_1 = {1'd0, _zz_channels_0_pop_b2m_request_2};
+ assign _zz_channels_0_pop_b2m_memPending = (channels_0_pop_b2m_memPending + _zz_channels_0_pop_b2m_memPending_1);
+ assign _zz_channels_0_pop_b2m_memPending_2 = channels_0_pop_b2m_memPendingInc;
+ assign _zz_channels_0_pop_b2m_memPending_1 = {3'd0, _zz_channels_0_pop_b2m_memPending_2};
+ assign _zz_channels_0_pop_b2m_memPending_4 = channels_0_pop_b2m_memRsp;
+ assign _zz_channels_0_pop_b2m_memPending_3 = {3'd0, _zz_channels_0_pop_b2m_memPending_4};
+ assign _zz_channels_0_fifo_push_available = (channels_0_fifo_push_available + channels_0_fifo_pop_ptrIncr_value_regNext);
+ assign _zz_channels_1_bytesProbe_value = (channels_1_bytesProbe_value + _zz_channels_1_bytesProbe_value_1);
+ assign _zz_channels_1_bytesProbe_value_1 = {15'd0, channels_1_bytesProbe_incr_payload};
+ assign _zz_channels_1_fifo_pop_withoutOverride_exposed = (channels_1_fifo_pop_withoutOverride_exposed + channels_1_fifo_pop_bytesIncr_value);
+ assign _zz_channels_1_push_m2b_memPending = (channels_1_push_m2b_memPending + _zz_channels_1_push_m2b_memPending_1);
+ assign _zz_channels_1_push_m2b_memPending_2 = channels_1_push_m2b_memPendingIncr;
+ assign _zz_channels_1_push_m2b_memPending_1 = {3'd0, _zz_channels_1_push_m2b_memPending_2};
+ assign _zz_channels_1_push_m2b_memPending_4 = channels_1_push_m2b_memPendingDecr;
+ assign _zz_channels_1_push_m2b_memPending_3 = {3'd0, _zz_channels_1_push_m2b_memPending_4};
+ assign _zz_channels_1_push_m2b_loadRequest_1 = (channels_1_push_m2b_bytePerBurst >>> 2'd3);
+ assign _zz_channels_1_push_m2b_loadRequest = {2'd0, _zz_channels_1_push_m2b_loadRequest_1};
+ assign _zz_when_DmaSg_l486 = {14'd0, channels_1_push_m2b_bytePerBurst};
+ assign _zz_channels_1_fifo_push_available = (channels_1_fifo_push_available + channels_1_fifo_pop_ptrIncr_value_regNext);
+ assign _zz_s2b_0_cmd_byteCount_8 = (_zz_s2b_0_cmd_byteCount_9 + _zz_s2b_0_cmd_byteCount_11);
+ assign _zz_s2b_0_cmd_byteCount_15 = {s2b_0_cmd_sinkHalted_payload_mask[7],s2b_0_cmd_sinkHalted_payload_mask[6]};
+ assign _zz_s2b_0_cmd_byteCount_14 = {1'd0, _zz_s2b_0_cmd_byteCount_15};
+ assign _zz__zz_m2b_cmd_s0_priority_chosenOh_2 = (_zz_m2b_cmd_s0_priority_chosenOh_1 - _zz__zz_m2b_cmd_s0_priority_chosenOh_2_1);
+ assign _zz__zz_m2b_cmd_s0_priority_chosenOh_2_2 = _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3;
+ assign _zz__zz_m2b_cmd_s0_priority_chosenOh_2_1 = {1'd0, _zz__zz_m2b_cmd_s0_priority_chosenOh_2_2};
+ assign _zz_m2b_cmd_s0_length = ((_zz_m2b_cmd_s0_length_1 < m2b_cmd_s0_bytesLeft) ? _zz_m2b_cmd_s0_length_2 : m2b_cmd_s0_bytesLeft);
+ assign _zz_m2b_cmd_s0_length_1 = {14'd0, m2b_cmd_s0_lengthHead};
+ assign _zz_m2b_cmd_s0_length_2 = {14'd0, m2b_cmd_s0_lengthHead};
+ assign _zz_m2b_cmd_s0_lastBurst = {14'd0, m2b_cmd_s0_length};
+ assign _zz_m2b_cmd_s1_context_stop = (m2b_cmd_s1_address + _zz_m2b_cmd_s1_context_stop_1);
+ assign _zz_m2b_cmd_s1_context_stop_1 = {20'd0, m2b_cmd_s1_length};
+ assign _zz_m2b_cmd_s1_addressNext = (m2b_cmd_s1_address + _zz_m2b_cmd_s1_addressNext_1);
+ assign _zz_m2b_cmd_s1_addressNext_1 = {20'd0, m2b_cmd_s1_length};
+ assign _zz_m2b_cmd_s1_byteLeftNext = (m2b_cmd_s1_bytesLeft - _zz_m2b_cmd_s1_byteLeftNext_1);
+ assign _zz_m2b_cmd_s1_byteLeftNext_1 = {14'd0, m2b_cmd_s1_length};
+ assign _zz_m2b_cmd_s1_fifoPushDecr = ({1'b0,(_zz_m2b_cmd_s1_fifoPushDecr_1 | 12'h00f)} + _zz_m2b_cmd_s1_fifoPushDecr_4);
+ assign _zz_m2b_cmd_s1_fifoPushDecr_1 = (_zz_m2b_cmd_s1_fifoPushDecr_2 + io_read_cmd_payload_fragment_length);
+ assign _zz_m2b_cmd_s1_fifoPushDecr_3 = m2b_cmd_s1_address[3 : 0];
+ assign _zz_m2b_cmd_s1_fifoPushDecr_2 = {8'd0, _zz_m2b_cmd_s1_fifoPushDecr_3};
+ assign _zz_m2b_cmd_s1_fifoPushDecr_5 = {1'b0,1'b1};
+ assign _zz_m2b_cmd_s1_fifoPushDecr_4 = {11'd0, _zz_m2b_cmd_s1_fifoPushDecr_5};
+ assign _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2 = (_zz_b2m_fsm_arbiter_logic_priority_chosenOh_1 - _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_1);
+ assign _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_2 = _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3;
+ assign _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_1 = {1'd0, _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_2};
+ assign _zz_when = 1'b1;
+ assign _zz_b2m_fsm_bytesInBurstP1_1 = {1'b0,1'b1};
+ assign _zz_b2m_fsm_bytesInBurstP1 = {11'd0, _zz_b2m_fsm_bytesInBurstP1_1};
+ assign _zz_b2m_fsm_addressNext = {19'd0, b2m_fsm_bytesInBurstP1};
+ assign _zz_b2m_fsm_bytesLeftNext_1 = {1'b0,b2m_fsm_bytesInBurstP1};
+ assign _zz_b2m_fsm_bytesLeftNext = {13'd0, _zz_b2m_fsm_bytesLeftNext_1};
+ assign _zz__zz_b2m_fsm_sel_bytesInBurst_1 = {12'd0, _zz_b2m_fsm_sel_bytesInBurst};
+ assign _zz__zz_b2m_fsm_sel_bytesInBurst_1_1 = {12'd0, _zz_b2m_fsm_sel_bytesInBurst};
+ assign _zz__zz_b2m_fsm_sel_bytesInBurst_2 = b2m_fsm_sel_address[11:0];
+ assign _zz_b2m_fsm_sel_bytesInBurst_3 = ((_zz_b2m_fsm_sel_bytesInBurst_1 < _zz_b2m_fsm_sel_bytesInBurst_4) ? _zz_b2m_fsm_sel_bytesInBurst_1 : _zz_b2m_fsm_sel_bytesInBurst_5);
+ assign _zz_b2m_fsm_sel_bytesInBurst_4 = {14'd0, _zz_b2m_fsm_sel_bytesInBurst_2};
+ assign _zz_b2m_fsm_sel_bytesInBurst_5 = {14'd0, _zz_b2m_fsm_sel_bytesInBurst_2};
+ assign _zz_b2m_fsm_fifoCompletion = {2'd0, b2m_fsm_sel_bytesInBurst};
+ assign _zz_b2m_fsm_fifoCompletion_1 = (b2m_fsm_sel_bytesInFifo - 14'h0001);
+ assign _zz_b2m_fsm_beatCounter = (_zz_b2m_fsm_beatCounter_1 + b2m_fsm_sel_bytesInBurst);
+ assign _zz_b2m_fsm_beatCounter_2 = b2m_fsm_sel_address[3 : 0];
+ assign _zz_b2m_fsm_beatCounter_1 = {8'd0, _zz_b2m_fsm_beatCounter_2};
+ assign _zz_b2m_fsm_sel_ptr = (b2m_fsm_sel_ptr + 11'h002);
+ assign _zz_b2m_fsm_cmd_maskLastTriggerComb = b2m_fsm_sel_bytesInBurst[3:0];
+ assign _zz_when_1 = 1'b1;
+ assign _zz_when_2 = 1'b1;
+ assign _zz__zz_ll_arbiter_head_1 = (_zz_ll_arbiter_head & (~ _zz__zz_ll_arbiter_head_1_1));
+ assign _zz__zz_ll_arbiter_head_1_1 = (_zz_ll_arbiter_head - 2'b01);
+ assign _zz_ll_arbiter_head_2 = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_arbiter_isJustASink = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_arbiter_doDescriptorStall = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_arbiter_onSgStream = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_cmd_ptr = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_cmd_ptrNext = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_cmd_endOfPacket = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_channels_0_channelStart = 1'b1;
+ assign _zz_channels_0_ctrl_kick = 1'b1;
+ assign _zz_channels_0_channelStart_1 = 1'b1;
+ assign _zz_channels_0_ll_sgStart = 1'b1;
+ assign _zz_channels_0_interrupts_completion_valid = 1'b0;
+ assign _zz_channels_0_interrupts_onChannelCompletion_valid = 1'b0;
+ assign _zz_channels_0_interrupts_onLinkedListUpdate_valid = 1'b0;
+ assign _zz_channels_0_interrupts_s2mPacket_valid = 1'b0;
+ assign _zz_channels_1_channelStart = 1'b1;
+ assign _zz_channels_1_ctrl_kick = 1'b1;
+ assign _zz_channels_1_channelStart_1 = 1'b1;
+ assign _zz_channels_1_ll_sgStart = 1'b1;
+ assign _zz_channels_1_interrupts_completion_valid = 1'b0;
+ assign _zz_channels_1_interrupts_onChannelCompletion_valid = 1'b0;
+ assign _zz_channels_1_interrupts_onLinkedListUpdate_valid = 1'b0;
+ assign _zz_io_ctrl_PRDATA = channels_0_ll_ptr;
+ assign _zz_io_ctrl_PRDATA_1 = channels_1_ll_ptr;
+ assign _zz_channels_0_fifo_push_ptrIncr_value_1 = ((when_DmaSg_l665 && (|s2b_0_cmd_sinkHalted_payload_mask)) ? 1'b1 : 1'b0);
+ assign _zz_channels_0_fifo_push_ptrIncr_value = {10'd0, _zz_channels_0_fifo_push_ptrIncr_value_1};
+ assign _zz_channels_0_fifo_pop_bytesIncr_value_2 = (_zz_channels_0_fifo_pop_bytesIncr_value ? s2b_0_rsp_context_bytes : 4'b0000);
+ assign _zz_channels_0_fifo_pop_bytesIncr_value_1 = {10'd0, _zz_channels_0_fifo_pop_bytesIncr_value_2};
+ assign _zz_channels_0_fifo_pop_ptrIncr_value_1 = ((b2m_fsm_cmd_doPtrIncr && 1'b1) ? 2'b10 : 2'b00);
+ assign _zz_channels_0_fifo_pop_ptrIncr_value = {9'd0, _zz_channels_0_fifo_pop_ptrIncr_value_1};
+ assign _zz_channels_1_fifo_push_ptrIncr_value_2 = (_zz_channels_1_fifo_push_ptrIncr_value ? 2'b10 : 2'b00);
+ assign _zz_channels_1_fifo_push_ptrIncr_value_1 = {9'd0, _zz_channels_1_fifo_push_ptrIncr_value_2};
+ assign _zz_channels_1_fifo_pop_bytesIncr_value_2 = (_zz_channels_1_fifo_pop_bytesIncr_value ? _zz_channels_1_fifo_pop_bytesIncr_value_3 : 5'h0);
+ assign _zz_channels_1_fifo_pop_bytesIncr_value_1 = {9'd0, _zz_channels_1_fifo_pop_bytesIncr_value_2};
+ assign _zz_channels_1_fifo_pop_bytesIncr_value_3 = (m2b_writeRsp_context_loadByteInNextBeat + 5'h01);
+ assign _zz_channels_1_fifo_pop_ptrIncr_value_1 = ((b2s_0_cmd_channelsOh[0] && memory_core_io_reads_0_cmd_ready) ? 1'b1 : 1'b0);
+ assign _zz_channels_1_fifo_pop_ptrIncr_value = {10'd0, _zz_channels_1_fifo_pop_ptrIncr_value_1};
+ assign _zz_s2b_0_cmd_byteCount_10 = {s2b_0_cmd_sinkHalted_payload_mask[2],{s2b_0_cmd_sinkHalted_payload_mask[1],s2b_0_cmd_sinkHalted_payload_mask[0]}};
+ assign _zz_s2b_0_cmd_byteCount_12 = {s2b_0_cmd_sinkHalted_payload_mask[5],{s2b_0_cmd_sinkHalted_payload_mask[4],s2b_0_cmd_sinkHalted_payload_mask[3]}};
+ assign _zz_s2b_0_cmd_firsts = io_inputs_0_payload_last_regNextWhen_5;
+ assign _zz_s2b_0_cmd_firsts_1 = {io_inputs_0_payload_last_regNextWhen_4,{io_inputs_0_payload_last_regNextWhen_3,{io_inputs_0_payload_last_regNextWhen_2,{io_inputs_0_payload_last_regNextWhen_1,io_inputs_0_payload_last_regNextWhen}}}};
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask = 4'b1101;
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_1 = (! b2m_fsm_aggregate_first);
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_2 = (b2m_fsm_aggregate_bytesToSkip <= 4'b1100);
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_3 = ((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1011));
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_4 = ((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1010));
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_5 = {((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1001)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1000)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= _zz_b2m_fsm_aggregate_bytesToSkipMask_6)),{(_zz_b2m_fsm_aggregate_bytesToSkipMask_7 || _zz_b2m_fsm_aggregate_bytesToSkipMask_8),{_zz_b2m_fsm_aggregate_bytesToSkipMask_9,{_zz_b2m_fsm_aggregate_bytesToSkipMask_10,_zz_b2m_fsm_aggregate_bytesToSkipMask_11}}}}}};
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_6 = 4'b0111;
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_7 = (! b2m_fsm_aggregate_first);
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_8 = (b2m_fsm_aggregate_bytesToSkip <= 4'b0110);
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_9 = ((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0101));
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_10 = ((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0100));
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_11 = {((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0011)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0010)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0001)),((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0000))}}};
+ assign _zz_b2m_fsm_cmd_maskLast = 4'b1010;
+ assign _zz_b2m_fsm_cmd_maskLast_1 = (4'b1001 <= b2m_fsm_cmd_maskLastTriggerComb);
+ assign _zz_b2m_fsm_cmd_maskLast_2 = (4'b1000 <= b2m_fsm_cmd_maskLastTriggerComb);
+ assign _zz_b2m_fsm_cmd_maskLast_3 = {(4'b0111 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b0110 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b0101 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b0100 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b0011 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b0010 <= b2m_fsm_cmd_maskLastTriggerComb),{(_zz_b2m_fsm_cmd_maskLast_4 <= b2m_fsm_cmd_maskLastTriggerComb),(_zz_b2m_fsm_cmd_maskLast_5 <= b2m_fsm_cmd_maskLastTriggerComb)}}}}}}};
+ assign _zz_b2m_fsm_cmd_maskLast_4 = 4'b0001;
+ assign _zz_b2m_fsm_cmd_maskLast_5 = 4'b0000;
+ assign _zz_b2m_fsm_cmd_maskFirst = 4'b1010;
+ assign _zz_b2m_fsm_cmd_maskFirst_1 = (b2m_fsm_cmd_maskFirstTrigger <= 4'b1001);
+ assign _zz_b2m_fsm_cmd_maskFirst_2 = (b2m_fsm_cmd_maskFirstTrigger <= 4'b1000);
+ assign _zz_b2m_fsm_cmd_maskFirst_3 = {(b2m_fsm_cmd_maskFirstTrigger <= 4'b0111),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b0110),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b0101),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b0100),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b0011),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b0010),{(b2m_fsm_cmd_maskFirstTrigger <= _zz_b2m_fsm_cmd_maskFirst_4),(b2m_fsm_cmd_maskFirstTrigger <= _zz_b2m_fsm_cmd_maskFirst_5)}}}}}}};
+ assign _zz_b2m_fsm_cmd_maskFirst_4 = 4'b0001;
+ assign _zz_b2m_fsm_cmd_maskFirst_5 = 4'b0000;
+ EfxDMA_DmaMemoryCore_a048ca8f51874147a1cd65d43e6523ef memory_core (
+ .io_writes_0_cmd_valid (s2b_0_cmd_sinkHalted_valid ), //i
+ .io_writes_0_cmd_ready (memory_core_io_writes_0_cmd_ready ), //o
+ .io_writes_0_cmd_payload_address (memory_core_io_writes_0_cmd_payload_address[9:0]), //i
+ .io_writes_0_cmd_payload_data (s2b_0_cmd_sinkHalted_payload_data[63:0] ), //i
+ .io_writes_0_cmd_payload_mask (s2b_0_cmd_sinkHalted_payload_mask[7:0] ), //i
+ .io_writes_0_cmd_payload_priority (channels_0_priority[1:0] ), //i
+ .io_writes_0_cmd_payload_context (memory_core_io_writes_0_cmd_payload_context[6:0]), //i
+ .io_writes_0_rsp_valid (memory_core_io_writes_0_rsp_valid ), //o
+ .io_writes_0_rsp_payload_context (memory_core_io_writes_0_rsp_payload_context[6:0]), //o
+ .io_writes_1_cmd_valid (io_read_rsp_valid ), //i
+ .io_writes_1_cmd_ready (memory_core_io_writes_1_cmd_ready ), //o
+ .io_writes_1_cmd_payload_address (memory_core_io_writes_1_cmd_payload_address[9:0]), //i
+ .io_writes_1_cmd_payload_data (io_read_rsp_payload_fragment_data[127:0] ), //i
+ .io_writes_1_cmd_payload_mask (memory_core_io_writes_1_cmd_payload_mask[15:0] ), //i
+ .io_writes_1_cmd_payload_context (memory_core_io_writes_1_cmd_payload_context[6:0]), //i
+ .io_writes_1_rsp_valid (memory_core_io_writes_1_rsp_valid ), //o
+ .io_writes_1_rsp_payload_context (memory_core_io_writes_1_rsp_payload_context[6:0]), //o
+ .io_reads_0_cmd_valid (memory_core_io_reads_0_cmd_valid ), //i
+ .io_reads_0_cmd_ready (memory_core_io_reads_0_cmd_ready ), //o
+ .io_reads_0_cmd_payload_address (memory_core_io_reads_0_cmd_payload_address[9:0] ), //i
+ .io_reads_0_cmd_payload_priority (channels_1_priority[1:0] ), //i
+ .io_reads_0_cmd_payload_context (memory_core_io_reads_0_cmd_payload_context[2:0] ), //i
+ .io_reads_0_rsp_valid (memory_core_io_reads_0_rsp_valid ), //o
+ .io_reads_0_rsp_ready (io_outputs_0_ready ), //i
+ .io_reads_0_rsp_payload_data (memory_core_io_reads_0_rsp_payload_data[63:0] ), //o
+ .io_reads_0_rsp_payload_mask (memory_core_io_reads_0_rsp_payload_mask[7:0] ), //o
+ .io_reads_0_rsp_payload_context (memory_core_io_reads_0_rsp_payload_context[2:0] ), //o
+ .io_reads_1_cmd_valid (b2m_fsm_sel_valid ), //i
+ .io_reads_1_cmd_ready (memory_core_io_reads_1_cmd_ready ), //o
+ .io_reads_1_cmd_payload_address (memory_core_io_reads_1_cmd_payload_address[9:0] ), //i
+ .io_reads_1_cmd_payload_context (memory_core_io_reads_1_cmd_payload_context[11:0]), //i
+ .io_reads_1_rsp_valid (memory_core_io_reads_1_rsp_valid ), //o
+ .io_reads_1_rsp_ready (memory_core_io_reads_1_rsp_rValidN ), //i
+ .io_reads_1_rsp_payload_data (memory_core_io_reads_1_rsp_payload_data[127:0] ), //o
+ .io_reads_1_rsp_payload_mask (memory_core_io_reads_1_rsp_payload_mask[15:0] ), //o
+ .io_reads_1_rsp_payload_context (memory_core_io_reads_1_rsp_payload_context[11:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_Aggregator_a048ca8f51874147a1cd65d43e6523ef b2m_fsm_aggregate_engine (
+ .io_input_valid (b2m_fsm_aggregate_memoryPort_valid ), //i
+ .io_input_ready (b2m_fsm_aggregate_engine_io_input_ready ), //o
+ .io_input_payload_data (b2m_fsm_aggregate_memoryPort_payload_data[127:0] ), //i
+ .io_input_payload_mask (b2m_fsm_aggregate_engine_io_input_payload_mask[15:0]), //i
+ .io_output_data (b2m_fsm_aggregate_engine_io_output_data[127:0] ), //o
+ .io_output_mask (b2m_fsm_aggregate_engine_io_output_mask[15:0] ), //o
+ .io_output_enough (b2m_fsm_cmd_enoughAggregation ), //i
+ .io_output_consume (io_write_cmd_fire ), //i
+ .io_output_consumed (b2m_fsm_aggregate_engine_io_output_consumed ), //o
+ .io_output_lastByteUsed (b2m_fsm_cmd_maskLastTriggerReg[3:0] ), //i
+ .io_output_usedUntil (b2m_fsm_aggregate_engine_io_output_usedUntil[3:0] ), //o
+ .io_flush (b2m_fsm_aggregate_engine_io_flush ), //i
+ .io_offset (b2m_fsm_aggregate_engine_io_offset[3:0] ), //i
+ .io_burstLength (b2m_fsm_sel_bytesInBurst[11:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ case(_zz_s2b_0_cmd_byteCount_10)
+ 3'b000 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount;
+ 3'b001 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_1;
+ 3'b010 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_2;
+ 3'b011 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_3;
+ 3'b100 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_4;
+ 3'b101 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_5;
+ 3'b110 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_6;
+ default : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s2b_0_cmd_byteCount_12)
+ 3'b000 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount;
+ 3'b001 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_1;
+ 3'b010 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_2;
+ 3'b011 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_3;
+ 3'b100 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_4;
+ 3'b101 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_5;
+ 3'b110 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_6;
+ default : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s2b_0_cmd_byteCount_14)
+ 3'b000 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount;
+ 3'b001 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_1;
+ 3'b010 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_2;
+ 3'b011 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_3;
+ 3'b100 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_4;
+ 3'b101 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_5;
+ 3'b110 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_6;
+ default : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_m2b_cmd_s0_priority_masked)
+ 2'b00 : _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3 = m2b_cmd_s0_priority_roundRobins_0;
+ 2'b01 : _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3 = m2b_cmd_s0_priority_roundRobins_1;
+ 2'b10 : _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3 = m2b_cmd_s0_priority_roundRobins_2;
+ default : _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3 = m2b_cmd_s0_priority_roundRobins_3;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_b2m_fsm_arbiter_logic_priority_masked)
+ 2'b00 : _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3 = b2m_fsm_arbiter_logic_priority_roundRobins_0;
+ 2'b01 : _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3 = b2m_fsm_arbiter_logic_priority_roundRobins_1;
+ 2'b10 : _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3 = b2m_fsm_arbiter_logic_priority_roundRobins_2;
+ default : _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3 = b2m_fsm_arbiter_logic_priority_roundRobins_3;
+ endcase
+ end
+
+ assign ctrl_readErrorFlag = 1'b0;
+ assign ctrl_writeErrorFlag = 1'b0;
+ assign io_ctrl_PREADY = 1'b1;
+ always @(*) begin
+ io_ctrl_PRDATA = 32'h0;
+ case(io_ctrl_PADDR)
+ 14'h002c : begin
+ io_ctrl_PRDATA[0 : 0] = channels_0_channelValid;
+ end
+ 14'h0054 : begin
+ io_ctrl_PRDATA[0 : 0] = channels_0_interrupts_completion_valid;
+ io_ctrl_PRDATA[2 : 2] = channels_0_interrupts_onChannelCompletion_valid;
+ io_ctrl_PRDATA[3 : 3] = channels_0_interrupts_onLinkedListUpdate_valid;
+ io_ctrl_PRDATA[4 : 4] = channels_0_interrupts_s2mPacket_valid;
+ end
+ 14'h0060 : begin
+ io_ctrl_PRDATA[26 : 0] = channels_0_bytesProbe_value;
+ end
+ 14'h00ac : begin
+ io_ctrl_PRDATA[0 : 0] = channels_1_channelValid;
+ end
+ 14'h00d4 : begin
+ io_ctrl_PRDATA[0 : 0] = channels_1_interrupts_completion_valid;
+ io_ctrl_PRDATA[2 : 2] = channels_1_interrupts_onChannelCompletion_valid;
+ io_ctrl_PRDATA[3 : 3] = channels_1_interrupts_onLinkedListUpdate_valid;
+ end
+ 14'h00e0 : begin
+ io_ctrl_PRDATA[26 : 0] = channels_1_bytesProbe_value;
+ end
+ default : begin
+ end
+ endcase
+ if(when_Apb3SlaveFactory_l81_1) begin
+ io_ctrl_PRDATA[31 : 0] = _zz_io_ctrl_PRDATA[31 : 0];
+ end
+ if(when_Apb3SlaveFactory_l81_3) begin
+ io_ctrl_PRDATA[31 : 0] = _zz_io_ctrl_PRDATA_1[31 : 0];
+ end
+ end
+
+ assign ctrl_askWrite = ((io_ctrl_PSEL[0] && io_ctrl_PENABLE) && io_ctrl_PWRITE);
+ assign ctrl_askRead = ((io_ctrl_PSEL[0] && io_ctrl_PENABLE) && (! io_ctrl_PWRITE));
+ assign ctrl_doWrite = (((io_ctrl_PSEL[0] && io_ctrl_PENABLE) && io_ctrl_PREADY) && io_ctrl_PWRITE);
+ assign ctrl_doRead = (((io_ctrl_PSEL[0] && io_ctrl_PENABLE) && io_ctrl_PREADY) && (! io_ctrl_PWRITE));
+ assign io_ctrl_PSLVERROR = ((ctrl_doWrite && ctrl_writeErrorFlag) || (ctrl_doRead && ctrl_readErrorFlag));
+ always @(*) begin
+ channels_0_channelStart = 1'b0;
+ if(when_BusSlaveFactory_l377) begin
+ if(when_BusSlaveFactory_l379) begin
+ channels_0_channelStart = _zz_channels_0_channelStart[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_2) begin
+ if(when_BusSlaveFactory_l379_2) begin
+ channels_0_channelStart = _zz_channels_0_channelStart_1[0];
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_channelCompletion = 1'b0;
+ if(channels_0_channelValid) begin
+ if(channels_0_channelStop) begin
+ if(channels_0_readyToStop) begin
+ channels_0_channelCompletion = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_descriptorStart = 1'b0;
+ if(channels_0_ctrl_kick) begin
+ channels_0_descriptorStart = 1'b1;
+ end
+ if(when_DmaSg_l318) begin
+ if(when_DmaSg_l320) begin
+ if(when_DmaSg_l322) begin
+ channels_0_descriptorStart = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_descriptorCompletion = 1'b0;
+ if(channels_0_pop_b2m_packetSync) begin
+ if(when_DmaSg_l532) begin
+ if(channels_0_push_s2b_completionOnLast) begin
+ channels_0_descriptorCompletion = 1'b1;
+ end
+ end
+ end
+ if(when_DmaSg_l547) begin
+ channels_0_descriptorCompletion = 1'b1;
+ end
+ if(channels_0_channelValid) begin
+ if(channels_0_channelStop) begin
+ if(channels_0_readyToStop) begin
+ channels_0_descriptorCompletion = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_readyToStop = 1'b1;
+ if(channels_0_ll_waitDone) begin
+ channels_0_readyToStop = 1'b0;
+ end
+ if(when_DmaSg_l563) begin
+ channels_0_readyToStop = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ channels_0_bytesProbe_incr_valid = 1'b0;
+ if(io_write_rsp_fire) begin
+ if(when_DmaSg_l1116) begin
+ channels_0_bytesProbe_incr_valid = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_bytesProbe_incr_payload = 12'bxxxxxxxxxxxx;
+ if(io_write_rsp_fire) begin
+ if(when_DmaSg_l1116) begin
+ channels_0_bytesProbe_incr_payload = b2m_rsp_context_length;
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_ll_sgStart = 1'b0;
+ if(when_BusSlaveFactory_l377_3) begin
+ if(when_BusSlaveFactory_l379_3) begin
+ channels_0_ll_sgStart = _zz_channels_0_ll_sgStart[0];
+ end
+ end
+ end
+
+ assign channels_0_ll_requestLl = ((((channels_0_channelValid && channels_0_ll_valid) && (! channels_0_channelStop)) && (! channels_0_ll_waitDone)) && ((! channels_0_descriptorValid) || channels_0_ll_requireSync));
+ always @(*) begin
+ channels_0_ll_descriptorUpdated = 1'b0;
+ if(when_DmaSg_l318) begin
+ if(when_DmaSg_l328) begin
+ channels_0_ll_descriptorUpdated = 1'b1;
+ end
+ end
+ end
+
+ assign when_DmaSg_l318 = (((channels_0_ll_valid && channels_0_ll_waitDone) && channels_0_ll_writeDone) && channels_0_ll_readDone);
+ assign when_DmaSg_l320 = (! channels_0_ll_justASync);
+ assign when_DmaSg_l322 = (! channels_0_ll_gotDescriptorStall);
+ assign when_DmaSg_l328 = (! channels_0_ll_head);
+ assign channels_0_fifo_base = 11'h0;
+ assign channels_0_fifo_words = 11'h1ff;
+ assign channels_0_fifo_push_availableDecr = 11'h0;
+ assign channels_0_fifo_push_ptrWithBase = ((channels_0_fifo_base & (~ channels_0_fifo_words)) | (channels_0_fifo_push_ptr & channels_0_fifo_words));
+ assign channels_0_fifo_pop_ptrWithBase = ((channels_0_fifo_base & (~ channels_0_fifo_words)) | (channels_0_fifo_pop_ptr & channels_0_fifo_words));
+ assign channels_0_fifo_pop_empty = (channels_0_fifo_pop_ptr == channels_0_fifo_push_ptr);
+ assign channels_0_fifo_pop_withOverride_backupNext = (_zz_channels_0_fifo_pop_withOverride_backupNext - channels_0_fifo_pop_bytesDecr_value);
+ always @(*) begin
+ channels_0_fifo_pop_withOverride_load = 1'b0;
+ if(when_DmaSg_l457) begin
+ channels_0_fifo_pop_withOverride_load = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ channels_0_fifo_pop_withOverride_unload = 1'b0;
+ if(channels_0_pop_b2m_packetSync) begin
+ channels_0_fifo_pop_withOverride_unload = 1'b1;
+ end
+ end
+
+ assign when_DmaSg_l409 = (channels_0_channelStart || channels_0_fifo_pop_withOverride_unload);
+ assign channels_0_fifo_pop_bytes = channels_0_fifo_pop_withOverride_exposed;
+ assign channels_0_fifo_empty = (channels_0_fifo_push_ptr == channels_0_fifo_pop_ptr);
+ always @(*) begin
+ channels_0_push_s2b_packetEvent = 1'b0;
+ if(when_DmaSg_l679) begin
+ channels_0_push_s2b_packetEvent = 1'b1;
+ end
+ end
+
+ assign when_DmaSg_l457 = (channels_0_push_s2b_packetEvent && channels_0_push_s2b_completionOnLast);
+ assign channels_0_pop_b2m_bytePerBurst = 12'h3ff;
+ always @(*) begin
+ channels_0_pop_b2m_fire = 1'b0;
+ if(when_DmaSg_l935) begin
+ if(_zz_when[0]) begin
+ channels_0_pop_b2m_fire = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_pop_b2m_packetSync = 1'b0;
+ if(when_DmaSg_l523) begin
+ if(channels_0_pop_b2m_packet) begin
+ channels_0_pop_b2m_packetSync = 1'b1;
+ end
+ end
+ if(io_write_rsp_fire) begin
+ if(when_DmaSg_l1116) begin
+ if(b2m_rsp_context_doPacketSync) begin
+ channels_0_pop_b2m_packetSync = 1'b1;
+ end
+ end
+ end
+ end
+
+ assign when_DmaSg_l505 = (channels_0_channelStart || channels_0_pop_b2m_fire);
+ always @(*) begin
+ channels_0_pop_b2m_memRsp = 1'b0;
+ if(io_write_rsp_fire) begin
+ if(_zz_when_2[0]) begin
+ channels_0_pop_b2m_memRsp = 1'b1;
+ end
+ end
+ end
+
+ assign channels_0_pop_b2m_selfFlush = (channels_0_pop_b2m_bytesLeft < _zz_channels_0_pop_b2m_selfFlush);
+ assign channels_0_pop_b2m_request = ((((((channels_0_descriptorValid && (! channels_0_channelStop)) && (! channels_0_pop_b2m_waitFinalRsp)) && channels_0_pop_memory) && ((_zz_channels_0_pop_b2m_request < channels_0_fifo_pop_bytes) || (((channels_0_fifo_push_available < _zz_channels_0_pop_b2m_request_1) || channels_0_pop_b2m_flush) || channels_0_pop_b2m_selfFlush))) && (channels_0_fifo_pop_bytes != 14'h0)) && (channels_0_pop_b2m_memPending != 4'b1111));
+ always @(*) begin
+ channels_0_pop_b2m_memPendingInc = 1'b0;
+ if(when_DmaSg_l758_1) begin
+ if(when_DmaSg_l773_1) begin
+ channels_0_pop_b2m_memPendingInc = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_pop_b2m_decrBytes = 14'h0;
+ if(b2m_fsm_s1) begin
+ if(when_DmaSg_l996) begin
+ channels_0_pop_b2m_decrBytes = {1'd0, b2m_fsm_bytesInBurstP1};
+ end
+ end
+ end
+
+ assign when_DmaSg_l523 = ((channels_0_pop_b2m_memPending == 4'b0000) && (channels_0_fifo_pop_bytes == 14'h0));
+ assign when_DmaSg_l532 = (channels_0_descriptorValid && (! channels_0_push_memory));
+ assign when_DmaSg_l536 = (! channels_0_pop_b2m_waitFinalRsp);
+ assign when_DmaSg_l547 = ((channels_0_descriptorValid && (channels_0_pop_b2m_memPending == 4'b0000)) && channels_0_pop_b2m_waitFinalRsp);
+ assign when_DmaSg_l563 = (channels_0_pop_b2m_memPending != 4'b0000);
+ assign channels_0_readyForChannelCompletion = 1'b1;
+ assign when_DmaSg_l575 = (! channels_0_descriptorValid);
+ always @(*) begin
+ _zz_when_DmaSg_l593 = 1'b1;
+ if(channels_0_ctrl_kick) begin
+ _zz_when_DmaSg_l593 = 1'b0;
+ end
+ if(channels_0_ll_valid) begin
+ _zz_when_DmaSg_l593 = 1'b0;
+ end
+ end
+
+ assign when_DmaSg_l593 = (_zz_when_DmaSg_l593 && channels_0_readyForChannelCompletion);
+ assign channels_0_s2b_full = (channels_0_fifo_push_available < 11'h002);
+ assign when_DmaSg_l255 = (channels_0_descriptorValid && channels_0_descriptorCompletion);
+ assign when_DmaSg_l255_1 = (! channels_0_interrupts_completion_enable);
+ assign when_DmaSg_l255_2 = (channels_0_channelValid && channels_0_channelCompletion);
+ assign when_DmaSg_l255_3 = (! channels_0_interrupts_onChannelCompletion_enable);
+ assign when_DmaSg_l255_4 = (! channels_0_interrupts_onLinkedListUpdate_enable);
+ assign when_DmaSg_l255_5 = (! channels_0_interrupts_s2mPacket_enable);
+ assign when_DmaSg_l625 = (channels_0_channelStart || channels_0_descriptorStart);
+ always @(*) begin
+ channels_1_channelStart = 1'b0;
+ if(when_BusSlaveFactory_l377_4) begin
+ if(when_BusSlaveFactory_l379_4) begin
+ channels_1_channelStart = _zz_channels_1_channelStart[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_6) begin
+ if(when_BusSlaveFactory_l379_6) begin
+ channels_1_channelStart = _zz_channels_1_channelStart_1[0];
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_1_channelCompletion = 1'b0;
+ if(channels_1_channelValid) begin
+ if(channels_1_channelStop) begin
+ if(channels_1_readyToStop) begin
+ channels_1_channelCompletion = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_1_descriptorStart = 1'b0;
+ if(channels_1_ctrl_kick) begin
+ channels_1_descriptorStart = 1'b1;
+ end
+ if(when_DmaSg_l318_1) begin
+ if(when_DmaSg_l320_1) begin
+ if(when_DmaSg_l322_1) begin
+ channels_1_descriptorStart = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_1_descriptorCompletion = 1'b0;
+ if(when_DmaSg_l483) begin
+ channels_1_descriptorCompletion = 1'b1;
+ end
+ if(channels_1_channelValid) begin
+ if(channels_1_channelStop) begin
+ if(channels_1_readyToStop) begin
+ channels_1_descriptorCompletion = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_1_readyToStop = 1'b1;
+ if(channels_1_ll_waitDone) begin
+ channels_1_readyToStop = 1'b0;
+ end
+ if(when_DmaSg_l562) begin
+ channels_1_readyToStop = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ channels_1_bytesProbe_incr_valid = 1'b0;
+ if(when_DmaSg_l874) begin
+ channels_1_bytesProbe_incr_valid = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ channels_1_bytesProbe_incr_payload = 12'bxxxxxxxxxxxx;
+ if(when_DmaSg_l874) begin
+ channels_1_bytesProbe_incr_payload = m2b_rsp_context_length;
+ end
+ end
+
+ always @(*) begin
+ channels_1_ll_sgStart = 1'b0;
+ if(when_BusSlaveFactory_l377_7) begin
+ if(when_BusSlaveFactory_l379_7) begin
+ channels_1_ll_sgStart = _zz_channels_1_ll_sgStart[0];
+ end
+ end
+ end
+
+ assign channels_1_ll_requestLl = ((((channels_1_channelValid && channels_1_ll_valid) && (! channels_1_channelStop)) && (! channels_1_ll_waitDone)) && ((! channels_1_descriptorValid) || channels_1_ll_requireSync));
+ always @(*) begin
+ channels_1_ll_descriptorUpdated = 1'b0;
+ if(when_DmaSg_l318_1) begin
+ if(when_DmaSg_l328_1) begin
+ channels_1_ll_descriptorUpdated = 1'b1;
+ end
+ end
+ end
+
+ assign when_DmaSg_l318_1 = (((channels_1_ll_valid && channels_1_ll_waitDone) && channels_1_ll_writeDone) && channels_1_ll_readDone);
+ assign when_DmaSg_l320_1 = (! channels_1_ll_justASync);
+ assign when_DmaSg_l322_1 = (! channels_1_ll_gotDescriptorStall);
+ assign when_DmaSg_l328_1 = (! channels_1_ll_head);
+ assign channels_1_fifo_base = 11'h200;
+ assign channels_1_fifo_words = 11'h1ff;
+ always @(*) begin
+ channels_1_fifo_push_availableDecr = 11'h0;
+ if(m2b_cmd_s1_valid) begin
+ if(io_read_cmd_ready) begin
+ if(when_DmaSg_l828) begin
+ channels_1_fifo_push_availableDecr = {1'd0, m2b_cmd_s1_fifoPushDecr};
+ end
+ end
+ end
+ end
+
+ assign channels_1_fifo_push_ptrWithBase = ((channels_1_fifo_base & (~ channels_1_fifo_words)) | (channels_1_fifo_push_ptr & channels_1_fifo_words));
+ assign channels_1_fifo_pop_ptrWithBase = ((channels_1_fifo_base & (~ channels_1_fifo_words)) | (channels_1_fifo_pop_ptr & channels_1_fifo_words));
+ assign channels_1_fifo_pop_empty = (channels_1_fifo_pop_ptr == channels_1_fifo_push_ptr);
+ assign channels_1_fifo_pop_bytes = channels_1_fifo_pop_withoutOverride_exposed;
+ assign channels_1_fifo_empty = (channels_1_fifo_push_ptr == channels_1_fifo_pop_ptr);
+ assign channels_1_push_m2b_bytePerBurst = 12'h3ff;
+ always @(*) begin
+ channels_1_push_m2b_memPendingIncr = 1'b0;
+ if(when_DmaSg_l758) begin
+ if(when_DmaSg_l773) begin
+ channels_1_push_m2b_memPendingIncr = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_1_push_m2b_memPendingDecr = 1'b0;
+ if(when_DmaSg_l893) begin
+ channels_1_push_m2b_memPendingDecr = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ channels_1_push_m2b_loadRequest = (((((channels_1_descriptorValid && (! channels_1_channelStop)) && (! channels_1_push_m2b_loadDone)) && channels_1_push_memory) && (_zz_channels_1_push_m2b_loadRequest < channels_1_fifo_push_available)) && (channels_1_push_m2b_memPending != 4'b1111));
+ if(when_DmaSg_l486) begin
+ channels_1_push_m2b_loadRequest = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ channels_1_pop_b2s_veryLastTrigger = 1'b0;
+ if(when_DmaSg_l847) begin
+ if(when_DmaSg_l848) begin
+ channels_1_pop_b2s_veryLastTrigger = 1'b1;
+ end
+ end
+ end
+
+ assign when_DmaSg_l474 = (channels_1_pop_b2s_veryLastTrigger && channels_1_pop_b2s_last);
+ assign when_DmaSg_l483 = ((((channels_1_descriptorValid && (! channels_1_pop_memory)) && channels_1_push_memory) && channels_1_push_m2b_loadDone) && (channels_1_push_m2b_memPending == 4'b0000));
+ assign when_DmaSg_l486 = (((! channels_1_pop_memory) && channels_1_pop_b2s_veryLastValid) && (channels_1_push_m2b_bytesLeft <= _zz_when_DmaSg_l486));
+ assign when_DmaSg_l562 = (channels_1_push_m2b_memPending != 4'b0000);
+ always @(*) begin
+ channels_1_readyForChannelCompletion = 1'b1;
+ if(when_DmaSg_l566) begin
+ channels_1_readyForChannelCompletion = 1'b0;
+ end
+ end
+
+ assign when_DmaSg_l566 = ((! channels_1_pop_memory) && (! channels_1_fifo_pop_empty));
+ assign when_DmaSg_l575_1 = (! channels_1_descriptorValid);
+ always @(*) begin
+ _zz_when_DmaSg_l593_1 = 1'b1;
+ if(channels_1_ctrl_kick) begin
+ _zz_when_DmaSg_l593_1 = 1'b0;
+ end
+ if(channels_1_ll_valid) begin
+ _zz_when_DmaSg_l593_1 = 1'b0;
+ end
+ end
+
+ assign when_DmaSg_l593_1 = (_zz_when_DmaSg_l593_1 && channels_1_readyForChannelCompletion);
+ assign channels_1_s2b_full = (channels_1_fifo_push_available < 11'h002);
+ assign when_DmaSg_l255_6 = (channels_1_descriptorValid && channels_1_descriptorCompletion);
+ assign when_DmaSg_l255_7 = (! channels_1_interrupts_completion_enable);
+ assign when_DmaSg_l255_8 = (channels_1_channelValid && channels_1_channelCompletion);
+ assign when_DmaSg_l255_9 = (! channels_1_interrupts_onChannelCompletion_enable);
+ assign when_DmaSg_l255_10 = (! channels_1_interrupts_onLinkedListUpdate_enable);
+ assign when_DmaSg_l625_1 = (channels_1_channelStart || channels_1_descriptorStart);
+ assign io_inputs_0_fire = (io_inputs_0_valid && io_inputs_0_ready);
+ assign when_package_l12 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0000));
+ assign when_package_l12_1 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0001));
+ assign when_package_l12_2 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0010));
+ assign when_package_l12_3 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0011));
+ assign when_package_l12_4 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0100));
+ assign when_package_l12_5 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0101));
+ assign when_package_l12_6 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0110));
+ assign when_package_l12_7 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0111));
+ assign when_package_l12_8 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1000));
+ assign when_package_l12_9 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1001));
+ assign when_package_l12_10 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1010));
+ assign when_package_l12_11 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1011));
+ assign when_package_l12_12 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1100));
+ assign when_package_l12_13 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1101));
+ assign when_package_l12_14 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1110));
+ assign when_package_l12_15 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1111));
+ assign s2b_0_cmd_firsts = {io_inputs_0_payload_last_regNextWhen_15,{io_inputs_0_payload_last_regNextWhen_14,{io_inputs_0_payload_last_regNextWhen_13,{io_inputs_0_payload_last_regNextWhen_12,{io_inputs_0_payload_last_regNextWhen_11,{io_inputs_0_payload_last_regNextWhen_10,{io_inputs_0_payload_last_regNextWhen_9,{io_inputs_0_payload_last_regNextWhen_8,{io_inputs_0_payload_last_regNextWhen_7,{io_inputs_0_payload_last_regNextWhen_6,{_zz_s2b_0_cmd_firsts,_zz_s2b_0_cmd_firsts_1}}}}}}}}}}};
+ assign s2b_0_cmd_first = s2b_0_cmd_firsts[io_inputs_0_payload_sink];
+ assign s2b_0_cmd_channelsOh = ((((channels_0_channelValid && (s2b_0_cmd_first || (! channels_0_push_s2b_waitFirst))) && (! channels_0_push_memory)) && 1'b1) && (io_inputs_0_payload_sink == 4'b0000));
+ assign s2b_0_cmd_noHit = (! (|s2b_0_cmd_channelsOh));
+ assign s2b_0_cmd_channelsFull = (channels_0_s2b_full || (channels_0_push_s2b_packetLock && io_inputs_0_payload_last));
+ always @(*) begin
+ io_inputs_0_thrown_valid = io_inputs_0_valid;
+ if(s2b_0_cmd_noHit) begin
+ io_inputs_0_thrown_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ io_inputs_0_ready = io_inputs_0_thrown_ready;
+ if(s2b_0_cmd_noHit) begin
+ io_inputs_0_ready = 1'b1;
+ end
+ end
+
+ assign io_inputs_0_thrown_payload_data = io_inputs_0_payload_data;
+ assign io_inputs_0_thrown_payload_mask = io_inputs_0_payload_mask;
+ assign io_inputs_0_thrown_payload_sink = io_inputs_0_payload_sink;
+ assign io_inputs_0_thrown_payload_last = io_inputs_0_payload_last;
+ assign _zz_io_inputs_0_thrown_ready = (! (|(s2b_0_cmd_channelsOh & s2b_0_cmd_channelsFull)));
+ assign s2b_0_cmd_sinkHalted_valid = (io_inputs_0_thrown_valid && _zz_io_inputs_0_thrown_ready);
+ assign io_inputs_0_thrown_ready = (s2b_0_cmd_sinkHalted_ready && _zz_io_inputs_0_thrown_ready);
+ assign s2b_0_cmd_sinkHalted_payload_data = io_inputs_0_thrown_payload_data;
+ assign s2b_0_cmd_sinkHalted_payload_mask = io_inputs_0_thrown_payload_mask;
+ assign s2b_0_cmd_sinkHalted_payload_sink = io_inputs_0_thrown_payload_sink;
+ assign s2b_0_cmd_sinkHalted_payload_last = io_inputs_0_thrown_payload_last;
+ assign _zz_s2b_0_cmd_byteCount = 4'b0000;
+ assign _zz_s2b_0_cmd_byteCount_1 = 4'b0001;
+ assign _zz_s2b_0_cmd_byteCount_2 = 4'b0001;
+ assign _zz_s2b_0_cmd_byteCount_3 = 4'b0010;
+ assign _zz_s2b_0_cmd_byteCount_4 = 4'b0001;
+ assign _zz_s2b_0_cmd_byteCount_5 = 4'b0010;
+ assign _zz_s2b_0_cmd_byteCount_6 = 4'b0010;
+ assign _zz_s2b_0_cmd_byteCount_7 = 4'b0011;
+ assign s2b_0_cmd_byteCount = (_zz_s2b_0_cmd_byteCount_8 + _zz_s2b_0_cmd_byteCount_13);
+ assign s2b_0_cmd_context_channel = s2b_0_cmd_channelsOh;
+ assign s2b_0_cmd_context_bytes = s2b_0_cmd_byteCount;
+ assign s2b_0_cmd_context_flush = io_inputs_0_payload_last;
+ assign s2b_0_cmd_context_packet = io_inputs_0_payload_last;
+ assign s2b_0_cmd_sinkHalted_ready = memory_core_io_writes_0_cmd_ready;
+ assign memory_core_io_writes_0_cmd_payload_address = channels_0_fifo_push_ptrWithBase[9:0];
+ assign memory_core_io_writes_0_cmd_payload_context = {s2b_0_cmd_context_packet,{s2b_0_cmd_context_flush,{s2b_0_cmd_context_bytes,s2b_0_cmd_context_channel}}};
+ assign memory_core_io_writes_0_cmd_fire = (s2b_0_cmd_sinkHalted_valid && memory_core_io_writes_0_cmd_ready);
+ assign when_DmaSg_l665 = (s2b_0_cmd_channelsOh[0] && memory_core_io_writes_0_cmd_fire);
+ assign _zz_s2b_0_rsp_context_channel = memory_core_io_writes_0_rsp_payload_context;
+ assign s2b_0_rsp_context_channel = _zz_s2b_0_rsp_context_channel[0 : 0];
+ assign s2b_0_rsp_context_bytes = _zz_s2b_0_rsp_context_channel[4 : 1];
+ assign s2b_0_rsp_context_flush = _zz_s2b_0_rsp_context_channel[5];
+ assign s2b_0_rsp_context_packet = _zz_s2b_0_rsp_context_channel[6];
+ assign _zz_channels_0_fifo_pop_bytesIncr_value = (memory_core_io_writes_0_rsp_valid && s2b_0_rsp_context_channel[0]);
+ assign when_DmaSg_l679 = (_zz_channels_0_fifo_pop_bytesIncr_value && s2b_0_rsp_context_packet);
+ assign when_DmaSg_l681 = (_zz_channels_0_fifo_pop_bytesIncr_value && s2b_0_rsp_context_flush);
+ assign when_DmaSg_l682 = (_zz_channels_0_fifo_pop_bytesIncr_value && s2b_0_rsp_context_packet);
+ assign b2s_0_cmd_channelsOh = (((channels_1_channelValid && (! channels_1_pop_memory)) && 1'b1) && (! channels_1_fifo_pop_empty));
+ assign b2s_0_cmd_veryLastPtr = channels_1_pop_b2s_veryLastPtr;
+ assign b2s_0_cmd_address = channels_1_fifo_pop_ptrWithBase;
+ assign b2s_0_cmd_context_channel = b2s_0_cmd_channelsOh;
+ assign b2s_0_cmd_context_veryLast = ((channels_1_pop_b2s_veryLastValid && (b2s_0_cmd_address[10 : 1] == b2s_0_cmd_veryLastPtr[10 : 1])) && (b2s_0_cmd_address[0 : 0] == 1'b1));
+ assign b2s_0_cmd_context_endPacket = channels_1_pop_b2s_veryLastEndPacket;
+ assign memory_core_io_reads_0_cmd_valid = (|b2s_0_cmd_channelsOh);
+ assign memory_core_io_reads_0_cmd_payload_address = b2s_0_cmd_address[9:0];
+ assign memory_core_io_reads_0_cmd_payload_context = {b2s_0_cmd_context_endPacket,{b2s_0_cmd_context_veryLast,b2s_0_cmd_context_channel}};
+ assign _zz_b2s_0_rsp_context_channel = memory_core_io_reads_0_rsp_payload_context;
+ assign b2s_0_rsp_context_channel = _zz_b2s_0_rsp_context_channel[0 : 0];
+ assign b2s_0_rsp_context_veryLast = _zz_b2s_0_rsp_context_channel[1];
+ assign b2s_0_rsp_context_endPacket = _zz_b2s_0_rsp_context_channel[2];
+ assign io_outputs_0_valid = memory_core_io_reads_0_rsp_valid;
+ assign io_outputs_0_payload_data = memory_core_io_reads_0_rsp_payload_data;
+ assign io_outputs_0_payload_mask = memory_core_io_reads_0_rsp_payload_mask;
+ assign io_outputs_0_payload_sink = channels_1_pop_b2s_sinkId;
+ assign io_outputs_0_payload_last = (b2s_0_rsp_context_veryLast && b2s_0_rsp_context_endPacket);
+ assign io_outputs_0_fire = (io_outputs_0_valid && io_outputs_0_ready);
+ assign when_DmaSg_l725 = (io_outputs_0_fire && b2s_0_rsp_context_veryLast);
+ assign when_DmaSg_l726 = b2s_0_rsp_context_channel[0];
+ assign _zz_m2b_cmd_s0_priority_masked = channels_1_priority;
+ assign m2b_cmd_s0_priority_masked = (channels_1_push_m2b_loadRequest && (channels_1_priority == _zz_m2b_cmd_s0_priority_masked));
+ assign _zz_m2b_cmd_s0_priority_chosenOh = m2b_cmd_s0_priority_masked;
+ assign _zz_m2b_cmd_s0_priority_chosenOh_1 = {_zz_m2b_cmd_s0_priority_chosenOh,_zz_m2b_cmd_s0_priority_chosenOh};
+ assign _zz_m2b_cmd_s0_priority_chosenOh_2 = (_zz_m2b_cmd_s0_priority_chosenOh_1 & (~ _zz__zz_m2b_cmd_s0_priority_chosenOh_2));
+ assign m2b_cmd_s0_priority_chosenOh = (_zz_m2b_cmd_s0_priority_chosenOh_2[1 : 1] | _zz_m2b_cmd_s0_priority_chosenOh_2[0 : 0]);
+ assign m2b_cmd_s0_priority_weightLast = (channels_1_weight == m2b_cmd_s0_priority_counter);
+ assign m2b_cmd_s0_priority_contextNext = (m2b_cmd_s0_priority_weightLast ? m2b_cmd_s0_priority_chosenOh[0 : 0] : m2b_cmd_s0_priority_chosenOh);
+ assign when_DmaSg_l758 = (! m2b_cmd_s0_valid);
+ assign when_DmaSg_l760 = (|channels_1_push_m2b_loadRequest);
+ assign when_DmaSg_l763 = (2'b00 == _zz_m2b_cmd_s0_priority_masked);
+ assign when_DmaSg_l763_1 = (2'b01 == _zz_m2b_cmd_s0_priority_masked);
+ assign when_DmaSg_l763_2 = (2'b10 == _zz_m2b_cmd_s0_priority_masked);
+ assign when_DmaSg_l763_3 = (2'b11 == _zz_m2b_cmd_s0_priority_masked);
+ assign when_DmaSg_l773 = (channels_1_push_m2b_loadRequest && m2b_cmd_s0_priority_chosenOh[0]);
+ assign m2b_cmd_s0_address = channels_1_push_m2b_address;
+ assign m2b_cmd_s0_bytesLeft = channels_1_push_m2b_bytesLeft;
+ assign m2b_cmd_s0_readAddressBurstRange = m2b_cmd_s0_address[11 : 0];
+ assign m2b_cmd_s0_lengthHead = ((~ m2b_cmd_s0_readAddressBurstRange) & channels_1_push_m2b_bytePerBurst);
+ assign m2b_cmd_s0_length = _zz_m2b_cmd_s0_length[11:0];
+ assign m2b_cmd_s0_lastBurst = (m2b_cmd_s0_bytesLeft == _zz_m2b_cmd_s0_lastBurst);
+ assign m2b_cmd_s1_context_start = m2b_cmd_s1_address[3:0];
+ assign m2b_cmd_s1_context_stop = _zz_m2b_cmd_s1_context_stop[3:0];
+ assign m2b_cmd_s1_context_last = m2b_cmd_s1_lastBurst;
+ assign m2b_cmd_s1_context_length = m2b_cmd_s1_length;
+ always @(*) begin
+ io_read_cmd_valid = 1'b0;
+ if(m2b_cmd_s1_valid) begin
+ io_read_cmd_valid = 1'b1;
+ end
+ end
+
+ assign io_read_cmd_payload_last = 1'b1;
+ assign io_read_cmd_payload_fragment_opcode = 1'b0;
+ assign io_read_cmd_payload_fragment_address = m2b_cmd_s1_address;
+ assign io_read_cmd_payload_fragment_length = m2b_cmd_s1_length;
+ assign io_read_cmd_payload_fragment_context = {m2b_cmd_s1_context_last,{m2b_cmd_s1_context_length,{m2b_cmd_s1_context_stop,m2b_cmd_s1_context_start}}};
+ assign m2b_cmd_s1_addressNext = (_zz_m2b_cmd_s1_addressNext + 32'h00000001);
+ assign m2b_cmd_s1_byteLeftNext = (_zz_m2b_cmd_s1_byteLeftNext - 26'h0000001);
+ assign m2b_cmd_s1_fifoPushDecr = (_zz_m2b_cmd_s1_fifoPushDecr >>> 2'd3);
+ assign when_DmaSg_l828 = 1'b1;
+ assign _zz_m2b_rsp_context_start = io_read_rsp_payload_fragment_context;
+ assign m2b_rsp_context_start = _zz_m2b_rsp_context_start[3 : 0];
+ assign m2b_rsp_context_stop = _zz_m2b_rsp_context_start[7 : 4];
+ assign m2b_rsp_context_length = _zz_m2b_rsp_context_start[19 : 8];
+ assign m2b_rsp_context_last = _zz_m2b_rsp_context_start[20];
+ assign m2b_rsp_veryLast = (m2b_rsp_context_last && io_read_rsp_payload_last);
+ assign io_read_rsp_fire = (io_read_rsp_valid && io_read_rsp_ready);
+ assign when_DmaSg_l847 = (io_read_rsp_fire && m2b_rsp_veryLast);
+ assign when_DmaSg_l848 = 1'b1;
+ always @(*) begin
+ memory_core_io_writes_1_cmd_payload_mask[0] = ((! (m2b_rsp_first && (4'b0000 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0000))));
+ memory_core_io_writes_1_cmd_payload_mask[1] = ((! (m2b_rsp_first && (4'b0001 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0001))));
+ memory_core_io_writes_1_cmd_payload_mask[2] = ((! (m2b_rsp_first && (4'b0010 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0010))));
+ memory_core_io_writes_1_cmd_payload_mask[3] = ((! (m2b_rsp_first && (4'b0011 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0011))));
+ memory_core_io_writes_1_cmd_payload_mask[4] = ((! (m2b_rsp_first && (4'b0100 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0100))));
+ memory_core_io_writes_1_cmd_payload_mask[5] = ((! (m2b_rsp_first && (4'b0101 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0101))));
+ memory_core_io_writes_1_cmd_payload_mask[6] = ((! (m2b_rsp_first && (4'b0110 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0110))));
+ memory_core_io_writes_1_cmd_payload_mask[7] = ((! (m2b_rsp_first && (4'b0111 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0111))));
+ memory_core_io_writes_1_cmd_payload_mask[8] = ((! (m2b_rsp_first && (4'b1000 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1000))));
+ memory_core_io_writes_1_cmd_payload_mask[9] = ((! (m2b_rsp_first && (4'b1001 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1001))));
+ memory_core_io_writes_1_cmd_payload_mask[10] = ((! (m2b_rsp_first && (4'b1010 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1010))));
+ memory_core_io_writes_1_cmd_payload_mask[11] = ((! (m2b_rsp_first && (4'b1011 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1011))));
+ memory_core_io_writes_1_cmd_payload_mask[12] = ((! (m2b_rsp_first && (4'b1100 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1100))));
+ memory_core_io_writes_1_cmd_payload_mask[13] = ((! (m2b_rsp_first && (4'b1101 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1101))));
+ memory_core_io_writes_1_cmd_payload_mask[14] = ((! (m2b_rsp_first && (4'b1110 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1110))));
+ memory_core_io_writes_1_cmd_payload_mask[15] = ((! (m2b_rsp_first && (4'b1111 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1111))));
+ end
+
+ assign m2b_rsp_writeContext_last = m2b_rsp_veryLast;
+ assign m2b_rsp_writeContext_lastOfBurst = io_read_rsp_payload_last;
+ assign m2b_rsp_writeContext_loadByteInNextBeat = ({1'b0,(io_read_rsp_payload_last ? m2b_rsp_context_stop : 4'b1111)} - {1'b0,(m2b_rsp_first ? m2b_rsp_context_start : 4'b0000)});
+ assign memory_core_io_writes_1_cmd_payload_address = channels_1_fifo_push_ptrWithBase[9:0];
+ assign io_read_rsp_ready = memory_core_io_writes_1_cmd_ready;
+ assign memory_core_io_writes_1_cmd_payload_context = {m2b_rsp_writeContext_loadByteInNextBeat,{m2b_rsp_writeContext_lastOfBurst,m2b_rsp_writeContext_last}};
+ assign memory_core_io_writes_1_cmd_fire = (io_read_rsp_valid && memory_core_io_writes_1_cmd_ready);
+ assign _zz_channels_1_fifo_push_ptrIncr_value = (memory_core_io_writes_1_cmd_fire && 1'b1);
+ assign when_DmaSg_l874 = (_zz_channels_1_fifo_push_ptrIncr_value && io_read_rsp_payload_last);
+ assign _zz_m2b_writeRsp_context_last = memory_core_io_writes_1_rsp_payload_context;
+ assign m2b_writeRsp_context_last = _zz_m2b_writeRsp_context_last[0];
+ assign m2b_writeRsp_context_lastOfBurst = _zz_m2b_writeRsp_context_last[1];
+ assign m2b_writeRsp_context_loadByteInNextBeat = _zz_m2b_writeRsp_context_last[6 : 2];
+ assign _zz_channels_1_fifo_pop_bytesIncr_value = (memory_core_io_writes_1_rsp_valid && 1'b1);
+ assign when_DmaSg_l893 = (_zz_channels_1_fifo_pop_bytesIncr_value && m2b_writeRsp_context_lastOfBurst);
+ assign _zz_b2m_fsm_arbiter_logic_priority_masked = channels_0_priority;
+ assign b2m_fsm_arbiter_logic_priority_masked = (channels_0_pop_b2m_request && (channels_0_priority == _zz_b2m_fsm_arbiter_logic_priority_masked));
+ assign _zz_b2m_fsm_arbiter_logic_priority_chosenOh = b2m_fsm_arbiter_logic_priority_masked;
+ assign _zz_b2m_fsm_arbiter_logic_priority_chosenOh_1 = {_zz_b2m_fsm_arbiter_logic_priority_chosenOh,_zz_b2m_fsm_arbiter_logic_priority_chosenOh};
+ assign _zz_b2m_fsm_arbiter_logic_priority_chosenOh_2 = (_zz_b2m_fsm_arbiter_logic_priority_chosenOh_1 & (~ _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2));
+ assign b2m_fsm_arbiter_logic_priority_chosenOh = (_zz_b2m_fsm_arbiter_logic_priority_chosenOh_2[1 : 1] | _zz_b2m_fsm_arbiter_logic_priority_chosenOh_2[0 : 0]);
+ assign b2m_fsm_arbiter_logic_priority_weightLast = (channels_0_weight == b2m_fsm_arbiter_logic_priority_counter);
+ assign b2m_fsm_arbiter_logic_priority_contextNext = (b2m_fsm_arbiter_logic_priority_weightLast ? b2m_fsm_arbiter_logic_priority_chosenOh[0 : 0] : b2m_fsm_arbiter_logic_priority_chosenOh);
+ assign when_DmaSg_l758_1 = (! b2m_fsm_arbiter_logic_valid);
+ assign when_DmaSg_l760_1 = (|channels_0_pop_b2m_request);
+ assign when_DmaSg_l763_4 = (2'b00 == _zz_b2m_fsm_arbiter_logic_priority_masked);
+ assign when_DmaSg_l763_5 = (2'b01 == _zz_b2m_fsm_arbiter_logic_priority_masked);
+ assign when_DmaSg_l763_6 = (2'b10 == _zz_b2m_fsm_arbiter_logic_priority_masked);
+ assign when_DmaSg_l763_7 = (2'b11 == _zz_b2m_fsm_arbiter_logic_priority_masked);
+ assign when_DmaSg_l773_1 = (channels_0_pop_b2m_request && b2m_fsm_arbiter_logic_priority_chosenOh[0]);
+ assign when_DmaSg_l935 = ((! b2m_fsm_sel_valid) && b2m_fsm_arbiter_logic_valid);
+ assign b2m_fsm_bytesInBurstP1 = ({1'b0,b2m_fsm_sel_bytesInBurst} + _zz_b2m_fsm_bytesInBurstP1);
+ assign b2m_fsm_addressNext = (b2m_fsm_sel_address + _zz_b2m_fsm_addressNext);
+ assign b2m_fsm_bytesLeftNext = ({1'b0,b2m_fsm_sel_bytesLeft} - _zz_b2m_fsm_bytesLeftNext);
+ assign b2m_fsm_isFinalCmd = b2m_fsm_bytesLeftNext[26];
+ assign b2m_fsm_s0 = (b2m_fsm_sel_valid && (! b2m_fsm_sel_valid_regNext));
+ assign when_DmaSg_l986 = (! b2m_fsm_sel_valid);
+ assign _zz_b2m_fsm_sel_bytesInBurst = (b2m_fsm_sel_bytesInFifo - 14'h0001);
+ assign _zz_b2m_fsm_sel_bytesInBurst_1 = ((_zz__zz_b2m_fsm_sel_bytesInBurst_1 < b2m_fsm_sel_bytesLeft) ? _zz__zz_b2m_fsm_sel_bytesInBurst_1_1 : b2m_fsm_sel_bytesLeft);
+ assign _zz_b2m_fsm_sel_bytesInBurst_2 = (b2m_fsm_sel_bytePerBurst - (_zz__zz_b2m_fsm_sel_bytesInBurst_2 & b2m_fsm_sel_bytePerBurst));
+ assign b2m_fsm_fifoCompletion = (_zz_b2m_fsm_fifoCompletion == _zz_b2m_fsm_fifoCompletion_1);
+ assign when_DmaSg_l996 = 1'b1;
+ assign when_DmaSg_l1001 = (! b2m_fsm_fifoCompletion);
+ assign when_DmaSg_l1013 = (b2m_fsm_sel_valid && b2m_fsm_sel_ready);
+ always @(*) begin
+ b2m_fsm_sel_ready = 1'b0;
+ if(when_DmaSg_l1102) begin
+ b2m_fsm_sel_ready = 1'b1;
+ end
+ end
+
+ assign b2m_fsm_fetch_context_ptr = channels_0_fifo_pop_ptr;
+ assign b2m_fsm_fetch_context_toggle = b2m_fsm_toggle;
+ assign memory_core_io_reads_1_cmd_payload_address = b2m_fsm_sel_ptr[9:0];
+ assign memory_core_io_reads_1_cmd_payload_context = {b2m_fsm_fetch_context_toggle,b2m_fsm_fetch_context_ptr};
+ assign when_DmaSg_l1033 = (b2m_fsm_sel_valid && memory_core_io_reads_1_cmd_ready);
+ assign _zz_b2m_fsm_aggregate_context_ptr = memory_core_io_reads_1_rsp_payload_context;
+ assign b2m_fsm_aggregate_context_ptr = _zz_b2m_fsm_aggregate_context_ptr[10 : 0];
+ assign b2m_fsm_aggregate_context_toggle = _zz_b2m_fsm_aggregate_context_ptr[11];
+ assign memory_core_io_reads_1_rsp_s2mPipe_valid = (memory_core_io_reads_1_rsp_valid || (! memory_core_io_reads_1_rsp_rValidN));
+ assign memory_core_io_reads_1_rsp_s2mPipe_payload_data = (memory_core_io_reads_1_rsp_rValidN ? memory_core_io_reads_1_rsp_payload_data : memory_core_io_reads_1_rsp_rData_data);
+ assign memory_core_io_reads_1_rsp_s2mPipe_payload_mask = (memory_core_io_reads_1_rsp_rValidN ? memory_core_io_reads_1_rsp_payload_mask : memory_core_io_reads_1_rsp_rData_mask);
+ assign memory_core_io_reads_1_rsp_s2mPipe_payload_context = (memory_core_io_reads_1_rsp_rValidN ? memory_core_io_reads_1_rsp_payload_context : memory_core_io_reads_1_rsp_rData_context);
+ assign when_Stream_l445 = (b2m_fsm_aggregate_context_toggle != b2m_fsm_toggle);
+ always @(*) begin
+ b2m_fsm_aggregate_memoryPort_valid = memory_core_io_reads_1_rsp_s2mPipe_valid;
+ if(when_Stream_l445) begin
+ b2m_fsm_aggregate_memoryPort_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ memory_core_io_reads_1_rsp_s2mPipe_ready = b2m_fsm_aggregate_memoryPort_ready;
+ if(when_Stream_l445) begin
+ memory_core_io_reads_1_rsp_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign b2m_fsm_aggregate_memoryPort_payload_data = memory_core_io_reads_1_rsp_s2mPipe_payload_data;
+ assign b2m_fsm_aggregate_memoryPort_payload_mask = memory_core_io_reads_1_rsp_s2mPipe_payload_mask;
+ assign b2m_fsm_aggregate_memoryPort_payload_context = memory_core_io_reads_1_rsp_s2mPipe_payload_context;
+ assign b2m_fsm_aggregate_memoryPort_fire = (b2m_fsm_aggregate_memoryPort_valid && b2m_fsm_aggregate_memoryPort_ready);
+ assign when_DmaSg_l1050 = (! (b2m_fsm_sel_valid && (! b2m_fsm_sel_ready)));
+ assign b2m_fsm_aggregate_bytesToSkip = channels_0_pop_b2m_bytesToSkip;
+ assign b2m_fsm_aggregate_bytesToSkipMask = {((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1111)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1110)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= _zz_b2m_fsm_aggregate_bytesToSkipMask)),{(_zz_b2m_fsm_aggregate_bytesToSkipMask_1 || _zz_b2m_fsm_aggregate_bytesToSkipMask_2),{_zz_b2m_fsm_aggregate_bytesToSkipMask_3,{_zz_b2m_fsm_aggregate_bytesToSkipMask_4,_zz_b2m_fsm_aggregate_bytesToSkipMask_5}}}}}};
+ assign b2m_fsm_aggregate_memoryPort_ready = b2m_fsm_aggregate_engine_io_input_ready;
+ assign b2m_fsm_aggregate_engine_io_input_payload_mask = (b2m_fsm_aggregate_memoryPort_payload_mask & b2m_fsm_aggregate_bytesToSkipMask);
+ assign b2m_fsm_aggregate_engine_io_offset = b2m_fsm_sel_address[3:0];
+ assign b2m_fsm_aggregate_engine_io_flush = (! _zz_io_flush);
+ assign b2m_fsm_cmd_maskFirstTrigger = b2m_fsm_sel_address[3:0];
+ assign b2m_fsm_cmd_maskLastTriggerComb = (b2m_fsm_cmd_maskFirstTrigger + _zz_b2m_fsm_cmd_maskLastTriggerComb);
+ assign b2m_fsm_cmd_maskFirst = {(b2m_fsm_cmd_maskFirstTrigger <= 4'b1111),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b1110),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b1101),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b1100),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b1011),{(b2m_fsm_cmd_maskFirstTrigger <= _zz_b2m_fsm_cmd_maskFirst),{_zz_b2m_fsm_cmd_maskFirst_1,{_zz_b2m_fsm_cmd_maskFirst_2,_zz_b2m_fsm_cmd_maskFirst_3}}}}}}}};
+ assign b2m_fsm_cmd_enoughAggregation = (((b2m_fsm_s2 && b2m_fsm_sel_valid) && (! b2m_fsm_aggregate_engine_io_flush)) && (io_write_cmd_payload_last ? ((b2m_fsm_aggregate_engine_io_output_mask & b2m_fsm_cmd_maskLast) == b2m_fsm_cmd_maskLast) : (&b2m_fsm_aggregate_engine_io_output_mask)));
+ assign io_write_cmd_fire = (io_write_cmd_valid && io_write_cmd_ready);
+ assign io_write_cmd_valid = b2m_fsm_cmd_enoughAggregation;
+ assign io_write_cmd_payload_last = (b2m_fsm_beatCounter == 8'h0);
+ assign io_write_cmd_payload_fragment_address = b2m_fsm_sel_address;
+ assign io_write_cmd_payload_fragment_opcode = 1'b1;
+ assign io_write_cmd_payload_fragment_data = b2m_fsm_aggregate_engine_io_output_data;
+ assign io_write_cmd_payload_fragment_mask = (~ ((io_write_cmd_payload_first ? (~ b2m_fsm_cmd_maskFirst) : 16'h0) | (io_write_cmd_payload_last ? (~ b2m_fsm_cmd_maskLast) : 16'h0)));
+ assign io_write_cmd_payload_fragment_length = b2m_fsm_sel_bytesInBurst;
+ assign b2m_fsm_cmd_doPtrIncr = (b2m_fsm_sel_valid && (b2m_fsm_aggregate_engine_io_output_consumed || ((io_write_cmd_fire && io_write_cmd_payload_last) && (b2m_fsm_aggregate_engine_io_output_usedUntil == 4'b1111))));
+ assign b2m_fsm_cmd_context_length = b2m_fsm_sel_bytesInBurst;
+ assign b2m_fsm_cmd_context_doPacketSync = (b2m_fsm_sel_packet && b2m_fsm_fifoCompletion);
+ assign io_write_cmd_payload_fragment_context = {b2m_fsm_cmd_context_doPacketSync,b2m_fsm_cmd_context_length};
+ assign when_DmaSg_l1102 = (io_write_cmd_fire && io_write_cmd_payload_last);
+ assign io_write_rsp_ready = 1'b1;
+ assign _zz_b2m_rsp_context_length = io_write_rsp_payload_fragment_context;
+ assign b2m_rsp_context_length = _zz_b2m_rsp_context_length[11 : 0];
+ assign b2m_rsp_context_doPacketSync = _zz_b2m_rsp_context_length[12];
+ assign io_write_rsp_fire = (io_write_rsp_valid && io_write_rsp_ready);
+ assign when_DmaSg_l1116 = 1'b1;
+ assign _zz_ll_arbiter_head = {channels_1_ll_requestLl,channels_0_ll_requestLl};
+ assign _zz_ll_arbiter_head_1 = _zz__zz_ll_arbiter_head_1[1];
+ assign ll_arbiter_head = (_zz_ll_arbiter_head_2[0] ? channels_0_ll_head : channels_1_ll_head);
+ assign ll_arbiter_isJustASink = (_zz_ll_arbiter_isJustASink[0] ? channels_0_descriptorValid : channels_1_descriptorValid);
+ assign ll_arbiter_doDescriptorStall = (_zz_ll_arbiter_doDescriptorStall[0] ? ((! channels_0_ll_controlNoCompletion) || channels_0_ll_gotDescriptorStall) : ((! channels_1_ll_controlNoCompletion) || channels_1_ll_gotDescriptorStall));
+ assign ll_arbiter_onSgStream = (_zz_ll_arbiter_onSgStream[0] ? channels_0_ll_onSgStream : channels_1_ll_onSgStream);
+ assign when_DmaSg_l1149 = (! ll_cmd_valid);
+ assign when_DmaSg_l1148 = (! ll_cmd_valid);
+ assign when_DmaSg_l1148_1 = (! ll_cmd_valid);
+ assign when_DmaSg_l1148_2 = (! ll_cmd_valid);
+ assign when_DmaSg_l1148_3 = (! ll_cmd_valid);
+ assign when_DmaSg_l1154 = (! ll_cmd_valid);
+ assign when_DmaSg_l1155 = (! ll_cmd_valid);
+ assign when_DmaSg_l1156 = (! ll_cmd_valid);
+ assign when_DmaSg_l1160 = (! ll_cmd_valid);
+ assign when_DmaSg_l1161 = (|{_zz_ll_arbiter_head_1,channels_0_ll_requestLl});
+ assign when_DmaSg_l1169 = (! ll_arbiter_isJustASink);
+ assign when_DmaSg_l1169_1 = (! ll_arbiter_isJustASink);
+ assign when_DmaSg_l1177 = (ll_cmd_writeFired && ll_cmd_readFired);
+ assign ll_cmd_context_channel = ll_cmd_oh_1;
+ assign io_sgRead_cmd_valid = ((ll_cmd_valid && (! ll_cmd_readFired)) && (! ll_cmd_onSgStream));
+ assign io_sgRead_cmd_payload_last = 1'b1;
+ assign io_sgRead_cmd_payload_fragment_address = {ll_cmd_ptrNext[31 : 5],5'h0};
+ assign io_sgRead_cmd_payload_fragment_length = 5'h1f;
+ assign io_sgRead_cmd_payload_fragment_opcode = 1'b0;
+ assign io_sgRead_cmd_payload_fragment_context = ll_cmd_context_channel;
+ assign io_sgWrite_cmd_valid = ((ll_cmd_valid && (! ll_cmd_writeFired)) && (! ll_cmd_onSgStream));
+ assign io_sgWrite_cmd_payload_last = 1'b1;
+ assign io_sgWrite_cmd_payload_fragment_address = {ll_cmd_ptr[31 : 5],5'h0};
+ assign io_sgWrite_cmd_payload_fragment_length = 2'b11;
+ assign io_sgWrite_cmd_payload_fragment_opcode = 1'b1;
+ assign io_sgWrite_cmd_payload_fragment_context = ll_cmd_context_channel;
+ assign ll_cmd_writeMaskSplit_0 = io_sgWrite_cmd_payload_fragment_mask[3 : 0];
+ assign ll_cmd_writeMaskSplit_1 = io_sgWrite_cmd_payload_fragment_mask[7 : 4];
+ assign ll_cmd_writeMaskSplit_2 = io_sgWrite_cmd_payload_fragment_mask[11 : 8];
+ assign ll_cmd_writeMaskSplit_3 = io_sgWrite_cmd_payload_fragment_mask[15 : 12];
+ assign ll_cmd_writeDataSplit_0 = io_sgWrite_cmd_payload_fragment_data[31 : 0];
+ assign ll_cmd_writeDataSplit_1 = io_sgWrite_cmd_payload_fragment_data[63 : 32];
+ assign ll_cmd_writeDataSplit_2 = io_sgWrite_cmd_payload_fragment_data[95 : 64];
+ assign ll_cmd_writeDataSplit_3 = io_sgWrite_cmd_payload_fragment_data[127 : 96];
+ assign _zz_1 = zz_io_sgWrite_cmd_payload_fragment_mask(1'b0);
+ always @(*) io_sgWrite_cmd_payload_fragment_mask = _zz_1;
+ always @(*) begin
+ io_sgWrite_cmd_payload_fragment_data[63 : 32] = 32'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
+ io_sgWrite_cmd_payload_fragment_data[95 : 64] = 32'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
+ io_sgWrite_cmd_payload_fragment_data[127 : 96] = 32'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
+ io_sgWrite_cmd_payload_fragment_data[31 : 0] = 32'h0;
+ io_sgWrite_cmd_payload_fragment_data[26 : 0] = ll_cmd_bytesDone;
+ io_sgWrite_cmd_payload_fragment_data[30] = ll_cmd_endOfPacket;
+ io_sgWrite_cmd_payload_fragment_data[31] = ((! ll_cmd_isJustASink) && ll_cmd_doDescriptorStall);
+ end
+
+ assign io_sgRead_cmd_fire = (io_sgRead_cmd_valid && io_sgRead_cmd_ready);
+ assign io_sgWrite_cmd_fire = (io_sgWrite_cmd_valid && io_sgWrite_cmd_ready);
+ assign ll_readRsp_context_channel = io_sgRead_rsp_payload_fragment_context[0 : 0];
+ assign _zz_ll_readRsp_oh_0 = (2'b01 <<< ll_readRsp_context_channel);
+ assign ll_readRsp_oh_0 = _zz_ll_readRsp_oh_0[0];
+ assign ll_readRsp_oh_1 = _zz_ll_readRsp_oh_0[1];
+ assign io_sgRead_rsp_ready = 1'b1;
+ assign io_sgRead_rsp_fire = (io_sgRead_rsp_valid && io_sgRead_rsp_ready);
+ assign when_DmaSg_l1248 = (1'b0 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_1 = (1'b1 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_2 = (1'b1 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_3 = (1'b0 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_4 = (1'b0 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_5 = (1'b0 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_6 = (1'b0 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1271 = (io_sgRead_rsp_fire && io_sgRead_rsp_payload_last);
+ assign ll_writeRsp_context_channel = io_sgWrite_rsp_payload_fragment_context[0 : 0];
+ assign _zz_ll_writeRsp_oh_0 = (2'b01 <<< ll_writeRsp_context_channel);
+ assign ll_writeRsp_oh_0 = _zz_ll_writeRsp_oh_0[0];
+ assign ll_writeRsp_oh_1 = _zz_ll_writeRsp_oh_0[1];
+ assign io_sgWrite_rsp_ready = 1'b1;
+ assign io_sgWrite_rsp_fire = (io_sgWrite_rsp_valid && io_sgWrite_rsp_ready);
+ always @(*) begin
+ io_interrupts = 2'b00;
+ if(channels_0_interrupts_completion_valid) begin
+ io_interrupts[0] = 1'b1;
+ end
+ if(channels_0_interrupts_onChannelCompletion_valid) begin
+ io_interrupts[0] = 1'b1;
+ end
+ if(channels_0_interrupts_onLinkedListUpdate_valid) begin
+ io_interrupts[0] = 1'b1;
+ end
+ if(channels_0_interrupts_s2mPacket_valid) begin
+ io_interrupts[0] = 1'b1;
+ end
+ if(channels_1_interrupts_completion_valid) begin
+ io_interrupts[1] = 1'b1;
+ end
+ if(channels_1_interrupts_onChannelCompletion_valid) begin
+ io_interrupts[1] = 1'b1;
+ end
+ if(channels_1_interrupts_onLinkedListUpdate_valid) begin
+ io_interrupts[1] = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ when_BusSlaveFactory_l377 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h002c : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l377_1 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h002c : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_1 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l377_2 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h002c : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_2 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_2 = io_ctrl_PWDATA[4];
+ always @(*) begin
+ when_BusSlaveFactory_l377_3 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h002c : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_3 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_3 = io_ctrl_PWDATA[4];
+ always @(*) begin
+ when_BusSlaveFactory_l341 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h0054 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l341_1 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h0054 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_1 = io_ctrl_PWDATA[2];
+ always @(*) begin
+ when_BusSlaveFactory_l341_2 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h0054 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_2 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_2 = io_ctrl_PWDATA[3];
+ always @(*) begin
+ when_BusSlaveFactory_l341_3 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h0054 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_3 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_3 = io_ctrl_PWDATA[4];
+ always @(*) begin
+ when_BusSlaveFactory_l377_4 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00ac : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_4 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_4 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l377_5 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00ac : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_5 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_5 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l377_6 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00ac : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_6 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_6 = io_ctrl_PWDATA[4];
+ always @(*) begin
+ when_BusSlaveFactory_l377_7 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00ac : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_7 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_7 = io_ctrl_PWDATA[4];
+ always @(*) begin
+ when_BusSlaveFactory_l341_4 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00d4 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_4 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_4 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l341_5 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00d4 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_5 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_5 = io_ctrl_PWDATA[2];
+ always @(*) begin
+ when_BusSlaveFactory_l341_6 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00d4 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_6 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_6 = io_ctrl_PWDATA[3];
+ assign when_Apb3SlaveFactory_l81 = ((io_ctrl_PADDR & (~ 14'h0003)) == 14'h0010);
+ assign when_Apb3SlaveFactory_l81_1 = ((io_ctrl_PADDR & (~ 14'h0003)) == 14'h0070);
+ assign when_Apb3SlaveFactory_l81_2 = ((io_ctrl_PADDR & (~ 14'h0003)) == 14'h0080);
+ assign when_Apb3SlaveFactory_l81_3 = ((io_ctrl_PADDR & (~ 14'h0003)) == 14'h00f0);
+ assign channels_0_fifo_push_ptrIncr_value = _zz_channels_0_fifo_push_ptrIncr_value;
+ assign channels_0_fifo_pop_bytesIncr_value = _zz_channels_0_fifo_pop_bytesIncr_value_1;
+ assign channels_0_fifo_pop_bytesDecr_value = channels_0_pop_b2m_decrBytes;
+ assign channels_0_fifo_pop_ptrIncr_value = _zz_channels_0_fifo_pop_ptrIncr_value;
+ assign channels_1_fifo_push_ptrIncr_value = _zz_channels_1_fifo_push_ptrIncr_value_1;
+ assign channels_1_fifo_pop_bytesIncr_value = _zz_channels_1_fifo_pop_bytesIncr_value_1;
+ assign channels_1_fifo_pop_bytesDecr_value = 14'h0;
+ assign channels_1_fifo_pop_ptrIncr_value = _zz_channels_1_fifo_pop_ptrIncr_value;
+ assign ll_0_descriptorUpdate = (channels_0_ll_descriptorUpdated && (! channels_0_ll_gotDescriptorStall));
+ assign ll_1_descriptorUpdate = (channels_1_ll_descriptorUpdated && (! channels_1_ll_gotDescriptorStall));
+ always @(posedge clk) begin
+ if(reset) begin
+ channels_0_channelValid <= 1'b0;
+ channels_0_descriptorValid <= 1'b0;
+ channels_0_priority <= 2'b00;
+ channels_0_weight <= 2'b00;
+ channels_0_ctrl_kick <= 1'b0;
+ channels_0_ll_valid <= 1'b0;
+ channels_0_ll_onSgStream <= 1'b0;
+ channels_0_pop_b2m_memPending <= 4'b0000;
+ channels_0_interrupts_completion_enable <= 1'b0;
+ channels_0_interrupts_completion_valid <= 1'b0;
+ channels_0_interrupts_onChannelCompletion_enable <= 1'b0;
+ channels_0_interrupts_onChannelCompletion_valid <= 1'b0;
+ channels_0_interrupts_onLinkedListUpdate_enable <= 1'b0;
+ channels_0_interrupts_onLinkedListUpdate_valid <= 1'b0;
+ channels_0_interrupts_s2mPacket_enable <= 1'b0;
+ channels_0_interrupts_s2mPacket_valid <= 1'b0;
+ channels_1_channelValid <= 1'b0;
+ channels_1_descriptorValid <= 1'b0;
+ channels_1_priority <= 2'b00;
+ channels_1_weight <= 2'b00;
+ channels_1_ctrl_kick <= 1'b0;
+ channels_1_ll_valid <= 1'b0;
+ channels_1_ll_onSgStream <= 1'b0;
+ channels_1_push_m2b_loadDone <= 1'b1;
+ channels_1_push_m2b_memPending <= 4'b0000;
+ channels_1_interrupts_completion_enable <= 1'b0;
+ channels_1_interrupts_completion_valid <= 1'b0;
+ channels_1_interrupts_onChannelCompletion_enable <= 1'b0;
+ channels_1_interrupts_onChannelCompletion_valid <= 1'b0;
+ channels_1_interrupts_onLinkedListUpdate_enable <= 1'b0;
+ channels_1_interrupts_onLinkedListUpdate_valid <= 1'b0;
+ io_inputs_0_payload_last_regNextWhen <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_1 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_2 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_3 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_4 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_5 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_6 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_7 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_8 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_9 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_10 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_11 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_12 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_13 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_14 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_15 <= 1'b1;
+ m2b_cmd_s0_valid <= 1'b0;
+ m2b_cmd_s0_priority_roundRobins_0 <= 1'b1;
+ m2b_cmd_s0_priority_roundRobins_1 <= 1'b1;
+ m2b_cmd_s0_priority_roundRobins_2 <= 1'b1;
+ m2b_cmd_s0_priority_roundRobins_3 <= 1'b1;
+ m2b_cmd_s0_priority_counter <= 2'b00;
+ m2b_cmd_s1_valid <= 1'b0;
+ m2b_rsp_first <= 1'b1;
+ b2m_fsm_sel_valid <= 1'b0;
+ b2m_fsm_arbiter_logic_valid <= 1'b0;
+ b2m_fsm_arbiter_logic_priority_roundRobins_0 <= 1'b1;
+ b2m_fsm_arbiter_logic_priority_roundRobins_1 <= 1'b1;
+ b2m_fsm_arbiter_logic_priority_roundRobins_2 <= 1'b1;
+ b2m_fsm_arbiter_logic_priority_roundRobins_3 <= 1'b1;
+ b2m_fsm_arbiter_logic_priority_counter <= 2'b00;
+ b2m_fsm_sel_valid_regNext <= 1'b0;
+ b2m_fsm_s1 <= 1'b0;
+ b2m_fsm_s2 <= 1'b0;
+ b2m_fsm_toggle <= 1'b0;
+ memory_core_io_reads_1_rsp_rValidN <= 1'b1;
+ _zz_io_flush <= 1'b0;
+ io_write_cmd_payload_first <= 1'b1;
+ ll_cmd_valid <= 1'b0;
+ ll_readRsp_beatCounter <= 1'b0;
+ end else begin
+ if(channels_0_channelStart) begin
+ channels_0_channelValid <= 1'b1;
+ end
+ if(channels_0_channelCompletion) begin
+ channels_0_channelValid <= 1'b0;
+ end
+ if(channels_0_descriptorStart) begin
+ channels_0_descriptorValid <= 1'b1;
+ end
+ if(channels_0_descriptorCompletion) begin
+ channels_0_descriptorValid <= 1'b0;
+ end
+ channels_0_ctrl_kick <= 1'b0;
+ if(channels_0_channelCompletion) begin
+ channels_0_ctrl_kick <= 1'b0;
+ end
+ if(when_DmaSg_l318) begin
+ if(when_DmaSg_l320) begin
+ if(!when_DmaSg_l322) begin
+ channels_0_ll_valid <= 1'b0;
+ end
+ end
+ end
+ if(channels_0_ll_sgStart) begin
+ channels_0_ll_valid <= 1'b1;
+ end
+ if(channels_0_channelCompletion) begin
+ channels_0_ll_valid <= 1'b0;
+ end
+ channels_0_pop_b2m_memPending <= (_zz_channels_0_pop_b2m_memPending - _zz_channels_0_pop_b2m_memPending_3);
+ if(when_DmaSg_l255) begin
+ channels_0_interrupts_completion_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_1) begin
+ channels_0_interrupts_completion_valid <= 1'b0;
+ end
+ if(when_DmaSg_l255_2) begin
+ channels_0_interrupts_onChannelCompletion_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_3) begin
+ channels_0_interrupts_onChannelCompletion_valid <= 1'b0;
+ end
+ if(channels_0_ll_descriptorUpdated) begin
+ channels_0_interrupts_onLinkedListUpdate_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_4) begin
+ channels_0_interrupts_onLinkedListUpdate_valid <= 1'b0;
+ end
+ if(channels_0_pop_b2m_packetSync) begin
+ channels_0_interrupts_s2mPacket_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_5) begin
+ channels_0_interrupts_s2mPacket_valid <= 1'b0;
+ end
+ if(channels_1_channelStart) begin
+ channels_1_channelValid <= 1'b1;
+ end
+ if(channels_1_channelCompletion) begin
+ channels_1_channelValid <= 1'b0;
+ end
+ if(channels_1_descriptorStart) begin
+ channels_1_descriptorValid <= 1'b1;
+ end
+ if(channels_1_descriptorCompletion) begin
+ channels_1_descriptorValid <= 1'b0;
+ end
+ channels_1_ctrl_kick <= 1'b0;
+ if(channels_1_channelCompletion) begin
+ channels_1_ctrl_kick <= 1'b0;
+ end
+ if(when_DmaSg_l318_1) begin
+ if(when_DmaSg_l320_1) begin
+ if(!when_DmaSg_l322_1) begin
+ channels_1_ll_valid <= 1'b0;
+ end
+ end
+ end
+ if(channels_1_ll_sgStart) begin
+ channels_1_ll_valid <= 1'b1;
+ end
+ if(channels_1_channelCompletion) begin
+ channels_1_ll_valid <= 1'b0;
+ end
+ channels_1_push_m2b_memPending <= (_zz_channels_1_push_m2b_memPending - _zz_channels_1_push_m2b_memPending_3);
+ if(channels_1_descriptorStart) begin
+ channels_1_push_m2b_loadDone <= 1'b0;
+ end
+ if(when_DmaSg_l255_6) begin
+ channels_1_interrupts_completion_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_7) begin
+ channels_1_interrupts_completion_valid <= 1'b0;
+ end
+ if(when_DmaSg_l255_8) begin
+ channels_1_interrupts_onChannelCompletion_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_9) begin
+ channels_1_interrupts_onChannelCompletion_valid <= 1'b0;
+ end
+ if(channels_1_ll_descriptorUpdated) begin
+ channels_1_interrupts_onLinkedListUpdate_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_10) begin
+ channels_1_interrupts_onLinkedListUpdate_valid <= 1'b0;
+ end
+ if(when_package_l12) begin
+ io_inputs_0_payload_last_regNextWhen <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_1) begin
+ io_inputs_0_payload_last_regNextWhen_1 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_2) begin
+ io_inputs_0_payload_last_regNextWhen_2 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_3) begin
+ io_inputs_0_payload_last_regNextWhen_3 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_4) begin
+ io_inputs_0_payload_last_regNextWhen_4 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_5) begin
+ io_inputs_0_payload_last_regNextWhen_5 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_6) begin
+ io_inputs_0_payload_last_regNextWhen_6 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_7) begin
+ io_inputs_0_payload_last_regNextWhen_7 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_8) begin
+ io_inputs_0_payload_last_regNextWhen_8 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_9) begin
+ io_inputs_0_payload_last_regNextWhen_9 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_10) begin
+ io_inputs_0_payload_last_regNextWhen_10 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_11) begin
+ io_inputs_0_payload_last_regNextWhen_11 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_12) begin
+ io_inputs_0_payload_last_regNextWhen_12 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_13) begin
+ io_inputs_0_payload_last_regNextWhen_13 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_14) begin
+ io_inputs_0_payload_last_regNextWhen_14 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_15) begin
+ io_inputs_0_payload_last_regNextWhen_15 <= io_inputs_0_payload_last;
+ end
+ if(when_DmaSg_l758) begin
+ if(when_DmaSg_l760) begin
+ m2b_cmd_s0_valid <= 1'b1;
+ if(when_DmaSg_l763) begin
+ m2b_cmd_s0_priority_roundRobins_0 <= m2b_cmd_s0_priority_contextNext;
+ end
+ if(when_DmaSg_l763_1) begin
+ m2b_cmd_s0_priority_roundRobins_1 <= m2b_cmd_s0_priority_contextNext;
+ end
+ if(when_DmaSg_l763_2) begin
+ m2b_cmd_s0_priority_roundRobins_2 <= m2b_cmd_s0_priority_contextNext;
+ end
+ if(when_DmaSg_l763_3) begin
+ m2b_cmd_s0_priority_roundRobins_3 <= m2b_cmd_s0_priority_contextNext;
+ end
+ m2b_cmd_s0_priority_counter <= (m2b_cmd_s0_priority_counter + 2'b01);
+ if(m2b_cmd_s0_priority_weightLast) begin
+ m2b_cmd_s0_priority_counter <= 2'b00;
+ end
+ end
+ end
+ if(m2b_cmd_s0_valid) begin
+ m2b_cmd_s1_valid <= 1'b1;
+ end
+ if(m2b_cmd_s1_valid) begin
+ if(io_read_cmd_ready) begin
+ m2b_cmd_s0_valid <= 1'b0;
+ m2b_cmd_s1_valid <= 1'b0;
+ if(when_DmaSg_l828) begin
+ if(m2b_cmd_s1_lastBurst) begin
+ channels_1_push_m2b_loadDone <= 1'b1;
+ end
+ end
+ end
+ end
+ if(io_read_rsp_fire) begin
+ m2b_rsp_first <= io_read_rsp_payload_last;
+ end
+ if(when_DmaSg_l758_1) begin
+ if(when_DmaSg_l760_1) begin
+ b2m_fsm_arbiter_logic_valid <= 1'b1;
+ if(when_DmaSg_l763_4) begin
+ b2m_fsm_arbiter_logic_priority_roundRobins_0 <= b2m_fsm_arbiter_logic_priority_contextNext;
+ end
+ if(when_DmaSg_l763_5) begin
+ b2m_fsm_arbiter_logic_priority_roundRobins_1 <= b2m_fsm_arbiter_logic_priority_contextNext;
+ end
+ if(when_DmaSg_l763_6) begin
+ b2m_fsm_arbiter_logic_priority_roundRobins_2 <= b2m_fsm_arbiter_logic_priority_contextNext;
+ end
+ if(when_DmaSg_l763_7) begin
+ b2m_fsm_arbiter_logic_priority_roundRobins_3 <= b2m_fsm_arbiter_logic_priority_contextNext;
+ end
+ b2m_fsm_arbiter_logic_priority_counter <= (b2m_fsm_arbiter_logic_priority_counter + 2'b01);
+ if(b2m_fsm_arbiter_logic_priority_weightLast) begin
+ b2m_fsm_arbiter_logic_priority_counter <= 2'b00;
+ end
+ end
+ end
+ if(b2m_fsm_sel_ready) begin
+ b2m_fsm_sel_valid <= 1'b0;
+ if(b2m_fsm_sel_valid) begin
+ b2m_fsm_arbiter_logic_valid <= 1'b0;
+ end
+ end
+ if(when_DmaSg_l935) begin
+ b2m_fsm_sel_valid <= 1'b1;
+ end
+ b2m_fsm_sel_valid_regNext <= b2m_fsm_sel_valid;
+ b2m_fsm_s1 <= b2m_fsm_s0;
+ if(b2m_fsm_s1) begin
+ b2m_fsm_s2 <= 1'b1;
+ end
+ if(when_DmaSg_l986) begin
+ b2m_fsm_s2 <= 1'b0;
+ end
+ if(when_DmaSg_l1013) begin
+ b2m_fsm_toggle <= (! b2m_fsm_toggle);
+ end
+ if(memory_core_io_reads_1_rsp_valid) begin
+ memory_core_io_reads_1_rsp_rValidN <= 1'b0;
+ end
+ if(memory_core_io_reads_1_rsp_s2mPipe_ready) begin
+ memory_core_io_reads_1_rsp_rValidN <= 1'b1;
+ end
+ _zz_io_flush <= (b2m_fsm_sel_valid && (! b2m_fsm_sel_ready));
+ if(io_write_cmd_fire) begin
+ io_write_cmd_payload_first <= io_write_cmd_payload_last;
+ end
+ if(when_DmaSg_l1160) begin
+ if(when_DmaSg_l1161) begin
+ ll_cmd_valid <= 1'b1;
+ end
+ end else begin
+ if(when_DmaSg_l1177) begin
+ ll_cmd_valid <= 1'b0;
+ end
+ end
+ if(io_sgRead_rsp_fire) begin
+ ll_readRsp_beatCounter <= (ll_readRsp_beatCounter + 1'b1);
+ end
+ if(when_BusSlaveFactory_l377_1) begin
+ if(when_BusSlaveFactory_l379_1) begin
+ channels_0_ctrl_kick <= _zz_channels_0_ctrl_kick[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341) begin
+ if(when_BusSlaveFactory_l347) begin
+ channels_0_interrupts_completion_valid <= _zz_channels_0_interrupts_completion_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_1) begin
+ if(when_BusSlaveFactory_l347_1) begin
+ channels_0_interrupts_onChannelCompletion_valid <= _zz_channels_0_interrupts_onChannelCompletion_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_2) begin
+ if(when_BusSlaveFactory_l347_2) begin
+ channels_0_interrupts_onLinkedListUpdate_valid <= _zz_channels_0_interrupts_onLinkedListUpdate_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_3) begin
+ if(when_BusSlaveFactory_l347_3) begin
+ channels_0_interrupts_s2mPacket_valid <= _zz_channels_0_interrupts_s2mPacket_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_5) begin
+ if(when_BusSlaveFactory_l379_5) begin
+ channels_1_ctrl_kick <= _zz_channels_1_ctrl_kick[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_4) begin
+ if(when_BusSlaveFactory_l347_4) begin
+ channels_1_interrupts_completion_valid <= _zz_channels_1_interrupts_completion_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_5) begin
+ if(when_BusSlaveFactory_l347_5) begin
+ channels_1_interrupts_onChannelCompletion_valid <= _zz_channels_1_interrupts_onChannelCompletion_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_6) begin
+ if(when_BusSlaveFactory_l347_6) begin
+ channels_1_interrupts_onLinkedListUpdate_valid <= _zz_channels_1_interrupts_onLinkedListUpdate_valid[0];
+ end
+ end
+ case(io_ctrl_PADDR)
+ 14'h0078 : begin
+ if(ctrl_doWrite) begin
+ channels_0_ll_onSgStream <= io_ctrl_PWDATA[0];
+ end
+ end
+ 14'h0044 : begin
+ if(ctrl_doWrite) begin
+ channels_0_priority <= io_ctrl_PWDATA[1 : 0];
+ channels_0_weight <= io_ctrl_PWDATA[9 : 8];
+ end
+ end
+ 14'h0050 : begin
+ if(ctrl_doWrite) begin
+ channels_0_interrupts_completion_enable <= io_ctrl_PWDATA[0];
+ channels_0_interrupts_onChannelCompletion_enable <= io_ctrl_PWDATA[2];
+ channels_0_interrupts_onLinkedListUpdate_enable <= io_ctrl_PWDATA[3];
+ channels_0_interrupts_s2mPacket_enable <= io_ctrl_PWDATA[4];
+ end
+ end
+ 14'h00f8 : begin
+ if(ctrl_doWrite) begin
+ channels_1_ll_onSgStream <= io_ctrl_PWDATA[0];
+ end
+ end
+ 14'h00c4 : begin
+ if(ctrl_doWrite) begin
+ channels_1_priority <= io_ctrl_PWDATA[1 : 0];
+ channels_1_weight <= io_ctrl_PWDATA[9 : 8];
+ end
+ end
+ 14'h00d0 : begin
+ if(ctrl_doWrite) begin
+ channels_1_interrupts_completion_enable <= io_ctrl_PWDATA[0];
+ channels_1_interrupts_onChannelCompletion_enable <= io_ctrl_PWDATA[2];
+ channels_1_interrupts_onLinkedListUpdate_enable <= io_ctrl_PWDATA[3];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(channels_0_bytesProbe_incr_valid) begin
+ channels_0_bytesProbe_value <= (_zz_channels_0_bytesProbe_value + 27'h0000001);
+ end
+ if(channels_0_descriptorStart) begin
+ channels_0_ll_packet <= 1'b0;
+ end
+ if(channels_0_descriptorStart) begin
+ channels_0_ll_requireSync <= 1'b0;
+ end
+ if(when_DmaSg_l318) begin
+ channels_0_ll_waitDone <= 1'b0;
+ if(when_DmaSg_l320) begin
+ channels_0_ll_head <= 1'b0;
+ end
+ end
+ if(channels_0_channelStart) begin
+ channels_0_ll_waitDone <= 1'b0;
+ channels_0_ll_head <= 1'b1;
+ end
+ channels_0_fifo_push_ptr <= (channels_0_fifo_push_ptr + channels_0_fifo_push_ptrIncr_value);
+ if(channels_0_channelStart) begin
+ channels_0_fifo_push_ptr <= 11'h0;
+ end
+ channels_0_fifo_pop_ptr <= (channels_0_fifo_pop_ptr + channels_0_fifo_pop_ptrIncr_value);
+ channels_0_fifo_pop_withOverride_backup <= channels_0_fifo_pop_withOverride_backupNext;
+ if(when_DmaSg_l409) begin
+ channels_0_fifo_pop_withOverride_valid <= 1'b0;
+ end
+ if(channels_0_fifo_pop_withOverride_load) begin
+ channels_0_fifo_pop_withOverride_valid <= 1'b1;
+ end
+ channels_0_fifo_pop_withOverride_exposed <= ((! channels_0_fifo_pop_withOverride_valid) ? channels_0_fifo_pop_withOverride_backupNext : _zz_channels_0_fifo_pop_withOverride_exposed);
+ if(channels_0_channelStart) begin
+ channels_0_fifo_pop_withOverride_backup <= 14'h0;
+ channels_0_fifo_pop_withOverride_valid <= 1'b0;
+ end
+ if(channels_0_channelStart) begin
+ channels_0_push_s2b_packetLock <= 1'b0;
+ end
+ if(channels_0_pop_b2m_fire) begin
+ channels_0_pop_b2m_flush <= 1'b0;
+ end
+ if(when_DmaSg_l505) begin
+ channels_0_pop_b2m_packet <= 1'b0;
+ end
+ if(when_DmaSg_l523) begin
+ channels_0_pop_b2m_flush <= 1'b0;
+ channels_0_pop_b2m_packet <= 1'b0;
+ end
+ if(channels_0_pop_b2m_packetSync) begin
+ channels_0_push_s2b_packetLock <= 1'b0;
+ if(when_DmaSg_l532) begin
+ if(!channels_0_push_s2b_completionOnLast) begin
+ if(when_DmaSg_l536) begin
+ channels_0_ll_requireSync <= 1'b1;
+ end
+ end
+ channels_0_ll_packet <= 1'b1;
+ end
+ end
+ if(channels_0_channelStart) begin
+ channels_0_pop_b2m_bytesToSkip <= 4'b0000;
+ channels_0_pop_b2m_flush <= 1'b0;
+ end
+ if(channels_0_descriptorStart) begin
+ channels_0_pop_b2m_bytesLeft <= {1'd0, channels_0_bytes};
+ channels_0_pop_b2m_waitFinalRsp <= 1'b0;
+ end
+ if(channels_0_channelValid) begin
+ if(!channels_0_channelStop) begin
+ if(when_DmaSg_l575) begin
+ if(when_DmaSg_l593) begin
+ channels_0_channelStop <= 1'b1;
+ end
+ end
+ end
+ end
+ channels_0_fifo_pop_ptrIncr_value_regNext <= channels_0_fifo_pop_ptrIncr_value;
+ channels_0_fifo_push_available <= (_zz_channels_0_fifo_push_available - (channels_0_push_memory ? channels_0_fifo_push_availableDecr : channels_0_fifo_push_ptrIncr_value));
+ if(channels_0_channelStart) begin
+ channels_0_fifo_push_ptr <= 11'h0;
+ channels_0_fifo_push_available <= (channels_0_fifo_words + 11'h001);
+ channels_0_fifo_pop_ptr <= 11'h0;
+ end
+ if(when_DmaSg_l625) begin
+ channels_0_bytesProbe_value <= 27'h0;
+ end
+ if(channels_1_bytesProbe_incr_valid) begin
+ channels_1_bytesProbe_value <= (_zz_channels_1_bytesProbe_value + 27'h0000001);
+ end
+ if(channels_1_descriptorStart) begin
+ channels_1_ll_packet <= 1'b0;
+ end
+ if(channels_1_descriptorStart) begin
+ channels_1_ll_requireSync <= 1'b0;
+ end
+ if(when_DmaSg_l318_1) begin
+ channels_1_ll_waitDone <= 1'b0;
+ if(when_DmaSg_l320_1) begin
+ channels_1_ll_head <= 1'b0;
+ end
+ end
+ if(channels_1_channelStart) begin
+ channels_1_ll_waitDone <= 1'b0;
+ channels_1_ll_head <= 1'b1;
+ end
+ channels_1_fifo_push_ptr <= (channels_1_fifo_push_ptr + channels_1_fifo_push_ptrIncr_value);
+ if(channels_1_channelStart) begin
+ channels_1_fifo_push_ptr <= 11'h0;
+ end
+ channels_1_fifo_pop_ptr <= (channels_1_fifo_pop_ptr + channels_1_fifo_pop_ptrIncr_value);
+ channels_1_fifo_pop_withoutOverride_exposed <= (_zz_channels_1_fifo_pop_withoutOverride_exposed - channels_1_fifo_pop_bytesDecr_value);
+ if(channels_1_channelStart) begin
+ channels_1_fifo_pop_withoutOverride_exposed <= 14'h0;
+ end
+ if(channels_1_descriptorStart) begin
+ channels_1_push_m2b_bytesLeft <= channels_1_bytes;
+ end
+ if(when_DmaSg_l474) begin
+ channels_1_pop_b2s_veryLastValid <= 1'b1;
+ end
+ if(channels_1_pop_b2s_veryLastTrigger) begin
+ channels_1_pop_b2s_veryLastPtr <= channels_1_fifo_push_ptrWithBase;
+ channels_1_pop_b2s_veryLastEndPacket <= channels_1_pop_b2s_last;
+ end
+ if(channels_1_channelStart) begin
+ channels_1_pop_b2s_veryLastValid <= 1'b0;
+ end
+ if(channels_1_channelValid) begin
+ if(!channels_1_channelStop) begin
+ if(when_DmaSg_l575_1) begin
+ if(when_DmaSg_l593_1) begin
+ channels_1_channelStop <= 1'b1;
+ end
+ end
+ end
+ end
+ channels_1_fifo_pop_ptrIncr_value_regNext <= channels_1_fifo_pop_ptrIncr_value;
+ channels_1_fifo_push_available <= (_zz_channels_1_fifo_push_available - (channels_1_push_memory ? channels_1_fifo_push_availableDecr : channels_1_fifo_push_ptrIncr_value));
+ if(channels_1_channelStart) begin
+ channels_1_fifo_push_ptr <= 11'h0;
+ channels_1_fifo_push_available <= (channels_1_fifo_words + 11'h001);
+ channels_1_fifo_pop_ptr <= 11'h0;
+ end
+ if(when_DmaSg_l625_1) begin
+ channels_1_bytesProbe_value <= 27'h0;
+ end
+ if(when_DmaSg_l665) begin
+ channels_0_push_s2b_waitFirst <= 1'b0;
+ if(io_inputs_0_payload_last) begin
+ channels_0_push_s2b_packetLock <= 1'b1;
+ end
+ end
+ if(when_DmaSg_l681) begin
+ channels_0_pop_b2m_flush <= 1'b1;
+ end
+ if(when_DmaSg_l682) begin
+ channels_0_pop_b2m_packet <= 1'b1;
+ end
+ if(when_DmaSg_l725) begin
+ if(when_DmaSg_l726) begin
+ channels_1_pop_b2s_veryLastValid <= 1'b0;
+ end
+ end
+ m2b_cmd_s1_address <= m2b_cmd_s0_address;
+ m2b_cmd_s1_length <= m2b_cmd_s0_length;
+ m2b_cmd_s1_lastBurst <= m2b_cmd_s0_lastBurst;
+ m2b_cmd_s1_bytesLeft <= m2b_cmd_s0_bytesLeft;
+ if(m2b_cmd_s1_valid) begin
+ if(io_read_cmd_ready) begin
+ if(when_DmaSg_l828) begin
+ channels_1_push_m2b_address <= m2b_cmd_s1_addressNext;
+ channels_1_push_m2b_bytesLeft <= m2b_cmd_s1_byteLeftNext;
+ end
+ end
+ end
+ if(when_DmaSg_l935) begin
+ b2m_fsm_sel_address <= channels_0_pop_b2m_address;
+ b2m_fsm_sel_ptr <= channels_0_fifo_pop_ptrWithBase;
+ b2m_fsm_sel_ptrMask <= channels_0_fifo_words;
+ b2m_fsm_sel_bytePerBurst <= channels_0_pop_b2m_bytePerBurst;
+ b2m_fsm_sel_bytesInFifo <= channels_0_fifo_pop_bytes;
+ b2m_fsm_sel_flush <= channels_0_pop_b2m_flush;
+ b2m_fsm_sel_packet <= channels_0_pop_b2m_packet;
+ b2m_fsm_sel_bytesLeft <= channels_0_pop_b2m_bytesLeft[25:0];
+ end
+ if(b2m_fsm_s0) begin
+ b2m_fsm_sel_bytesInBurst <= _zz_b2m_fsm_sel_bytesInBurst_3[11:0];
+ end
+ if(b2m_fsm_s1) begin
+ b2m_fsm_beatCounter <= (_zz_b2m_fsm_beatCounter >>> 3'd4);
+ if(when_DmaSg_l996) begin
+ channels_0_pop_b2m_address <= b2m_fsm_addressNext;
+ channels_0_pop_b2m_bytesLeft <= b2m_fsm_bytesLeftNext;
+ if(b2m_fsm_isFinalCmd) begin
+ channels_0_pop_b2m_waitFinalRsp <= 1'b1;
+ end
+ if(when_DmaSg_l1001) begin
+ if(b2m_fsm_sel_flush) begin
+ channels_0_pop_b2m_flush <= 1'b1;
+ end
+ if(b2m_fsm_sel_packet) begin
+ channels_0_pop_b2m_packet <= 1'b1;
+ end
+ end
+ end
+ end
+ if(when_DmaSg_l1033) begin
+ b2m_fsm_sel_ptr <= ((b2m_fsm_sel_ptr & (~ b2m_fsm_sel_ptrMask)) | (_zz_b2m_fsm_sel_ptr & b2m_fsm_sel_ptrMask));
+ end
+ if(memory_core_io_reads_1_rsp_rValidN) begin
+ memory_core_io_reads_1_rsp_rData_data <= memory_core_io_reads_1_rsp_payload_data;
+ memory_core_io_reads_1_rsp_rData_mask <= memory_core_io_reads_1_rsp_payload_mask;
+ memory_core_io_reads_1_rsp_rData_context <= memory_core_io_reads_1_rsp_payload_context;
+ end
+ if(b2m_fsm_aggregate_memoryPort_fire) begin
+ b2m_fsm_aggregate_first <= 1'b0;
+ end
+ if(when_DmaSg_l1050) begin
+ b2m_fsm_aggregate_first <= 1'b1;
+ end
+ b2m_fsm_cmd_maskLastTriggerReg <= b2m_fsm_cmd_maskLastTriggerComb;
+ b2m_fsm_cmd_maskLast <= {(4'b1111 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b1110 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b1101 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b1100 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b1011 <= b2m_fsm_cmd_maskLastTriggerComb),{(_zz_b2m_fsm_cmd_maskLast <= b2m_fsm_cmd_maskLastTriggerComb),{_zz_b2m_fsm_cmd_maskLast_1,{_zz_b2m_fsm_cmd_maskLast_2,_zz_b2m_fsm_cmd_maskLast_3}}}}}}}};
+ if(io_write_cmd_fire) begin
+ b2m_fsm_beatCounter <= (b2m_fsm_beatCounter - 8'h01);
+ end
+ if(when_DmaSg_l1102) begin
+ if(_zz_when_1[0]) begin
+ channels_0_pop_b2m_bytesToSkip <= (b2m_fsm_aggregate_engine_io_output_usedUntil + 4'b0001);
+ end
+ end
+ if(when_DmaSg_l1149) begin
+ ll_cmd_oh_0 <= channels_0_ll_requestLl;
+ ll_cmd_oh_1 <= _zz_ll_arbiter_head_1;
+ end
+ if(when_DmaSg_l1148) begin
+ ll_cmd_ptr <= (_zz_ll_cmd_ptr[0] ? channels_0_ll_ptr : channels_1_ll_ptr);
+ end
+ if(when_DmaSg_l1148_1) begin
+ ll_cmd_ptrNext <= (_zz_ll_cmd_ptrNext[0] ? channels_0_ll_ptrNext : channels_1_ll_ptrNext);
+ end
+ if(when_DmaSg_l1148_2) begin
+ ll_cmd_bytesDone <= channels_0_bytesProbe_value;
+ end
+ if(when_DmaSg_l1148_3) begin
+ ll_cmd_endOfPacket <= (_zz_ll_cmd_endOfPacket[0] ? channels_0_ll_packet : channels_1_ll_packet);
+ end
+ if(when_DmaSg_l1154) begin
+ ll_cmd_isJustASink <= ll_arbiter_isJustASink;
+ end
+ if(when_DmaSg_l1155) begin
+ ll_cmd_doDescriptorStall <= ll_arbiter_doDescriptorStall;
+ end
+ if(when_DmaSg_l1156) begin
+ ll_cmd_onSgStream <= ll_arbiter_onSgStream;
+ end
+ if(when_DmaSg_l1160) begin
+ ll_cmd_oh_0 <= channels_0_ll_requestLl;
+ ll_cmd_oh_1 <= _zz_ll_arbiter_head_1;
+ if(channels_0_ll_requestLl) begin
+ channels_0_ll_waitDone <= 1'b1;
+ channels_0_ll_writeDone <= ll_arbiter_head;
+ channels_0_ll_justASync <= ll_arbiter_isJustASink;
+ channels_0_ll_packet <= 1'b0;
+ channels_0_ll_requireSync <= 1'b0;
+ if(when_DmaSg_l1169) begin
+ channels_0_ll_ptr <= channels_0_ll_ptrNext;
+ end
+ channels_0_ll_readDone <= ll_arbiter_isJustASink;
+ end
+ if(_zz_ll_arbiter_head_1) begin
+ channels_1_ll_waitDone <= 1'b1;
+ channels_1_ll_writeDone <= ll_arbiter_head;
+ channels_1_ll_justASync <= ll_arbiter_isJustASink;
+ channels_1_ll_packet <= 1'b0;
+ channels_1_ll_requireSync <= 1'b0;
+ if(when_DmaSg_l1169_1) begin
+ channels_1_ll_ptr <= channels_1_ll_ptrNext;
+ end
+ channels_1_ll_readDone <= ll_arbiter_isJustASink;
+ end
+ ll_cmd_readFired <= ll_arbiter_isJustASink;
+ ll_cmd_writeFired <= ll_arbiter_head;
+ end
+ if(io_sgRead_cmd_fire) begin
+ ll_cmd_readFired <= 1'b1;
+ end
+ if(io_sgWrite_cmd_fire) begin
+ ll_cmd_writeFired <= 1'b1;
+ end
+ if(io_sgRead_rsp_fire) begin
+ if(when_DmaSg_l1248) begin
+ if(ll_readRsp_oh_1) begin
+ channels_1_push_m2b_address <= io_sgRead_rsp_payload_fragment_data[95 : 64];
+ end
+ end
+ if(when_DmaSg_l1248_1) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_pop_b2m_address <= io_sgRead_rsp_payload_fragment_data[31 : 0];
+ end
+ end
+ if(when_DmaSg_l1248_2) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_ll_ptrNext <= io_sgRead_rsp_payload_fragment_data[95 : 64];
+ end
+ if(ll_readRsp_oh_1) begin
+ channels_1_ll_ptrNext <= io_sgRead_rsp_payload_fragment_data[95 : 64];
+ end
+ end
+ if(when_DmaSg_l1248_3) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_bytes <= io_sgRead_rsp_payload_fragment_data[57 : 32];
+ end
+ if(ll_readRsp_oh_1) begin
+ channels_1_bytes <= io_sgRead_rsp_payload_fragment_data[57 : 32];
+ end
+ end
+ if(when_DmaSg_l1248_4) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_ll_controlNoCompletion <= io_sgRead_rsp_payload_fragment_data[63];
+ end
+ if(ll_readRsp_oh_1) begin
+ channels_1_ll_controlNoCompletion <= io_sgRead_rsp_payload_fragment_data[63];
+ end
+ end
+ if(when_DmaSg_l1248_5) begin
+ if(ll_readRsp_oh_1) begin
+ channels_1_pop_b2s_last <= io_sgRead_rsp_payload_fragment_data[62];
+ end
+ end
+ if(when_DmaSg_l1248_6) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_ll_gotDescriptorStall <= io_sgRead_rsp_payload_fragment_data[31];
+ end
+ if(ll_readRsp_oh_1) begin
+ channels_1_ll_gotDescriptorStall <= io_sgRead_rsp_payload_fragment_data[31];
+ end
+ end
+ if(when_DmaSg_l1271) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_ll_readDone <= 1'b1;
+ end
+ if(ll_readRsp_oh_1) begin
+ channels_1_ll_readDone <= 1'b1;
+ end
+ end
+ end
+ if(io_sgWrite_rsp_fire) begin
+ if(ll_writeRsp_oh_0) begin
+ channels_0_ll_writeDone <= 1'b1;
+ end
+ if(ll_writeRsp_oh_1) begin
+ channels_1_ll_writeDone <= 1'b1;
+ end
+ end
+ case(io_ctrl_PADDR)
+ 14'h000c : begin
+ if(ctrl_doWrite) begin
+ channels_0_push_memory <= io_ctrl_PWDATA[12];
+ channels_0_push_s2b_completionOnLast <= io_ctrl_PWDATA[13];
+ channels_0_push_s2b_waitFirst <= io_ctrl_PWDATA[14];
+ end
+ end
+ 14'h001c : begin
+ if(ctrl_doWrite) begin
+ channels_0_pop_memory <= io_ctrl_PWDATA[12];
+ end
+ end
+ 14'h002c : begin
+ if(ctrl_doWrite) begin
+ channels_0_channelStop <= io_ctrl_PWDATA[2];
+ end
+ end
+ 14'h0020 : begin
+ if(ctrl_doWrite) begin
+ channels_0_bytes <= io_ctrl_PWDATA[25 : 0];
+ end
+ end
+ 14'h008c : begin
+ if(ctrl_doWrite) begin
+ channels_1_push_memory <= io_ctrl_PWDATA[12];
+ end
+ end
+ 14'h0098 : begin
+ if(ctrl_doWrite) begin
+ channels_1_pop_b2s_sinkId <= io_ctrl_PWDATA[19 : 16];
+ end
+ end
+ 14'h009c : begin
+ if(ctrl_doWrite) begin
+ channels_1_pop_memory <= io_ctrl_PWDATA[12];
+ channels_1_pop_b2s_last <= io_ctrl_PWDATA[13];
+ end
+ end
+ 14'h00ac : begin
+ if(ctrl_doWrite) begin
+ channels_1_channelStop <= io_ctrl_PWDATA[2];
+ end
+ end
+ 14'h00a0 : begin
+ if(ctrl_doWrite) begin
+ channels_1_bytes <= io_ctrl_PWDATA[25 : 0];
+ end
+ end
+ default : begin
+ end
+ endcase
+ if(when_Apb3SlaveFactory_l81) begin
+ if(ctrl_doWrite) begin
+ channels_0_pop_b2m_address[31 : 0] <= io_ctrl_PWDATA[31 : 0];
+ end
+ end
+ if(when_Apb3SlaveFactory_l81_1) begin
+ if(ctrl_doWrite) begin
+ channels_0_ll_ptrNext[31 : 0] <= io_ctrl_PWDATA[31 : 0];
+ end
+ end
+ if(when_Apb3SlaveFactory_l81_2) begin
+ if(ctrl_doWrite) begin
+ channels_1_push_m2b_address[31 : 0] <= io_ctrl_PWDATA[31 : 0];
+ end
+ end
+ if(when_Apb3SlaveFactory_l81_3) begin
+ if(ctrl_doWrite) begin
+ channels_1_ll_ptrNext[31 : 0] <= io_ctrl_PWDATA[31 : 0];
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamArbiter_1_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_inputs_0_valid,
+ output wire io_inputs_0_ready,
+ input wire io_inputs_0_payload_last,
+ input wire [0:0] io_inputs_0_payload_fragment_source,
+ input wire [0:0] io_inputs_0_payload_fragment_opcode,
+ input wire [31:0] io_inputs_0_payload_fragment_address,
+ input wire [11:0] io_inputs_0_payload_fragment_length,
+ input wire [127:0] io_inputs_0_payload_fragment_data,
+ input wire [15:0] io_inputs_0_payload_fragment_mask,
+ input wire [12:0] io_inputs_0_payload_fragment_context,
+ input wire io_inputs_1_valid,
+ output wire io_inputs_1_ready,
+ input wire io_inputs_1_payload_last,
+ input wire [0:0] io_inputs_1_payload_fragment_source,
+ input wire [0:0] io_inputs_1_payload_fragment_opcode,
+ input wire [31:0] io_inputs_1_payload_fragment_address,
+ input wire [11:0] io_inputs_1_payload_fragment_length,
+ input wire [127:0] io_inputs_1_payload_fragment_data,
+ input wire [15:0] io_inputs_1_payload_fragment_mask,
+ input wire [12:0] io_inputs_1_payload_fragment_context,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire io_output_payload_last,
+ output wire [0:0] io_output_payload_fragment_source,
+ output wire [0:0] io_output_payload_fragment_opcode,
+ output wire [31:0] io_output_payload_fragment_address,
+ output wire [11:0] io_output_payload_fragment_length,
+ output wire [127:0] io_output_payload_fragment_data,
+ output wire [15:0] io_output_payload_fragment_mask,
+ output wire [12:0] io_output_payload_fragment_context,
+ output wire [0:0] io_chosen,
+ output wire [1:0] io_chosenOH,
+ input wire clk,
+ input wire reset
+);
+
+ wire [3:0] _zz__zz_maskProposal_0_2;
+ wire [3:0] _zz__zz_maskProposal_0_2_1;
+ wire [1:0] _zz__zz_maskProposal_0_2_2;
+ reg locked;
+ wire maskProposal_0;
+ wire maskProposal_1;
+ reg maskLocked_0;
+ reg maskLocked_1;
+ wire maskRouted_0;
+ wire maskRouted_1;
+ wire [1:0] _zz_maskProposal_0;
+ wire [3:0] _zz_maskProposal_0_1;
+ wire [3:0] _zz_maskProposal_0_2;
+ wire [1:0] _zz_maskProposal_0_3;
+ wire io_output_fire;
+ wire when_Stream_l683;
+ wire _zz_io_chosen;
+
+ assign _zz__zz_maskProposal_0_2 = (_zz_maskProposal_0_1 - _zz__zz_maskProposal_0_2_1);
+ assign _zz__zz_maskProposal_0_2_2 = {maskLocked_0,maskLocked_1};
+ assign _zz__zz_maskProposal_0_2_1 = {2'd0, _zz__zz_maskProposal_0_2_2};
+ assign maskRouted_0 = (locked ? maskLocked_0 : maskProposal_0);
+ assign maskRouted_1 = (locked ? maskLocked_1 : maskProposal_1);
+ assign _zz_maskProposal_0 = {io_inputs_1_valid,io_inputs_0_valid};
+ assign _zz_maskProposal_0_1 = {_zz_maskProposal_0,_zz_maskProposal_0};
+ assign _zz_maskProposal_0_2 = (_zz_maskProposal_0_1 & (~ _zz__zz_maskProposal_0_2));
+ assign _zz_maskProposal_0_3 = (_zz_maskProposal_0_2[3 : 2] | _zz_maskProposal_0_2[1 : 0]);
+ assign maskProposal_0 = _zz_maskProposal_0_3[0];
+ assign maskProposal_1 = _zz_maskProposal_0_3[1];
+ assign io_output_fire = (io_output_valid && io_output_ready);
+ assign when_Stream_l683 = (io_output_fire && io_output_payload_last);
+ assign io_output_valid = ((io_inputs_0_valid && maskRouted_0) || (io_inputs_1_valid && maskRouted_1));
+ assign io_output_payload_last = (maskRouted_0 ? io_inputs_0_payload_last : io_inputs_1_payload_last);
+ assign io_output_payload_fragment_source = (maskRouted_0 ? io_inputs_0_payload_fragment_source : io_inputs_1_payload_fragment_source);
+ assign io_output_payload_fragment_opcode = (maskRouted_0 ? io_inputs_0_payload_fragment_opcode : io_inputs_1_payload_fragment_opcode);
+ assign io_output_payload_fragment_address = (maskRouted_0 ? io_inputs_0_payload_fragment_address : io_inputs_1_payload_fragment_address);
+ assign io_output_payload_fragment_length = (maskRouted_0 ? io_inputs_0_payload_fragment_length : io_inputs_1_payload_fragment_length);
+ assign io_output_payload_fragment_data = (maskRouted_0 ? io_inputs_0_payload_fragment_data : io_inputs_1_payload_fragment_data);
+ assign io_output_payload_fragment_mask = (maskRouted_0 ? io_inputs_0_payload_fragment_mask : io_inputs_1_payload_fragment_mask);
+ assign io_output_payload_fragment_context = (maskRouted_0 ? io_inputs_0_payload_fragment_context : io_inputs_1_payload_fragment_context);
+ assign io_inputs_0_ready = (maskRouted_0 && io_output_ready);
+ assign io_inputs_1_ready = (maskRouted_1 && io_output_ready);
+ assign io_chosenOH = {maskRouted_1,maskRouted_0};
+ assign _zz_io_chosen = io_chosenOH[1];
+ assign io_chosen = _zz_io_chosen;
+ always @(posedge clk) begin
+ if(reset) begin
+ locked <= 1'b0;
+ maskLocked_0 <= 1'b0;
+ maskLocked_1 <= 1'b1;
+ end else begin
+ if(io_output_valid) begin
+ maskLocked_0 <= maskRouted_0;
+ maskLocked_1 <= maskRouted_1;
+ end
+ if(io_output_valid) begin
+ locked <= 1'b1;
+ end
+ if(when_Stream_l683) begin
+ locked <= 1'b0;
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamArbiter_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_inputs_0_valid,
+ output wire io_inputs_0_ready,
+ input wire io_inputs_0_payload_last,
+ input wire [0:0] io_inputs_0_payload_fragment_source,
+ input wire [0:0] io_inputs_0_payload_fragment_opcode,
+ input wire [31:0] io_inputs_0_payload_fragment_address,
+ input wire [11:0] io_inputs_0_payload_fragment_length,
+ input wire [20:0] io_inputs_0_payload_fragment_context,
+ input wire io_inputs_1_valid,
+ output wire io_inputs_1_ready,
+ input wire io_inputs_1_payload_last,
+ input wire [0:0] io_inputs_1_payload_fragment_source,
+ input wire [0:0] io_inputs_1_payload_fragment_opcode,
+ input wire [31:0] io_inputs_1_payload_fragment_address,
+ input wire [11:0] io_inputs_1_payload_fragment_length,
+ input wire [20:0] io_inputs_1_payload_fragment_context,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire io_output_payload_last,
+ output wire [0:0] io_output_payload_fragment_source,
+ output wire [0:0] io_output_payload_fragment_opcode,
+ output wire [31:0] io_output_payload_fragment_address,
+ output wire [11:0] io_output_payload_fragment_length,
+ output wire [20:0] io_output_payload_fragment_context,
+ output wire [0:0] io_chosen,
+ output wire [1:0] io_chosenOH,
+ input wire clk,
+ input wire reset
+);
+
+ wire [3:0] _zz__zz_maskProposal_0_2;
+ wire [3:0] _zz__zz_maskProposal_0_2_1;
+ wire [1:0] _zz__zz_maskProposal_0_2_2;
+ reg locked;
+ wire maskProposal_0;
+ wire maskProposal_1;
+ reg maskLocked_0;
+ reg maskLocked_1;
+ wire maskRouted_0;
+ wire maskRouted_1;
+ wire [1:0] _zz_maskProposal_0;
+ wire [3:0] _zz_maskProposal_0_1;
+ wire [3:0] _zz_maskProposal_0_2;
+ wire [1:0] _zz_maskProposal_0_3;
+ wire io_output_fire;
+ wire when_Stream_l683;
+ wire _zz_io_chosen;
+
+ assign _zz__zz_maskProposal_0_2 = (_zz_maskProposal_0_1 - _zz__zz_maskProposal_0_2_1);
+ assign _zz__zz_maskProposal_0_2_2 = {maskLocked_0,maskLocked_1};
+ assign _zz__zz_maskProposal_0_2_1 = {2'd0, _zz__zz_maskProposal_0_2_2};
+ assign maskRouted_0 = (locked ? maskLocked_0 : maskProposal_0);
+ assign maskRouted_1 = (locked ? maskLocked_1 : maskProposal_1);
+ assign _zz_maskProposal_0 = {io_inputs_1_valid,io_inputs_0_valid};
+ assign _zz_maskProposal_0_1 = {_zz_maskProposal_0,_zz_maskProposal_0};
+ assign _zz_maskProposal_0_2 = (_zz_maskProposal_0_1 & (~ _zz__zz_maskProposal_0_2));
+ assign _zz_maskProposal_0_3 = (_zz_maskProposal_0_2[3 : 2] | _zz_maskProposal_0_2[1 : 0]);
+ assign maskProposal_0 = _zz_maskProposal_0_3[0];
+ assign maskProposal_1 = _zz_maskProposal_0_3[1];
+ assign io_output_fire = (io_output_valid && io_output_ready);
+ assign when_Stream_l683 = (io_output_fire && io_output_payload_last);
+ assign io_output_valid = ((io_inputs_0_valid && maskRouted_0) || (io_inputs_1_valid && maskRouted_1));
+ assign io_output_payload_last = (maskRouted_0 ? io_inputs_0_payload_last : io_inputs_1_payload_last);
+ assign io_output_payload_fragment_source = (maskRouted_0 ? io_inputs_0_payload_fragment_source : io_inputs_1_payload_fragment_source);
+ assign io_output_payload_fragment_opcode = (maskRouted_0 ? io_inputs_0_payload_fragment_opcode : io_inputs_1_payload_fragment_opcode);
+ assign io_output_payload_fragment_address = (maskRouted_0 ? io_inputs_0_payload_fragment_address : io_inputs_1_payload_fragment_address);
+ assign io_output_payload_fragment_length = (maskRouted_0 ? io_inputs_0_payload_fragment_length : io_inputs_1_payload_fragment_length);
+ assign io_output_payload_fragment_context = (maskRouted_0 ? io_inputs_0_payload_fragment_context : io_inputs_1_payload_fragment_context);
+ assign io_inputs_0_ready = (maskRouted_0 && io_output_ready);
+ assign io_inputs_1_ready = (maskRouted_1 && io_output_ready);
+ assign io_chosenOH = {maskRouted_1,maskRouted_0};
+ assign _zz_io_chosen = io_chosenOH[1];
+ assign io_chosen = _zz_io_chosen;
+ always @(posedge clk) begin
+ if(reset) begin
+ locked <= 1'b0;
+ maskLocked_0 <= 1'b0;
+ maskLocked_1 <= 1'b1;
+ end else begin
+ if(io_output_valid) begin
+ maskLocked_0 <= maskRouted_0;
+ maskLocked_1 <= maskRouted_1;
+ end
+ if(io_output_valid) begin
+ locked <= 1'b1;
+ end
+ if(when_Stream_l683) begin
+ locked <= 1'b0;
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BufferCC_5_a048ca8f51874147a1cd65d43e6523ef (
+ input wire [4:0] io_dataIn,
+ output wire [4:0] io_dataOut,
+ input wire dat1_o_clk,
+ input wire dat1_o_reset
+);
+
+ (* async_reg = "true" *) reg [4:0] buffers_0;
+ (* async_reg = "true" *) reg [4:0] buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge dat1_o_clk) begin
+ if(dat1_o_reset) begin
+ buffers_0 <= 5'h0;
+ buffers_1 <= 5'h0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+//EfxDMA_BufferCC_4 replaced by EfxDMA_BufferCC_3_a048ca8f51874147a1cd65d43e6523ef
+
+module EfxDMA_BufferCC_3_a048ca8f51874147a1cd65d43e6523ef (
+ input wire [4:0] io_dataIn,
+ output wire [4:0] io_dataOut,
+ input wire clk,
+ input wire reset
+);
+
+ (* async_reg = "true" *) reg [4:0] buffers_0;
+ (* async_reg = "true" *) reg [4:0] buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge clk) begin
+ if(reset) begin
+ buffers_0 <= 5'h0;
+ buffers_1 <= 5'h0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BufferCC_2_a048ca8f51874147a1cd65d43e6523ef (
+ input wire [4:0] io_dataIn,
+ output wire [4:0] io_dataOut,
+ input wire dat0_i_clk,
+ input wire dat0_i_reset
+);
+
+ (* async_reg = "true" *) reg [4:0] buffers_0;
+ (* async_reg = "true" *) reg [4:0] buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge dat0_i_clk) begin
+ if(dat0_i_reset) begin
+ buffers_0 <= 5'h0;
+ buffers_1 <= 5'h0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbContextRemover_1_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_cmd_valid,
+ output reg io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [127:0] io_input_cmd_payload_fragment_data,
+ input wire [15:0] io_input_cmd_payload_fragment_mask,
+ input wire [13:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [13:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ output wire [127:0] io_output_cmd_payload_fragment_data,
+ output wire [15:0] io_output_cmd_payload_fragment_mask,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire clk,
+ input wire reset
+);
+
+ reg fifoFork_thrown_translated_fifo_io_pop_ready;
+ wire fifoFork_thrown_translated_fifo_io_push_ready;
+ wire fifoFork_thrown_translated_fifo_io_pop_valid;
+ wire [13:0] fifoFork_thrown_translated_fifo_io_pop_payload_context;
+ wire [2:0] fifoFork_thrown_translated_fifo_io_occupancy;
+ wire [2:0] fifoFork_thrown_translated_fifo_io_availability;
+ wire fifoFork_valid;
+ reg fifoFork_ready;
+ wire fifoFork_payload_last;
+ wire [0:0] fifoFork_payload_fragment_opcode;
+ wire [31:0] fifoFork_payload_fragment_address;
+ wire [11:0] fifoFork_payload_fragment_length;
+ wire [127:0] fifoFork_payload_fragment_data;
+ wire [15:0] fifoFork_payload_fragment_mask;
+ wire [13:0] fifoFork_payload_fragment_context;
+ wire cmdFork_valid;
+ wire cmdFork_ready;
+ wire cmdFork_payload_last;
+ wire [0:0] cmdFork_payload_fragment_opcode;
+ wire [31:0] cmdFork_payload_fragment_address;
+ wire [11:0] cmdFork_payload_fragment_length;
+ wire [127:0] cmdFork_payload_fragment_data;
+ wire [15:0] cmdFork_payload_fragment_mask;
+ wire [13:0] cmdFork_payload_fragment_context;
+ reg io_input_cmd_fork2_logic_linkEnable_0;
+ reg io_input_cmd_fork2_logic_linkEnable_1;
+ wire when_Stream_l1063;
+ wire when_Stream_l1063_1;
+ wire fifoFork_fire;
+ wire cmdFork_fire;
+ wire [13:0] pushCtx_context;
+ reg fifoFork_payload_first;
+ wire when_Stream_l445;
+ reg fifoFork_thrown_valid;
+ wire fifoFork_thrown_ready;
+ wire fifoFork_thrown_payload_last;
+ wire [0:0] fifoFork_thrown_payload_fragment_opcode;
+ wire [31:0] fifoFork_thrown_payload_fragment_address;
+ wire [11:0] fifoFork_thrown_payload_fragment_length;
+ wire [127:0] fifoFork_thrown_payload_fragment_data;
+ wire [15:0] fifoFork_thrown_payload_fragment_mask;
+ wire [13:0] fifoFork_thrown_payload_fragment_context;
+ wire fifoFork_thrown_translated_valid;
+ wire fifoFork_thrown_translated_ready;
+ wire [13:0] fifoFork_thrown_translated_payload_context;
+ wire popCtx_valid;
+ wire popCtx_ready;
+ wire [13:0] popCtx_payload_context;
+ reg fifoFork_thrown_translated_fifo_io_pop_rValid;
+ reg [13:0] fifoFork_thrown_translated_fifo_io_pop_rData_context;
+ wire when_Stream_l375;
+ wire _zz_io_input_rsp_valid;
+
+ EfxDMA_StreamFifo_1_a048ca8f51874147a1cd65d43e6523ef fifoFork_thrown_translated_fifo (
+ .io_push_valid (fifoFork_thrown_translated_valid ), //i
+ .io_push_ready (fifoFork_thrown_translated_fifo_io_push_ready ), //o
+ .io_push_payload_context (fifoFork_thrown_translated_payload_context[13:0] ), //i
+ .io_pop_valid (fifoFork_thrown_translated_fifo_io_pop_valid ), //o
+ .io_pop_ready (fifoFork_thrown_translated_fifo_io_pop_ready ), //i
+ .io_pop_payload_context (fifoFork_thrown_translated_fifo_io_pop_payload_context[13:0]), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (fifoFork_thrown_translated_fifo_io_occupancy[2:0] ), //o
+ .io_availability (fifoFork_thrown_translated_fifo_io_availability[2:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ io_input_cmd_ready = 1'b1;
+ if(when_Stream_l1063) begin
+ io_input_cmd_ready = 1'b0;
+ end
+ if(when_Stream_l1063_1) begin
+ io_input_cmd_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l1063 = ((! fifoFork_ready) && io_input_cmd_fork2_logic_linkEnable_0);
+ assign when_Stream_l1063_1 = ((! cmdFork_ready) && io_input_cmd_fork2_logic_linkEnable_1);
+ assign fifoFork_valid = (io_input_cmd_valid && io_input_cmd_fork2_logic_linkEnable_0);
+ assign fifoFork_payload_last = io_input_cmd_payload_last;
+ assign fifoFork_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign fifoFork_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign fifoFork_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign fifoFork_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign fifoFork_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign fifoFork_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign fifoFork_fire = (fifoFork_valid && fifoFork_ready);
+ assign cmdFork_valid = (io_input_cmd_valid && io_input_cmd_fork2_logic_linkEnable_1);
+ assign cmdFork_payload_last = io_input_cmd_payload_last;
+ assign cmdFork_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign cmdFork_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign cmdFork_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign cmdFork_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign cmdFork_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign cmdFork_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign cmdFork_fire = (cmdFork_valid && cmdFork_ready);
+ assign io_output_cmd_valid = cmdFork_valid;
+ assign cmdFork_ready = io_output_cmd_ready;
+ assign io_output_cmd_payload_last = cmdFork_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = cmdFork_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = cmdFork_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = cmdFork_payload_fragment_length;
+ assign io_output_cmd_payload_fragment_data = cmdFork_payload_fragment_data;
+ assign io_output_cmd_payload_fragment_mask = cmdFork_payload_fragment_mask;
+ assign pushCtx_context = fifoFork_payload_fragment_context;
+ assign when_Stream_l445 = (! fifoFork_payload_first);
+ always @(*) begin
+ fifoFork_thrown_valid = fifoFork_valid;
+ if(when_Stream_l445) begin
+ fifoFork_thrown_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ fifoFork_ready = fifoFork_thrown_ready;
+ if(when_Stream_l445) begin
+ fifoFork_ready = 1'b1;
+ end
+ end
+
+ assign fifoFork_thrown_payload_last = fifoFork_payload_last;
+ assign fifoFork_thrown_payload_fragment_opcode = fifoFork_payload_fragment_opcode;
+ assign fifoFork_thrown_payload_fragment_address = fifoFork_payload_fragment_address;
+ assign fifoFork_thrown_payload_fragment_length = fifoFork_payload_fragment_length;
+ assign fifoFork_thrown_payload_fragment_data = fifoFork_payload_fragment_data;
+ assign fifoFork_thrown_payload_fragment_mask = fifoFork_payload_fragment_mask;
+ assign fifoFork_thrown_payload_fragment_context = fifoFork_payload_fragment_context;
+ assign fifoFork_thrown_translated_valid = fifoFork_thrown_valid;
+ assign fifoFork_thrown_ready = fifoFork_thrown_translated_ready;
+ assign fifoFork_thrown_translated_payload_context = pushCtx_context;
+ assign fifoFork_thrown_translated_ready = fifoFork_thrown_translated_fifo_io_push_ready;
+ always @(*) begin
+ fifoFork_thrown_translated_fifo_io_pop_ready = popCtx_ready;
+ if(when_Stream_l375) begin
+ fifoFork_thrown_translated_fifo_io_pop_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! popCtx_valid);
+ assign popCtx_valid = fifoFork_thrown_translated_fifo_io_pop_rValid;
+ assign popCtx_payload_context = fifoFork_thrown_translated_fifo_io_pop_rData_context;
+ assign popCtx_ready = ((io_output_rsp_valid && io_output_rsp_payload_last) && io_input_rsp_ready);
+ assign _zz_io_input_rsp_valid = (! (! popCtx_valid));
+ assign io_output_rsp_ready = (io_input_rsp_ready && _zz_io_input_rsp_valid);
+ assign io_input_rsp_valid = (io_output_rsp_valid && _zz_io_input_rsp_valid);
+ assign io_input_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_context = popCtx_payload_context;
+ always @(posedge clk) begin
+ if(reset) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ fifoFork_payload_first <= 1'b1;
+ fifoFork_thrown_translated_fifo_io_pop_rValid <= 1'b0;
+ end else begin
+ if(fifoFork_fire) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdFork_fire) begin
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_cmd_ready) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(fifoFork_fire) begin
+ fifoFork_payload_first <= fifoFork_payload_last;
+ end
+ if(fifoFork_thrown_translated_fifo_io_pop_ready) begin
+ fifoFork_thrown_translated_fifo_io_pop_rValid <= fifoFork_thrown_translated_fifo_io_pop_valid;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(fifoFork_thrown_translated_fifo_io_pop_ready) begin
+ fifoFork_thrown_translated_fifo_io_pop_rData_context <= fifoFork_thrown_translated_fifo_io_pop_payload_context;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbContextRemover_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_cmd_valid,
+ output reg io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [21:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [127:0] io_input_rsp_payload_fragment_data,
+ output wire [21:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [127:0] io_output_rsp_payload_fragment_data,
+ input wire clk,
+ input wire reset
+);
+
+ reg fifoFork_thrown_translated_fifo_io_pop_ready;
+ wire fifoFork_thrown_translated_fifo_io_push_ready;
+ wire fifoFork_thrown_translated_fifo_io_pop_valid;
+ wire [21:0] fifoFork_thrown_translated_fifo_io_pop_payload_context;
+ wire [2:0] fifoFork_thrown_translated_fifo_io_occupancy;
+ wire [2:0] fifoFork_thrown_translated_fifo_io_availability;
+ wire fifoFork_valid;
+ reg fifoFork_ready;
+ wire fifoFork_payload_last;
+ wire [0:0] fifoFork_payload_fragment_opcode;
+ wire [31:0] fifoFork_payload_fragment_address;
+ wire [11:0] fifoFork_payload_fragment_length;
+ wire [21:0] fifoFork_payload_fragment_context;
+ wire cmdFork_valid;
+ wire cmdFork_ready;
+ wire cmdFork_payload_last;
+ wire [0:0] cmdFork_payload_fragment_opcode;
+ wire [31:0] cmdFork_payload_fragment_address;
+ wire [11:0] cmdFork_payload_fragment_length;
+ wire [21:0] cmdFork_payload_fragment_context;
+ reg io_input_cmd_fork2_logic_linkEnable_0;
+ reg io_input_cmd_fork2_logic_linkEnable_1;
+ wire when_Stream_l1063;
+ wire when_Stream_l1063_1;
+ wire fifoFork_fire;
+ wire cmdFork_fire;
+ wire [21:0] pushCtx_context;
+ reg fifoFork_payload_first;
+ wire when_Stream_l445;
+ reg fifoFork_thrown_valid;
+ wire fifoFork_thrown_ready;
+ wire fifoFork_thrown_payload_last;
+ wire [0:0] fifoFork_thrown_payload_fragment_opcode;
+ wire [31:0] fifoFork_thrown_payload_fragment_address;
+ wire [11:0] fifoFork_thrown_payload_fragment_length;
+ wire [21:0] fifoFork_thrown_payload_fragment_context;
+ wire fifoFork_thrown_translated_valid;
+ wire fifoFork_thrown_translated_ready;
+ wire [21:0] fifoFork_thrown_translated_payload_context;
+ wire popCtx_valid;
+ wire popCtx_ready;
+ wire [21:0] popCtx_payload_context;
+ reg fifoFork_thrown_translated_fifo_io_pop_rValid;
+ reg [21:0] fifoFork_thrown_translated_fifo_io_pop_rData_context;
+ wire when_Stream_l375;
+ wire _zz_io_input_rsp_valid;
+
+ EfxDMA_StreamFifo_a048ca8f51874147a1cd65d43e6523ef fifoFork_thrown_translated_fifo (
+ .io_push_valid (fifoFork_thrown_translated_valid ), //i
+ .io_push_ready (fifoFork_thrown_translated_fifo_io_push_ready ), //o
+ .io_push_payload_context (fifoFork_thrown_translated_payload_context[21:0] ), //i
+ .io_pop_valid (fifoFork_thrown_translated_fifo_io_pop_valid ), //o
+ .io_pop_ready (fifoFork_thrown_translated_fifo_io_pop_ready ), //i
+ .io_pop_payload_context (fifoFork_thrown_translated_fifo_io_pop_payload_context[21:0]), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (fifoFork_thrown_translated_fifo_io_occupancy[2:0] ), //o
+ .io_availability (fifoFork_thrown_translated_fifo_io_availability[2:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ io_input_cmd_ready = 1'b1;
+ if(when_Stream_l1063) begin
+ io_input_cmd_ready = 1'b0;
+ end
+ if(when_Stream_l1063_1) begin
+ io_input_cmd_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l1063 = ((! fifoFork_ready) && io_input_cmd_fork2_logic_linkEnable_0);
+ assign when_Stream_l1063_1 = ((! cmdFork_ready) && io_input_cmd_fork2_logic_linkEnable_1);
+ assign fifoFork_valid = (io_input_cmd_valid && io_input_cmd_fork2_logic_linkEnable_0);
+ assign fifoFork_payload_last = io_input_cmd_payload_last;
+ assign fifoFork_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign fifoFork_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign fifoFork_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign fifoFork_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign fifoFork_fire = (fifoFork_valid && fifoFork_ready);
+ assign cmdFork_valid = (io_input_cmd_valid && io_input_cmd_fork2_logic_linkEnable_1);
+ assign cmdFork_payload_last = io_input_cmd_payload_last;
+ assign cmdFork_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign cmdFork_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign cmdFork_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign cmdFork_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign cmdFork_fire = (cmdFork_valid && cmdFork_ready);
+ assign io_output_cmd_valid = cmdFork_valid;
+ assign cmdFork_ready = io_output_cmd_ready;
+ assign io_output_cmd_payload_last = cmdFork_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = cmdFork_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = cmdFork_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = cmdFork_payload_fragment_length;
+ assign pushCtx_context = fifoFork_payload_fragment_context;
+ assign when_Stream_l445 = (! fifoFork_payload_first);
+ always @(*) begin
+ fifoFork_thrown_valid = fifoFork_valid;
+ if(when_Stream_l445) begin
+ fifoFork_thrown_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ fifoFork_ready = fifoFork_thrown_ready;
+ if(when_Stream_l445) begin
+ fifoFork_ready = 1'b1;
+ end
+ end
+
+ assign fifoFork_thrown_payload_last = fifoFork_payload_last;
+ assign fifoFork_thrown_payload_fragment_opcode = fifoFork_payload_fragment_opcode;
+ assign fifoFork_thrown_payload_fragment_address = fifoFork_payload_fragment_address;
+ assign fifoFork_thrown_payload_fragment_length = fifoFork_payload_fragment_length;
+ assign fifoFork_thrown_payload_fragment_context = fifoFork_payload_fragment_context;
+ assign fifoFork_thrown_translated_valid = fifoFork_thrown_valid;
+ assign fifoFork_thrown_ready = fifoFork_thrown_translated_ready;
+ assign fifoFork_thrown_translated_payload_context = pushCtx_context;
+ assign fifoFork_thrown_translated_ready = fifoFork_thrown_translated_fifo_io_push_ready;
+ always @(*) begin
+ fifoFork_thrown_translated_fifo_io_pop_ready = popCtx_ready;
+ if(when_Stream_l375) begin
+ fifoFork_thrown_translated_fifo_io_pop_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! popCtx_valid);
+ assign popCtx_valid = fifoFork_thrown_translated_fifo_io_pop_rValid;
+ assign popCtx_payload_context = fifoFork_thrown_translated_fifo_io_pop_rData_context;
+ assign popCtx_ready = ((io_output_rsp_valid && io_output_rsp_payload_last) && io_input_rsp_ready);
+ assign _zz_io_input_rsp_valid = (! (! popCtx_valid));
+ assign io_output_rsp_ready = (io_input_rsp_ready && _zz_io_input_rsp_valid);
+ assign io_input_rsp_valid = (io_output_rsp_valid && _zz_io_input_rsp_valid);
+ assign io_input_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ assign io_input_rsp_payload_fragment_context = popCtx_payload_context;
+ always @(posedge clk) begin
+ if(reset) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ fifoFork_payload_first <= 1'b1;
+ fifoFork_thrown_translated_fifo_io_pop_rValid <= 1'b0;
+ end else begin
+ if(fifoFork_fire) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdFork_fire) begin
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_cmd_ready) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(fifoFork_fire) begin
+ fifoFork_payload_first <= fifoFork_payload_last;
+ end
+ if(fifoFork_thrown_translated_fifo_io_pop_ready) begin
+ fifoFork_thrown_translated_fifo_io_pop_rValid <= fifoFork_thrown_translated_fifo_io_pop_valid;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(fifoFork_thrown_translated_fifo_io_pop_ready) begin
+ fifoFork_thrown_translated_fifo_io_pop_rData_context <= fifoFork_thrown_translated_fifo_io_pop_payload_context;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_FlowCCUnsafeByToggle_1_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_valid,
+ input wire [31:0] io_input_payload_PRDATA,
+ input wire io_input_payload_PSLVERROR,
+ output wire io_output_valid,
+ output wire [31:0] io_output_payload_PRDATA,
+ output wire io_output_payload_PSLVERROR,
+ input wire clk,
+ input wire reset,
+ input wire ctrl_clk,
+ input wire ctrl_reset
+);
+
+ wire inputArea_target_buffercc_io_dataOut;
+ reg inputArea_target;
+ reg [31:0] inputArea_data_PRDATA;
+ reg inputArea_data_PSLVERROR;
+ wire outputArea_target;
+ reg outputArea_hit;
+ wire outputArea_flow_valid;
+ wire [31:0] outputArea_flow_payload_PRDATA;
+ wire outputArea_flow_payload_PSLVERROR;
+ reg outputArea_flow_m2sPipe_valid;
+ (* async_reg = "true" *) reg [31:0] outputArea_flow_m2sPipe_payload_PRDATA;
+ (* async_reg = "true" *) reg outputArea_flow_m2sPipe_payload_PSLVERROR;
+
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_1_a048ca8f51874147a1cd65d43e6523ef inputArea_target_buffercc (
+ .io_dataIn (inputArea_target ), //i
+ .io_dataOut (inputArea_target_buffercc_io_dataOut), //o
+ .ctrl_clk (ctrl_clk ), //i
+ .ctrl_reset (ctrl_reset ) //i
+ );
+ assign outputArea_target = inputArea_target_buffercc_io_dataOut;
+ assign outputArea_flow_valid = (outputArea_target != outputArea_hit);
+ assign outputArea_flow_payload_PRDATA = inputArea_data_PRDATA;
+ assign outputArea_flow_payload_PSLVERROR = inputArea_data_PSLVERROR;
+ assign io_output_valid = outputArea_flow_m2sPipe_valid;
+ assign io_output_payload_PRDATA = outputArea_flow_m2sPipe_payload_PRDATA;
+ assign io_output_payload_PSLVERROR = outputArea_flow_m2sPipe_payload_PSLVERROR;
+ always @(posedge clk) begin
+ if(reset) begin
+ inputArea_target <= 1'b0;
+ end else begin
+ if(io_input_valid) begin
+ inputArea_target <= (! inputArea_target);
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_input_valid) begin
+ inputArea_data_PRDATA <= io_input_payload_PRDATA;
+ inputArea_data_PSLVERROR <= io_input_payload_PSLVERROR;
+ end
+ end
+
+ always @(posedge ctrl_clk) begin
+ if(ctrl_reset) begin
+ outputArea_flow_m2sPipe_valid <= 1'b0;
+ outputArea_hit <= 1'b0;
+ end else begin
+ outputArea_hit <= outputArea_target;
+ outputArea_flow_m2sPipe_valid <= outputArea_flow_valid;
+ end
+ end
+
+ always @(posedge ctrl_clk) begin
+ if(outputArea_flow_valid) begin
+ outputArea_flow_m2sPipe_payload_PRDATA <= outputArea_flow_payload_PRDATA;
+ outputArea_flow_m2sPipe_payload_PSLVERROR <= outputArea_flow_payload_PSLVERROR;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_FlowCCUnsafeByToggle_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_valid,
+ input wire [13:0] io_input_payload_PADDR,
+ input wire io_input_payload_PWRITE,
+ input wire [31:0] io_input_payload_PWDATA,
+ output wire io_output_valid,
+ output wire [13:0] io_output_payload_PADDR,
+ output wire io_output_payload_PWRITE,
+ output wire [31:0] io_output_payload_PWDATA,
+ input wire ctrl_clk,
+ input wire ctrl_reset,
+ input wire clk,
+ input wire reset
+);
+
+ wire inputArea_target_buffercc_io_dataOut;
+ reg inputArea_target;
+ reg [13:0] inputArea_data_PADDR;
+ reg inputArea_data_PWRITE;
+ reg [31:0] inputArea_data_PWDATA;
+ wire outputArea_target;
+ reg outputArea_hit;
+ wire outputArea_flow_valid;
+ wire [13:0] outputArea_flow_payload_PADDR;
+ wire outputArea_flow_payload_PWRITE;
+ wire [31:0] outputArea_flow_payload_PWDATA;
+
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_a048ca8f51874147a1cd65d43e6523ef inputArea_target_buffercc (
+ .io_dataIn (inputArea_target ), //i
+ .io_dataOut (inputArea_target_buffercc_io_dataOut), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign outputArea_target = inputArea_target_buffercc_io_dataOut;
+ assign outputArea_flow_valid = (outputArea_target != outputArea_hit);
+ assign outputArea_flow_payload_PADDR = inputArea_data_PADDR;
+ assign outputArea_flow_payload_PWRITE = inputArea_data_PWRITE;
+ assign outputArea_flow_payload_PWDATA = inputArea_data_PWDATA;
+ assign io_output_valid = outputArea_flow_valid;
+ assign io_output_payload_PADDR = outputArea_flow_payload_PADDR;
+ assign io_output_payload_PWRITE = outputArea_flow_payload_PWRITE;
+ assign io_output_payload_PWDATA = outputArea_flow_payload_PWDATA;
+ always @(posedge ctrl_clk) begin
+ if(ctrl_reset) begin
+ inputArea_target <= 1'b0;
+ end else begin
+ if(io_input_valid) begin
+ inputArea_target <= (! inputArea_target);
+ end
+ end
+ end
+
+ always @(posedge ctrl_clk) begin
+ if(io_input_valid) begin
+ inputArea_data_PADDR <= io_input_payload_PADDR;
+ inputArea_data_PWRITE <= io_input_payload_PWRITE;
+ inputArea_data_PWDATA <= io_input_payload_PWDATA;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ outputArea_hit <= 1'b0;
+ end else begin
+ outputArea_hit <= outputArea_target;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_Aggregator_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_input_valid,
+ output reg io_input_ready,
+ input wire [127:0] io_input_payload_data,
+ input wire [15:0] io_input_payload_mask,
+ output reg [127:0] io_output_data,
+ output reg [15:0] io_output_mask,
+ input wire io_output_enough,
+ input wire io_output_consume,
+ output wire io_output_consumed,
+ input wire [3:0] io_output_lastByteUsed,
+ output wire [3:0] io_output_usedUntil,
+ input wire io_flush,
+ input wire [3:0] io_offset,
+ input wire [11:0] io_burstLength,
+ input wire clk,
+ input wire reset
+);
+
+ reg [0:0] _zz_s0_countOnesLogic_0_1;
+ wire [0:0] _zz_s0_countOnesLogic_0_2;
+ reg [1:0] _zz_s0_countOnesLogic_1_1;
+ wire [1:0] _zz_s0_countOnesLogic_1_2;
+ reg [1:0] _zz_s0_countOnesLogic_2_1;
+ wire [2:0] _zz_s0_countOnesLogic_2_2;
+ reg [2:0] _zz_s0_countOnesLogic_3_9;
+ wire [2:0] _zz_s0_countOnesLogic_3_10;
+ reg [2:0] _zz_s0_countOnesLogic_3_11;
+ wire [2:0] _zz_s0_countOnesLogic_3_12;
+ wire [0:0] _zz_s0_countOnesLogic_3_13;
+ reg [2:0] _zz_s0_countOnesLogic_4_9;
+ wire [2:0] _zz_s0_countOnesLogic_4_10;
+ reg [2:0] _zz_s0_countOnesLogic_4_11;
+ wire [2:0] _zz_s0_countOnesLogic_4_12;
+ wire [1:0] _zz_s0_countOnesLogic_4_13;
+ reg [2:0] _zz_s0_countOnesLogic_5_9;
+ wire [2:0] _zz_s0_countOnesLogic_5_10;
+ reg [2:0] _zz_s0_countOnesLogic_5_11;
+ wire [2:0] _zz_s0_countOnesLogic_5_12;
+ wire [2:0] _zz_s0_countOnesLogic_6_9;
+ reg [2:0] _zz_s0_countOnesLogic_6_10;
+ wire [2:0] _zz_s0_countOnesLogic_6_11;
+ reg [2:0] _zz_s0_countOnesLogic_6_12;
+ wire [2:0] _zz_s0_countOnesLogic_6_13;
+ reg [2:0] _zz_s0_countOnesLogic_6_14;
+ wire [2:0] _zz_s0_countOnesLogic_6_15;
+ wire [0:0] _zz_s0_countOnesLogic_6_16;
+ wire [3:0] _zz_s0_countOnesLogic_7_9;
+ reg [3:0] _zz_s0_countOnesLogic_7_10;
+ wire [2:0] _zz_s0_countOnesLogic_7_11;
+ reg [3:0] _zz_s0_countOnesLogic_7_12;
+ wire [2:0] _zz_s0_countOnesLogic_7_13;
+ reg [3:0] _zz_s0_countOnesLogic_7_14;
+ wire [2:0] _zz_s0_countOnesLogic_7_15;
+ wire [1:0] _zz_s0_countOnesLogic_7_16;
+ wire [3:0] _zz_s0_countOnesLogic_8_9;
+ reg [3:0] _zz_s0_countOnesLogic_8_10;
+ wire [2:0] _zz_s0_countOnesLogic_8_11;
+ reg [3:0] _zz_s0_countOnesLogic_8_12;
+ wire [2:0] _zz_s0_countOnesLogic_8_13;
+ reg [3:0] _zz_s0_countOnesLogic_8_14;
+ wire [2:0] _zz_s0_countOnesLogic_8_15;
+ wire [3:0] _zz_s0_countOnesLogic_9_9;
+ reg [3:0] _zz_s0_countOnesLogic_9_10;
+ wire [2:0] _zz_s0_countOnesLogic_9_11;
+ reg [3:0] _zz_s0_countOnesLogic_9_12;
+ wire [2:0] _zz_s0_countOnesLogic_9_13;
+ wire [3:0] _zz_s0_countOnesLogic_9_14;
+ reg [3:0] _zz_s0_countOnesLogic_9_15;
+ wire [2:0] _zz_s0_countOnesLogic_9_16;
+ reg [3:0] _zz_s0_countOnesLogic_9_17;
+ wire [2:0] _zz_s0_countOnesLogic_9_18;
+ wire [0:0] _zz_s0_countOnesLogic_9_19;
+ wire [3:0] _zz_s0_countOnesLogic_10_9;
+ reg [3:0] _zz_s0_countOnesLogic_10_10;
+ wire [2:0] _zz_s0_countOnesLogic_10_11;
+ reg [3:0] _zz_s0_countOnesLogic_10_12;
+ wire [2:0] _zz_s0_countOnesLogic_10_13;
+ wire [3:0] _zz_s0_countOnesLogic_10_14;
+ reg [3:0] _zz_s0_countOnesLogic_10_15;
+ wire [2:0] _zz_s0_countOnesLogic_10_16;
+ reg [3:0] _zz_s0_countOnesLogic_10_17;
+ wire [2:0] _zz_s0_countOnesLogic_10_18;
+ wire [1:0] _zz_s0_countOnesLogic_10_19;
+ wire [3:0] _zz_s0_countOnesLogic_11_9;
+ reg [3:0] _zz_s0_countOnesLogic_11_10;
+ wire [2:0] _zz_s0_countOnesLogic_11_11;
+ reg [3:0] _zz_s0_countOnesLogic_11_12;
+ wire [2:0] _zz_s0_countOnesLogic_11_13;
+ wire [3:0] _zz_s0_countOnesLogic_11_14;
+ reg [3:0] _zz_s0_countOnesLogic_11_15;
+ wire [2:0] _zz_s0_countOnesLogic_11_16;
+ reg [3:0] _zz_s0_countOnesLogic_11_17;
+ wire [2:0] _zz_s0_countOnesLogic_11_18;
+ wire [3:0] _zz_s0_countOnesLogic_12_9;
+ wire [3:0] _zz_s0_countOnesLogic_12_10;
+ reg [3:0] _zz_s0_countOnesLogic_12_11;
+ wire [2:0] _zz_s0_countOnesLogic_12_12;
+ reg [3:0] _zz_s0_countOnesLogic_12_13;
+ wire [2:0] _zz_s0_countOnesLogic_12_14;
+ wire [3:0] _zz_s0_countOnesLogic_12_15;
+ reg [3:0] _zz_s0_countOnesLogic_12_16;
+ wire [2:0] _zz_s0_countOnesLogic_12_17;
+ reg [3:0] _zz_s0_countOnesLogic_12_18;
+ wire [2:0] _zz_s0_countOnesLogic_12_19;
+ reg [3:0] _zz_s0_countOnesLogic_12_20;
+ wire [2:0] _zz_s0_countOnesLogic_12_21;
+ wire [0:0] _zz_s0_countOnesLogic_12_22;
+ wire [3:0] _zz_s0_countOnesLogic_13_9;
+ wire [3:0] _zz_s0_countOnesLogic_13_10;
+ reg [3:0] _zz_s0_countOnesLogic_13_11;
+ wire [2:0] _zz_s0_countOnesLogic_13_12;
+ reg [3:0] _zz_s0_countOnesLogic_13_13;
+ wire [2:0] _zz_s0_countOnesLogic_13_14;
+ wire [3:0] _zz_s0_countOnesLogic_13_15;
+ reg [3:0] _zz_s0_countOnesLogic_13_16;
+ wire [2:0] _zz_s0_countOnesLogic_13_17;
+ reg [3:0] _zz_s0_countOnesLogic_13_18;
+ wire [2:0] _zz_s0_countOnesLogic_13_19;
+ reg [3:0] _zz_s0_countOnesLogic_13_20;
+ wire [2:0] _zz_s0_countOnesLogic_13_21;
+ wire [1:0] _zz_s0_countOnesLogic_13_22;
+ wire [3:0] _zz_s0_countOnesLogic_14_9;
+ wire [3:0] _zz_s0_countOnesLogic_14_10;
+ reg [3:0] _zz_s0_countOnesLogic_14_11;
+ wire [2:0] _zz_s0_countOnesLogic_14_12;
+ reg [3:0] _zz_s0_countOnesLogic_14_13;
+ wire [2:0] _zz_s0_countOnesLogic_14_14;
+ wire [3:0] _zz_s0_countOnesLogic_14_15;
+ reg [3:0] _zz_s0_countOnesLogic_14_16;
+ wire [2:0] _zz_s0_countOnesLogic_14_17;
+ reg [3:0] _zz_s0_countOnesLogic_14_18;
+ wire [2:0] _zz_s0_countOnesLogic_14_19;
+ reg [3:0] _zz_s0_countOnesLogic_14_20;
+ wire [2:0] _zz_s0_countOnesLogic_14_21;
+ wire [4:0] _zz_s0_countOnesLogic_15_8;
+ wire [4:0] _zz_s0_countOnesLogic_15_9;
+ reg [4:0] _zz_s0_countOnesLogic_15_10;
+ wire [2:0] _zz_s0_countOnesLogic_15_11;
+ reg [4:0] _zz_s0_countOnesLogic_15_12;
+ wire [2:0] _zz_s0_countOnesLogic_15_13;
+ wire [4:0] _zz_s0_countOnesLogic_15_14;
+ reg [4:0] _zz_s0_countOnesLogic_15_15;
+ wire [2:0] _zz_s0_countOnesLogic_15_16;
+ reg [4:0] _zz_s0_countOnesLogic_15_17;
+ wire [2:0] _zz_s0_countOnesLogic_15_18;
+ wire [4:0] _zz_s0_countOnesLogic_15_19;
+ reg [4:0] _zz_s0_countOnesLogic_15_20;
+ wire [2:0] _zz_s0_countOnesLogic_15_21;
+ reg [4:0] _zz_s0_countOnesLogic_15_22;
+ wire [2:0] _zz_s0_countOnesLogic_15_23;
+ wire [0:0] _zz_s0_countOnesLogic_15_24;
+ wire [4:0] _zz_s1_offsetNext;
+ wire [12:0] _zz_s1_byteCounter;
+ wire [3:0] _zz_s1_inputIndexes_1;
+ wire [3:0] _zz_s1_inputIndexes_2;
+ wire [3:0] _zz_s1_inputIndexes_3;
+ wire [3:0] _zz_s1_inputIndexes_4;
+ wire [3:0] _zz_s1_inputIndexes_5;
+ wire [3:0] _zz_s1_inputIndexes_6;
+ wire [3:0] _zz_s1_inputIndexes_7;
+ wire [0:0] _zz_s1_outputPayload_selValid_240;
+ wire [6:0] _zz_s1_outputPayload_selValid_241;
+ wire [0:0] _zz_s1_outputPayload_selValid_242;
+ wire [6:0] _zz_s1_outputPayload_selValid_243;
+ wire [0:0] _zz_s1_outputPayload_selValid_244;
+ wire [6:0] _zz_s1_outputPayload_selValid_245;
+ wire [0:0] _zz_s1_outputPayload_selValid_246;
+ wire [6:0] _zz_s1_outputPayload_selValid_247;
+ wire [0:0] _zz_s1_outputPayload_selValid_248;
+ wire [6:0] _zz_s1_outputPayload_selValid_249;
+ wire [0:0] _zz_s1_outputPayload_selValid_250;
+ wire [6:0] _zz_s1_outputPayload_selValid_251;
+ wire [0:0] _zz_s1_outputPayload_selValid_252;
+ wire [6:0] _zz_s1_outputPayload_selValid_253;
+ wire [0:0] _zz_s1_outputPayload_selValid_254;
+ wire [6:0] _zz_s1_outputPayload_selValid_255;
+ wire [0:0] _zz_s1_outputPayload_selValid_256;
+ wire [6:0] _zz_s1_outputPayload_selValid_257;
+ wire [0:0] _zz_s1_outputPayload_selValid_258;
+ wire [6:0] _zz_s1_outputPayload_selValid_259;
+ wire [0:0] _zz_s1_outputPayload_selValid_260;
+ wire [6:0] _zz_s1_outputPayload_selValid_261;
+ wire [0:0] _zz_s1_outputPayload_selValid_262;
+ wire [6:0] _zz_s1_outputPayload_selValid_263;
+ wire [0:0] _zz_s1_outputPayload_selValid_264;
+ wire [6:0] _zz_s1_outputPayload_selValid_265;
+ wire [0:0] _zz_s1_outputPayload_selValid_266;
+ wire [6:0] _zz_s1_outputPayload_selValid_267;
+ wire [0:0] _zz_s1_outputPayload_selValid_268;
+ wire [6:0] _zz_s1_outputPayload_selValid_269;
+ wire [0:0] _zz_s1_outputPayload_selValid_270;
+ wire [6:0] _zz_s1_outputPayload_selValid_271;
+ wire [12:0] _zz_when_DmaSg_l1464;
+ reg [7:0] _zz_s2_byteLogic_0_inputData;
+ reg [7:0] _zz_s2_byteLogic_1_inputData;
+ reg [7:0] _zz_s2_byteLogic_2_inputData;
+ reg [7:0] _zz_s2_byteLogic_3_inputData;
+ reg [7:0] _zz_s2_byteLogic_4_inputData;
+ reg [7:0] _zz_s2_byteLogic_5_inputData;
+ reg [7:0] _zz_s2_byteLogic_6_inputData;
+ reg [7:0] _zz_s2_byteLogic_7_inputData;
+ reg [7:0] _zz_s2_byteLogic_8_inputData;
+ reg [7:0] _zz_s2_byteLogic_9_inputData;
+ reg [7:0] _zz_s2_byteLogic_10_inputData;
+ reg [7:0] _zz_s2_byteLogic_11_inputData;
+ reg [7:0] _zz_s2_byteLogic_12_inputData;
+ reg [7:0] _zz_s2_byteLogic_13_inputData;
+ reg [7:0] _zz_s2_byteLogic_14_inputData;
+ reg [7:0] _zz_s2_byteLogic_15_inputData;
+ reg [3:0] _zz_io_output_usedUntil_4;
+ wire [3:0] _zz_io_output_usedUntil_5;
+ wire s0_input_valid;
+ wire s0_input_ready;
+ wire [127:0] s0_input_payload_data;
+ wire [15:0] s0_input_payload_mask;
+ reg io_input_rValid;
+ reg [127:0] io_input_rData_data;
+ reg [15:0] io_input_rData_mask;
+ wire when_Stream_l375;
+ wire _zz_s0_countOnesLogic_0;
+ wire _zz_s0_countOnesLogic_1;
+ wire _zz_s0_countOnesLogic_2;
+ wire _zz_s0_countOnesLogic_3;
+ wire _zz_s0_countOnesLogic_4;
+ wire _zz_s0_countOnesLogic_5;
+ wire _zz_s0_countOnesLogic_6;
+ wire _zz_s0_countOnesLogic_7;
+ wire _zz_s0_countOnesLogic_8;
+ wire _zz_s0_countOnesLogic_9;
+ wire _zz_s0_countOnesLogic_10;
+ wire _zz_s0_countOnesLogic_11;
+ wire _zz_s0_countOnesLogic_12;
+ wire _zz_s0_countOnesLogic_13;
+ wire _zz_s0_countOnesLogic_14;
+ wire [0:0] s0_countOnesLogic_0;
+ wire [1:0] s0_countOnesLogic_1;
+ wire [1:0] s0_countOnesLogic_2;
+ wire [2:0] _zz_s0_countOnesLogic_3_1;
+ wire [2:0] _zz_s0_countOnesLogic_3_2;
+ wire [2:0] _zz_s0_countOnesLogic_3_3;
+ wire [2:0] _zz_s0_countOnesLogic_3_4;
+ wire [2:0] _zz_s0_countOnesLogic_3_5;
+ wire [2:0] _zz_s0_countOnesLogic_3_6;
+ wire [2:0] _zz_s0_countOnesLogic_3_7;
+ wire [2:0] _zz_s0_countOnesLogic_3_8;
+ wire [2:0] s0_countOnesLogic_3;
+ wire [2:0] _zz_s0_countOnesLogic_4_1;
+ wire [2:0] _zz_s0_countOnesLogic_4_2;
+ wire [2:0] _zz_s0_countOnesLogic_4_3;
+ wire [2:0] _zz_s0_countOnesLogic_4_4;
+ wire [2:0] _zz_s0_countOnesLogic_4_5;
+ wire [2:0] _zz_s0_countOnesLogic_4_6;
+ wire [2:0] _zz_s0_countOnesLogic_4_7;
+ wire [2:0] _zz_s0_countOnesLogic_4_8;
+ wire [2:0] s0_countOnesLogic_4;
+ wire [2:0] _zz_s0_countOnesLogic_5_1;
+ wire [2:0] _zz_s0_countOnesLogic_5_2;
+ wire [2:0] _zz_s0_countOnesLogic_5_3;
+ wire [2:0] _zz_s0_countOnesLogic_5_4;
+ wire [2:0] _zz_s0_countOnesLogic_5_5;
+ wire [2:0] _zz_s0_countOnesLogic_5_6;
+ wire [2:0] _zz_s0_countOnesLogic_5_7;
+ wire [2:0] _zz_s0_countOnesLogic_5_8;
+ wire [2:0] s0_countOnesLogic_5;
+ wire [2:0] _zz_s0_countOnesLogic_6_1;
+ wire [2:0] _zz_s0_countOnesLogic_6_2;
+ wire [2:0] _zz_s0_countOnesLogic_6_3;
+ wire [2:0] _zz_s0_countOnesLogic_6_4;
+ wire [2:0] _zz_s0_countOnesLogic_6_5;
+ wire [2:0] _zz_s0_countOnesLogic_6_6;
+ wire [2:0] _zz_s0_countOnesLogic_6_7;
+ wire [2:0] _zz_s0_countOnesLogic_6_8;
+ wire [2:0] s0_countOnesLogic_6;
+ wire [3:0] _zz_s0_countOnesLogic_7_1;
+ wire [3:0] _zz_s0_countOnesLogic_7_2;
+ wire [3:0] _zz_s0_countOnesLogic_7_3;
+ wire [3:0] _zz_s0_countOnesLogic_7_4;
+ wire [3:0] _zz_s0_countOnesLogic_7_5;
+ wire [3:0] _zz_s0_countOnesLogic_7_6;
+ wire [3:0] _zz_s0_countOnesLogic_7_7;
+ wire [3:0] _zz_s0_countOnesLogic_7_8;
+ wire [3:0] s0_countOnesLogic_7;
+ wire [3:0] _zz_s0_countOnesLogic_8_1;
+ wire [3:0] _zz_s0_countOnesLogic_8_2;
+ wire [3:0] _zz_s0_countOnesLogic_8_3;
+ wire [3:0] _zz_s0_countOnesLogic_8_4;
+ wire [3:0] _zz_s0_countOnesLogic_8_5;
+ wire [3:0] _zz_s0_countOnesLogic_8_6;
+ wire [3:0] _zz_s0_countOnesLogic_8_7;
+ wire [3:0] _zz_s0_countOnesLogic_8_8;
+ wire [3:0] s0_countOnesLogic_8;
+ wire [3:0] _zz_s0_countOnesLogic_9_1;
+ wire [3:0] _zz_s0_countOnesLogic_9_2;
+ wire [3:0] _zz_s0_countOnesLogic_9_3;
+ wire [3:0] _zz_s0_countOnesLogic_9_4;
+ wire [3:0] _zz_s0_countOnesLogic_9_5;
+ wire [3:0] _zz_s0_countOnesLogic_9_6;
+ wire [3:0] _zz_s0_countOnesLogic_9_7;
+ wire [3:0] _zz_s0_countOnesLogic_9_8;
+ wire [3:0] s0_countOnesLogic_9;
+ wire [3:0] _zz_s0_countOnesLogic_10_1;
+ wire [3:0] _zz_s0_countOnesLogic_10_2;
+ wire [3:0] _zz_s0_countOnesLogic_10_3;
+ wire [3:0] _zz_s0_countOnesLogic_10_4;
+ wire [3:0] _zz_s0_countOnesLogic_10_5;
+ wire [3:0] _zz_s0_countOnesLogic_10_6;
+ wire [3:0] _zz_s0_countOnesLogic_10_7;
+ wire [3:0] _zz_s0_countOnesLogic_10_8;
+ wire [3:0] s0_countOnesLogic_10;
+ wire [3:0] _zz_s0_countOnesLogic_11_1;
+ wire [3:0] _zz_s0_countOnesLogic_11_2;
+ wire [3:0] _zz_s0_countOnesLogic_11_3;
+ wire [3:0] _zz_s0_countOnesLogic_11_4;
+ wire [3:0] _zz_s0_countOnesLogic_11_5;
+ wire [3:0] _zz_s0_countOnesLogic_11_6;
+ wire [3:0] _zz_s0_countOnesLogic_11_7;
+ wire [3:0] _zz_s0_countOnesLogic_11_8;
+ wire [3:0] s0_countOnesLogic_11;
+ wire [3:0] _zz_s0_countOnesLogic_12_1;
+ wire [3:0] _zz_s0_countOnesLogic_12_2;
+ wire [3:0] _zz_s0_countOnesLogic_12_3;
+ wire [3:0] _zz_s0_countOnesLogic_12_4;
+ wire [3:0] _zz_s0_countOnesLogic_12_5;
+ wire [3:0] _zz_s0_countOnesLogic_12_6;
+ wire [3:0] _zz_s0_countOnesLogic_12_7;
+ wire [3:0] _zz_s0_countOnesLogic_12_8;
+ wire [3:0] s0_countOnesLogic_12;
+ wire [3:0] _zz_s0_countOnesLogic_13_1;
+ wire [3:0] _zz_s0_countOnesLogic_13_2;
+ wire [3:0] _zz_s0_countOnesLogic_13_3;
+ wire [3:0] _zz_s0_countOnesLogic_13_4;
+ wire [3:0] _zz_s0_countOnesLogic_13_5;
+ wire [3:0] _zz_s0_countOnesLogic_13_6;
+ wire [3:0] _zz_s0_countOnesLogic_13_7;
+ wire [3:0] _zz_s0_countOnesLogic_13_8;
+ wire [3:0] s0_countOnesLogic_13;
+ wire [3:0] _zz_s0_countOnesLogic_14_1;
+ wire [3:0] _zz_s0_countOnesLogic_14_2;
+ wire [3:0] _zz_s0_countOnesLogic_14_3;
+ wire [3:0] _zz_s0_countOnesLogic_14_4;
+ wire [3:0] _zz_s0_countOnesLogic_14_5;
+ wire [3:0] _zz_s0_countOnesLogic_14_6;
+ wire [3:0] _zz_s0_countOnesLogic_14_7;
+ wire [3:0] _zz_s0_countOnesLogic_14_8;
+ wire [3:0] s0_countOnesLogic_14;
+ wire [4:0] _zz_s0_countOnesLogic_15;
+ wire [4:0] _zz_s0_countOnesLogic_15_1;
+ wire [4:0] _zz_s0_countOnesLogic_15_2;
+ wire [4:0] _zz_s0_countOnesLogic_15_3;
+ wire [4:0] _zz_s0_countOnesLogic_15_4;
+ wire [4:0] _zz_s0_countOnesLogic_15_5;
+ wire [4:0] _zz_s0_countOnesLogic_15_6;
+ wire [4:0] _zz_s0_countOnesLogic_15_7;
+ wire [4:0] s0_countOnesLogic_15;
+ wire [127:0] s0_outputPayload_cmd_data;
+ wire [15:0] s0_outputPayload_cmd_mask;
+ wire [0:0] s0_outputPayload_countOnes_0;
+ wire [1:0] s0_outputPayload_countOnes_1;
+ wire [1:0] s0_outputPayload_countOnes_2;
+ wire [2:0] s0_outputPayload_countOnes_3;
+ wire [2:0] s0_outputPayload_countOnes_4;
+ wire [2:0] s0_outputPayload_countOnes_5;
+ wire [2:0] s0_outputPayload_countOnes_6;
+ wire [3:0] s0_outputPayload_countOnes_7;
+ wire [3:0] s0_outputPayload_countOnes_8;
+ wire [3:0] s0_outputPayload_countOnes_9;
+ wire [3:0] s0_outputPayload_countOnes_10;
+ wire [3:0] s0_outputPayload_countOnes_11;
+ wire [3:0] s0_outputPayload_countOnes_12;
+ wire [3:0] s0_outputPayload_countOnes_13;
+ wire [3:0] s0_outputPayload_countOnes_14;
+ wire [4:0] s0_outputPayload_countOnes_15;
+ wire s0_output_valid;
+ reg s0_output_ready;
+ wire [127:0] s0_output_payload_cmd_data;
+ wire [15:0] s0_output_payload_cmd_mask;
+ wire [0:0] s0_output_payload_countOnes_0;
+ wire [1:0] s0_output_payload_countOnes_1;
+ wire [1:0] s0_output_payload_countOnes_2;
+ wire [2:0] s0_output_payload_countOnes_3;
+ wire [2:0] s0_output_payload_countOnes_4;
+ wire [2:0] s0_output_payload_countOnes_5;
+ wire [2:0] s0_output_payload_countOnes_6;
+ wire [3:0] s0_output_payload_countOnes_7;
+ wire [3:0] s0_output_payload_countOnes_8;
+ wire [3:0] s0_output_payload_countOnes_9;
+ wire [3:0] s0_output_payload_countOnes_10;
+ wire [3:0] s0_output_payload_countOnes_11;
+ wire [3:0] s0_output_payload_countOnes_12;
+ wire [3:0] s0_output_payload_countOnes_13;
+ wire [3:0] s0_output_payload_countOnes_14;
+ wire [4:0] s0_output_payload_countOnes_15;
+ wire s1_input_valid;
+ wire s1_input_ready;
+ wire [127:0] s1_input_payload_cmd_data;
+ wire [15:0] s1_input_payload_cmd_mask;
+ wire [0:0] s1_input_payload_countOnes_0;
+ wire [1:0] s1_input_payload_countOnes_1;
+ wire [1:0] s1_input_payload_countOnes_2;
+ wire [2:0] s1_input_payload_countOnes_3;
+ wire [2:0] s1_input_payload_countOnes_4;
+ wire [2:0] s1_input_payload_countOnes_5;
+ wire [2:0] s1_input_payload_countOnes_6;
+ wire [3:0] s1_input_payload_countOnes_7;
+ wire [3:0] s1_input_payload_countOnes_8;
+ wire [3:0] s1_input_payload_countOnes_9;
+ wire [3:0] s1_input_payload_countOnes_10;
+ wire [3:0] s1_input_payload_countOnes_11;
+ wire [3:0] s1_input_payload_countOnes_12;
+ wire [3:0] s1_input_payload_countOnes_13;
+ wire [3:0] s1_input_payload_countOnes_14;
+ wire [4:0] s1_input_payload_countOnes_15;
+ reg s0_output_rValid;
+ reg [127:0] s0_output_rData_cmd_data;
+ reg [15:0] s0_output_rData_cmd_mask;
+ reg [0:0] s0_output_rData_countOnes_0;
+ reg [1:0] s0_output_rData_countOnes_1;
+ reg [1:0] s0_output_rData_countOnes_2;
+ reg [2:0] s0_output_rData_countOnes_3;
+ reg [2:0] s0_output_rData_countOnes_4;
+ reg [2:0] s0_output_rData_countOnes_5;
+ reg [2:0] s0_output_rData_countOnes_6;
+ reg [3:0] s0_output_rData_countOnes_7;
+ reg [3:0] s0_output_rData_countOnes_8;
+ reg [3:0] s0_output_rData_countOnes_9;
+ reg [3:0] s0_output_rData_countOnes_10;
+ reg [3:0] s0_output_rData_countOnes_11;
+ reg [3:0] s0_output_rData_countOnes_12;
+ reg [3:0] s0_output_rData_countOnes_13;
+ reg [3:0] s0_output_rData_countOnes_14;
+ reg [4:0] s0_output_rData_countOnes_15;
+ wire when_Stream_l375_1;
+ reg [3:0] s1_offset;
+ wire [4:0] s1_offsetNext;
+ wire s1_input_fire;
+ reg [12:0] s1_byteCounter;
+ wire [3:0] s1_inputIndexes_0;
+ wire [3:0] s1_inputIndexes_1;
+ wire [3:0] s1_inputIndexes_2;
+ wire [3:0] s1_inputIndexes_3;
+ wire [3:0] s1_inputIndexes_4;
+ wire [3:0] s1_inputIndexes_5;
+ wire [3:0] s1_inputIndexes_6;
+ wire [3:0] s1_inputIndexes_7;
+ wire [3:0] s1_inputIndexes_8;
+ wire [3:0] s1_inputIndexes_9;
+ wire [3:0] s1_inputIndexes_10;
+ wire [3:0] s1_inputIndexes_11;
+ wire [3:0] s1_inputIndexes_12;
+ wire [3:0] s1_inputIndexes_13;
+ wire [3:0] s1_inputIndexes_14;
+ wire [3:0] s1_inputIndexes_15;
+ wire [127:0] s1_outputPayload_cmd_data;
+ wire [15:0] s1_outputPayload_cmd_mask;
+ wire [3:0] s1_outputPayload_index_0;
+ wire [3:0] s1_outputPayload_index_1;
+ wire [3:0] s1_outputPayload_index_2;
+ wire [3:0] s1_outputPayload_index_3;
+ wire [3:0] s1_outputPayload_index_4;
+ wire [3:0] s1_outputPayload_index_5;
+ wire [3:0] s1_outputPayload_index_6;
+ wire [3:0] s1_outputPayload_index_7;
+ wire [3:0] s1_outputPayload_index_8;
+ wire [3:0] s1_outputPayload_index_9;
+ wire [3:0] s1_outputPayload_index_10;
+ wire [3:0] s1_outputPayload_index_11;
+ wire [3:0] s1_outputPayload_index_12;
+ wire [3:0] s1_outputPayload_index_13;
+ wire [3:0] s1_outputPayload_index_14;
+ wire [3:0] s1_outputPayload_index_15;
+ wire s1_outputPayload_last;
+ wire [3:0] s1_outputPayload_sel_0;
+ wire [3:0] s1_outputPayload_sel_1;
+ wire [3:0] s1_outputPayload_sel_2;
+ wire [3:0] s1_outputPayload_sel_3;
+ wire [3:0] s1_outputPayload_sel_4;
+ wire [3:0] s1_outputPayload_sel_5;
+ wire [3:0] s1_outputPayload_sel_6;
+ wire [3:0] s1_outputPayload_sel_7;
+ wire [3:0] s1_outputPayload_sel_8;
+ wire [3:0] s1_outputPayload_sel_9;
+ wire [3:0] s1_outputPayload_sel_10;
+ wire [3:0] s1_outputPayload_sel_11;
+ wire [3:0] s1_outputPayload_sel_12;
+ wire [3:0] s1_outputPayload_sel_13;
+ wire [3:0] s1_outputPayload_sel_14;
+ wire [3:0] s1_outputPayload_sel_15;
+ reg [15:0] s1_outputPayload_selValid;
+ wire _zz_s1_outputPayload_selValid;
+ wire _zz_s1_outputPayload_selValid_1;
+ wire _zz_s1_outputPayload_selValid_2;
+ wire _zz_s1_outputPayload_selValid_3;
+ wire _zz_s1_outputPayload_selValid_4;
+ wire _zz_s1_outputPayload_selValid_5;
+ wire _zz_s1_outputPayload_selValid_6;
+ wire _zz_s1_outputPayload_selValid_7;
+ wire _zz_s1_outputPayload_selValid_8;
+ wire _zz_s1_outputPayload_selValid_9;
+ wire _zz_s1_outputPayload_selValid_10;
+ wire _zz_s1_outputPayload_selValid_11;
+ wire _zz_s1_outputPayload_selValid_12;
+ wire _zz_s1_outputPayload_selValid_13;
+ wire _zz_s1_outputPayload_selValid_14;
+ wire _zz_s1_outputPayload_sel_0;
+ wire _zz_s1_outputPayload_sel_0_1;
+ wire _zz_s1_outputPayload_sel_0_2;
+ wire _zz_s1_outputPayload_sel_0_3;
+ wire _zz_s1_outputPayload_selValid_15;
+ wire _zz_s1_outputPayload_selValid_16;
+ wire _zz_s1_outputPayload_selValid_17;
+ wire _zz_s1_outputPayload_selValid_18;
+ wire _zz_s1_outputPayload_selValid_19;
+ wire _zz_s1_outputPayload_selValid_20;
+ wire _zz_s1_outputPayload_selValid_21;
+ wire _zz_s1_outputPayload_selValid_22;
+ wire _zz_s1_outputPayload_selValid_23;
+ wire _zz_s1_outputPayload_selValid_24;
+ wire _zz_s1_outputPayload_selValid_25;
+ wire _zz_s1_outputPayload_selValid_26;
+ wire _zz_s1_outputPayload_selValid_27;
+ wire _zz_s1_outputPayload_selValid_28;
+ wire _zz_s1_outputPayload_selValid_29;
+ wire _zz_s1_outputPayload_sel_1;
+ wire _zz_s1_outputPayload_sel_1_1;
+ wire _zz_s1_outputPayload_sel_1_2;
+ wire _zz_s1_outputPayload_sel_1_3;
+ wire _zz_s1_outputPayload_selValid_30;
+ wire _zz_s1_outputPayload_selValid_31;
+ wire _zz_s1_outputPayload_selValid_32;
+ wire _zz_s1_outputPayload_selValid_33;
+ wire _zz_s1_outputPayload_selValid_34;
+ wire _zz_s1_outputPayload_selValid_35;
+ wire _zz_s1_outputPayload_selValid_36;
+ wire _zz_s1_outputPayload_selValid_37;
+ wire _zz_s1_outputPayload_selValid_38;
+ wire _zz_s1_outputPayload_selValid_39;
+ wire _zz_s1_outputPayload_selValid_40;
+ wire _zz_s1_outputPayload_selValid_41;
+ wire _zz_s1_outputPayload_selValid_42;
+ wire _zz_s1_outputPayload_selValid_43;
+ wire _zz_s1_outputPayload_selValid_44;
+ wire _zz_s1_outputPayload_sel_2;
+ wire _zz_s1_outputPayload_sel_2_1;
+ wire _zz_s1_outputPayload_sel_2_2;
+ wire _zz_s1_outputPayload_sel_2_3;
+ wire _zz_s1_outputPayload_selValid_45;
+ wire _zz_s1_outputPayload_selValid_46;
+ wire _zz_s1_outputPayload_selValid_47;
+ wire _zz_s1_outputPayload_selValid_48;
+ wire _zz_s1_outputPayload_selValid_49;
+ wire _zz_s1_outputPayload_selValid_50;
+ wire _zz_s1_outputPayload_selValid_51;
+ wire _zz_s1_outputPayload_selValid_52;
+ wire _zz_s1_outputPayload_selValid_53;
+ wire _zz_s1_outputPayload_selValid_54;
+ wire _zz_s1_outputPayload_selValid_55;
+ wire _zz_s1_outputPayload_selValid_56;
+ wire _zz_s1_outputPayload_selValid_57;
+ wire _zz_s1_outputPayload_selValid_58;
+ wire _zz_s1_outputPayload_selValid_59;
+ wire _zz_s1_outputPayload_sel_3;
+ wire _zz_s1_outputPayload_sel_3_1;
+ wire _zz_s1_outputPayload_sel_3_2;
+ wire _zz_s1_outputPayload_sel_3_3;
+ wire _zz_s1_outputPayload_selValid_60;
+ wire _zz_s1_outputPayload_selValid_61;
+ wire _zz_s1_outputPayload_selValid_62;
+ wire _zz_s1_outputPayload_selValid_63;
+ wire _zz_s1_outputPayload_selValid_64;
+ wire _zz_s1_outputPayload_selValid_65;
+ wire _zz_s1_outputPayload_selValid_66;
+ wire _zz_s1_outputPayload_selValid_67;
+ wire _zz_s1_outputPayload_selValid_68;
+ wire _zz_s1_outputPayload_selValid_69;
+ wire _zz_s1_outputPayload_selValid_70;
+ wire _zz_s1_outputPayload_selValid_71;
+ wire _zz_s1_outputPayload_selValid_72;
+ wire _zz_s1_outputPayload_selValid_73;
+ wire _zz_s1_outputPayload_selValid_74;
+ wire _zz_s1_outputPayload_sel_4;
+ wire _zz_s1_outputPayload_sel_4_1;
+ wire _zz_s1_outputPayload_sel_4_2;
+ wire _zz_s1_outputPayload_sel_4_3;
+ wire _zz_s1_outputPayload_selValid_75;
+ wire _zz_s1_outputPayload_selValid_76;
+ wire _zz_s1_outputPayload_selValid_77;
+ wire _zz_s1_outputPayload_selValid_78;
+ wire _zz_s1_outputPayload_selValid_79;
+ wire _zz_s1_outputPayload_selValid_80;
+ wire _zz_s1_outputPayload_selValid_81;
+ wire _zz_s1_outputPayload_selValid_82;
+ wire _zz_s1_outputPayload_selValid_83;
+ wire _zz_s1_outputPayload_selValid_84;
+ wire _zz_s1_outputPayload_selValid_85;
+ wire _zz_s1_outputPayload_selValid_86;
+ wire _zz_s1_outputPayload_selValid_87;
+ wire _zz_s1_outputPayload_selValid_88;
+ wire _zz_s1_outputPayload_selValid_89;
+ wire _zz_s1_outputPayload_sel_5;
+ wire _zz_s1_outputPayload_sel_5_1;
+ wire _zz_s1_outputPayload_sel_5_2;
+ wire _zz_s1_outputPayload_sel_5_3;
+ wire _zz_s1_outputPayload_selValid_90;
+ wire _zz_s1_outputPayload_selValid_91;
+ wire _zz_s1_outputPayload_selValid_92;
+ wire _zz_s1_outputPayload_selValid_93;
+ wire _zz_s1_outputPayload_selValid_94;
+ wire _zz_s1_outputPayload_selValid_95;
+ wire _zz_s1_outputPayload_selValid_96;
+ wire _zz_s1_outputPayload_selValid_97;
+ wire _zz_s1_outputPayload_selValid_98;
+ wire _zz_s1_outputPayload_selValid_99;
+ wire _zz_s1_outputPayload_selValid_100;
+ wire _zz_s1_outputPayload_selValid_101;
+ wire _zz_s1_outputPayload_selValid_102;
+ wire _zz_s1_outputPayload_selValid_103;
+ wire _zz_s1_outputPayload_selValid_104;
+ wire _zz_s1_outputPayload_sel_6;
+ wire _zz_s1_outputPayload_sel_6_1;
+ wire _zz_s1_outputPayload_sel_6_2;
+ wire _zz_s1_outputPayload_sel_6_3;
+ wire _zz_s1_outputPayload_selValid_105;
+ wire _zz_s1_outputPayload_selValid_106;
+ wire _zz_s1_outputPayload_selValid_107;
+ wire _zz_s1_outputPayload_selValid_108;
+ wire _zz_s1_outputPayload_selValid_109;
+ wire _zz_s1_outputPayload_selValid_110;
+ wire _zz_s1_outputPayload_selValid_111;
+ wire _zz_s1_outputPayload_selValid_112;
+ wire _zz_s1_outputPayload_selValid_113;
+ wire _zz_s1_outputPayload_selValid_114;
+ wire _zz_s1_outputPayload_selValid_115;
+ wire _zz_s1_outputPayload_selValid_116;
+ wire _zz_s1_outputPayload_selValid_117;
+ wire _zz_s1_outputPayload_selValid_118;
+ wire _zz_s1_outputPayload_selValid_119;
+ wire _zz_s1_outputPayload_sel_7;
+ wire _zz_s1_outputPayload_sel_7_1;
+ wire _zz_s1_outputPayload_sel_7_2;
+ wire _zz_s1_outputPayload_sel_7_3;
+ wire _zz_s1_outputPayload_selValid_120;
+ wire _zz_s1_outputPayload_selValid_121;
+ wire _zz_s1_outputPayload_selValid_122;
+ wire _zz_s1_outputPayload_selValid_123;
+ wire _zz_s1_outputPayload_selValid_124;
+ wire _zz_s1_outputPayload_selValid_125;
+ wire _zz_s1_outputPayload_selValid_126;
+ wire _zz_s1_outputPayload_selValid_127;
+ wire _zz_s1_outputPayload_selValid_128;
+ wire _zz_s1_outputPayload_selValid_129;
+ wire _zz_s1_outputPayload_selValid_130;
+ wire _zz_s1_outputPayload_selValid_131;
+ wire _zz_s1_outputPayload_selValid_132;
+ wire _zz_s1_outputPayload_selValid_133;
+ wire _zz_s1_outputPayload_selValid_134;
+ wire _zz_s1_outputPayload_sel_8;
+ wire _zz_s1_outputPayload_sel_8_1;
+ wire _zz_s1_outputPayload_sel_8_2;
+ wire _zz_s1_outputPayload_sel_8_3;
+ wire _zz_s1_outputPayload_selValid_135;
+ wire _zz_s1_outputPayload_selValid_136;
+ wire _zz_s1_outputPayload_selValid_137;
+ wire _zz_s1_outputPayload_selValid_138;
+ wire _zz_s1_outputPayload_selValid_139;
+ wire _zz_s1_outputPayload_selValid_140;
+ wire _zz_s1_outputPayload_selValid_141;
+ wire _zz_s1_outputPayload_selValid_142;
+ wire _zz_s1_outputPayload_selValid_143;
+ wire _zz_s1_outputPayload_selValid_144;
+ wire _zz_s1_outputPayload_selValid_145;
+ wire _zz_s1_outputPayload_selValid_146;
+ wire _zz_s1_outputPayload_selValid_147;
+ wire _zz_s1_outputPayload_selValid_148;
+ wire _zz_s1_outputPayload_selValid_149;
+ wire _zz_s1_outputPayload_sel_9;
+ wire _zz_s1_outputPayload_sel_9_1;
+ wire _zz_s1_outputPayload_sel_9_2;
+ wire _zz_s1_outputPayload_sel_9_3;
+ wire _zz_s1_outputPayload_selValid_150;
+ wire _zz_s1_outputPayload_selValid_151;
+ wire _zz_s1_outputPayload_selValid_152;
+ wire _zz_s1_outputPayload_selValid_153;
+ wire _zz_s1_outputPayload_selValid_154;
+ wire _zz_s1_outputPayload_selValid_155;
+ wire _zz_s1_outputPayload_selValid_156;
+ wire _zz_s1_outputPayload_selValid_157;
+ wire _zz_s1_outputPayload_selValid_158;
+ wire _zz_s1_outputPayload_selValid_159;
+ wire _zz_s1_outputPayload_selValid_160;
+ wire _zz_s1_outputPayload_selValid_161;
+ wire _zz_s1_outputPayload_selValid_162;
+ wire _zz_s1_outputPayload_selValid_163;
+ wire _zz_s1_outputPayload_selValid_164;
+ wire _zz_s1_outputPayload_sel_10;
+ wire _zz_s1_outputPayload_sel_10_1;
+ wire _zz_s1_outputPayload_sel_10_2;
+ wire _zz_s1_outputPayload_sel_10_3;
+ wire _zz_s1_outputPayload_selValid_165;
+ wire _zz_s1_outputPayload_selValid_166;
+ wire _zz_s1_outputPayload_selValid_167;
+ wire _zz_s1_outputPayload_selValid_168;
+ wire _zz_s1_outputPayload_selValid_169;
+ wire _zz_s1_outputPayload_selValid_170;
+ wire _zz_s1_outputPayload_selValid_171;
+ wire _zz_s1_outputPayload_selValid_172;
+ wire _zz_s1_outputPayload_selValid_173;
+ wire _zz_s1_outputPayload_selValid_174;
+ wire _zz_s1_outputPayload_selValid_175;
+ wire _zz_s1_outputPayload_selValid_176;
+ wire _zz_s1_outputPayload_selValid_177;
+ wire _zz_s1_outputPayload_selValid_178;
+ wire _zz_s1_outputPayload_selValid_179;
+ wire _zz_s1_outputPayload_sel_11;
+ wire _zz_s1_outputPayload_sel_11_1;
+ wire _zz_s1_outputPayload_sel_11_2;
+ wire _zz_s1_outputPayload_sel_11_3;
+ wire _zz_s1_outputPayload_selValid_180;
+ wire _zz_s1_outputPayload_selValid_181;
+ wire _zz_s1_outputPayload_selValid_182;
+ wire _zz_s1_outputPayload_selValid_183;
+ wire _zz_s1_outputPayload_selValid_184;
+ wire _zz_s1_outputPayload_selValid_185;
+ wire _zz_s1_outputPayload_selValid_186;
+ wire _zz_s1_outputPayload_selValid_187;
+ wire _zz_s1_outputPayload_selValid_188;
+ wire _zz_s1_outputPayload_selValid_189;
+ wire _zz_s1_outputPayload_selValid_190;
+ wire _zz_s1_outputPayload_selValid_191;
+ wire _zz_s1_outputPayload_selValid_192;
+ wire _zz_s1_outputPayload_selValid_193;
+ wire _zz_s1_outputPayload_selValid_194;
+ wire _zz_s1_outputPayload_sel_12;
+ wire _zz_s1_outputPayload_sel_12_1;
+ wire _zz_s1_outputPayload_sel_12_2;
+ wire _zz_s1_outputPayload_sel_12_3;
+ wire _zz_s1_outputPayload_selValid_195;
+ wire _zz_s1_outputPayload_selValid_196;
+ wire _zz_s1_outputPayload_selValid_197;
+ wire _zz_s1_outputPayload_selValid_198;
+ wire _zz_s1_outputPayload_selValid_199;
+ wire _zz_s1_outputPayload_selValid_200;
+ wire _zz_s1_outputPayload_selValid_201;
+ wire _zz_s1_outputPayload_selValid_202;
+ wire _zz_s1_outputPayload_selValid_203;
+ wire _zz_s1_outputPayload_selValid_204;
+ wire _zz_s1_outputPayload_selValid_205;
+ wire _zz_s1_outputPayload_selValid_206;
+ wire _zz_s1_outputPayload_selValid_207;
+ wire _zz_s1_outputPayload_selValid_208;
+ wire _zz_s1_outputPayload_selValid_209;
+ wire _zz_s1_outputPayload_sel_13;
+ wire _zz_s1_outputPayload_sel_13_1;
+ wire _zz_s1_outputPayload_sel_13_2;
+ wire _zz_s1_outputPayload_sel_13_3;
+ wire _zz_s1_outputPayload_selValid_210;
+ wire _zz_s1_outputPayload_selValid_211;
+ wire _zz_s1_outputPayload_selValid_212;
+ wire _zz_s1_outputPayload_selValid_213;
+ wire _zz_s1_outputPayload_selValid_214;
+ wire _zz_s1_outputPayload_selValid_215;
+ wire _zz_s1_outputPayload_selValid_216;
+ wire _zz_s1_outputPayload_selValid_217;
+ wire _zz_s1_outputPayload_selValid_218;
+ wire _zz_s1_outputPayload_selValid_219;
+ wire _zz_s1_outputPayload_selValid_220;
+ wire _zz_s1_outputPayload_selValid_221;
+ wire _zz_s1_outputPayload_selValid_222;
+ wire _zz_s1_outputPayload_selValid_223;
+ wire _zz_s1_outputPayload_selValid_224;
+ wire _zz_s1_outputPayload_sel_14;
+ wire _zz_s1_outputPayload_sel_14_1;
+ wire _zz_s1_outputPayload_sel_14_2;
+ wire _zz_s1_outputPayload_sel_14_3;
+ wire _zz_s1_outputPayload_selValid_225;
+ wire _zz_s1_outputPayload_selValid_226;
+ wire _zz_s1_outputPayload_selValid_227;
+ wire _zz_s1_outputPayload_selValid_228;
+ wire _zz_s1_outputPayload_selValid_229;
+ wire _zz_s1_outputPayload_selValid_230;
+ wire _zz_s1_outputPayload_selValid_231;
+ wire _zz_s1_outputPayload_selValid_232;
+ wire _zz_s1_outputPayload_selValid_233;
+ wire _zz_s1_outputPayload_selValid_234;
+ wire _zz_s1_outputPayload_selValid_235;
+ wire _zz_s1_outputPayload_selValid_236;
+ wire _zz_s1_outputPayload_selValid_237;
+ wire _zz_s1_outputPayload_selValid_238;
+ wire _zz_s1_outputPayload_selValid_239;
+ wire _zz_s1_outputPayload_sel_15;
+ wire _zz_s1_outputPayload_sel_15_1;
+ wire _zz_s1_outputPayload_sel_15_2;
+ wire _zz_s1_outputPayload_sel_15_3;
+ wire s1_output_valid;
+ reg s1_output_ready;
+ wire [127:0] s1_output_payload_cmd_data;
+ wire [15:0] s1_output_payload_cmd_mask;
+ wire [3:0] s1_output_payload_index_0;
+ wire [3:0] s1_output_payload_index_1;
+ wire [3:0] s1_output_payload_index_2;
+ wire [3:0] s1_output_payload_index_3;
+ wire [3:0] s1_output_payload_index_4;
+ wire [3:0] s1_output_payload_index_5;
+ wire [3:0] s1_output_payload_index_6;
+ wire [3:0] s1_output_payload_index_7;
+ wire [3:0] s1_output_payload_index_8;
+ wire [3:0] s1_output_payload_index_9;
+ wire [3:0] s1_output_payload_index_10;
+ wire [3:0] s1_output_payload_index_11;
+ wire [3:0] s1_output_payload_index_12;
+ wire [3:0] s1_output_payload_index_13;
+ wire [3:0] s1_output_payload_index_14;
+ wire [3:0] s1_output_payload_index_15;
+ wire s1_output_payload_last;
+ wire [3:0] s1_output_payload_sel_0;
+ wire [3:0] s1_output_payload_sel_1;
+ wire [3:0] s1_output_payload_sel_2;
+ wire [3:0] s1_output_payload_sel_3;
+ wire [3:0] s1_output_payload_sel_4;
+ wire [3:0] s1_output_payload_sel_5;
+ wire [3:0] s1_output_payload_sel_6;
+ wire [3:0] s1_output_payload_sel_7;
+ wire [3:0] s1_output_payload_sel_8;
+ wire [3:0] s1_output_payload_sel_9;
+ wire [3:0] s1_output_payload_sel_10;
+ wire [3:0] s1_output_payload_sel_11;
+ wire [3:0] s1_output_payload_sel_12;
+ wire [3:0] s1_output_payload_sel_13;
+ wire [3:0] s1_output_payload_sel_14;
+ wire [3:0] s1_output_payload_sel_15;
+ wire [15:0] s1_output_payload_selValid;
+ wire s2_input_valid;
+ reg s2_input_ready;
+ wire [127:0] s2_input_payload_cmd_data;
+ wire [15:0] s2_input_payload_cmd_mask;
+ wire [3:0] s2_input_payload_index_0;
+ wire [3:0] s2_input_payload_index_1;
+ wire [3:0] s2_input_payload_index_2;
+ wire [3:0] s2_input_payload_index_3;
+ wire [3:0] s2_input_payload_index_4;
+ wire [3:0] s2_input_payload_index_5;
+ wire [3:0] s2_input_payload_index_6;
+ wire [3:0] s2_input_payload_index_7;
+ wire [3:0] s2_input_payload_index_8;
+ wire [3:0] s2_input_payload_index_9;
+ wire [3:0] s2_input_payload_index_10;
+ wire [3:0] s2_input_payload_index_11;
+ wire [3:0] s2_input_payload_index_12;
+ wire [3:0] s2_input_payload_index_13;
+ wire [3:0] s2_input_payload_index_14;
+ wire [3:0] s2_input_payload_index_15;
+ wire s2_input_payload_last;
+ wire [3:0] s2_input_payload_sel_0;
+ wire [3:0] s2_input_payload_sel_1;
+ wire [3:0] s2_input_payload_sel_2;
+ wire [3:0] s2_input_payload_sel_3;
+ wire [3:0] s2_input_payload_sel_4;
+ wire [3:0] s2_input_payload_sel_5;
+ wire [3:0] s2_input_payload_sel_6;
+ wire [3:0] s2_input_payload_sel_7;
+ wire [3:0] s2_input_payload_sel_8;
+ wire [3:0] s2_input_payload_sel_9;
+ wire [3:0] s2_input_payload_sel_10;
+ wire [3:0] s2_input_payload_sel_11;
+ wire [3:0] s2_input_payload_sel_12;
+ wire [3:0] s2_input_payload_sel_13;
+ wire [3:0] s2_input_payload_sel_14;
+ wire [3:0] s2_input_payload_sel_15;
+ wire [15:0] s2_input_payload_selValid;
+ reg s1_output_rValid;
+ reg [127:0] s1_output_rData_cmd_data;
+ reg [15:0] s1_output_rData_cmd_mask;
+ reg [3:0] s1_output_rData_index_0;
+ reg [3:0] s1_output_rData_index_1;
+ reg [3:0] s1_output_rData_index_2;
+ reg [3:0] s1_output_rData_index_3;
+ reg [3:0] s1_output_rData_index_4;
+ reg [3:0] s1_output_rData_index_5;
+ reg [3:0] s1_output_rData_index_6;
+ reg [3:0] s1_output_rData_index_7;
+ reg [3:0] s1_output_rData_index_8;
+ reg [3:0] s1_output_rData_index_9;
+ reg [3:0] s1_output_rData_index_10;
+ reg [3:0] s1_output_rData_index_11;
+ reg [3:0] s1_output_rData_index_12;
+ reg [3:0] s1_output_rData_index_13;
+ reg [3:0] s1_output_rData_index_14;
+ reg [3:0] s1_output_rData_index_15;
+ reg s1_output_rData_last;
+ reg [3:0] s1_output_rData_sel_0;
+ reg [3:0] s1_output_rData_sel_1;
+ reg [3:0] s1_output_rData_sel_2;
+ reg [3:0] s1_output_rData_sel_3;
+ reg [3:0] s1_output_rData_sel_4;
+ reg [3:0] s1_output_rData_sel_5;
+ reg [3:0] s1_output_rData_sel_6;
+ reg [3:0] s1_output_rData_sel_7;
+ reg [3:0] s1_output_rData_sel_8;
+ reg [3:0] s1_output_rData_sel_9;
+ reg [3:0] s1_output_rData_sel_10;
+ reg [3:0] s1_output_rData_sel_11;
+ reg [3:0] s1_output_rData_sel_12;
+ reg [3:0] s1_output_rData_sel_13;
+ reg [3:0] s1_output_rData_sel_14;
+ reg [3:0] s1_output_rData_sel_15;
+ reg [15:0] s1_output_rData_selValid;
+ wire when_Stream_l375_2;
+ wire when_DmaSg_l1464;
+ wire s2_input_fire;
+ wire [7:0] s2_inputDataBytes_0;
+ wire [7:0] s2_inputDataBytes_1;
+ wire [7:0] s2_inputDataBytes_2;
+ wire [7:0] s2_inputDataBytes_3;
+ wire [7:0] s2_inputDataBytes_4;
+ wire [7:0] s2_inputDataBytes_5;
+ wire [7:0] s2_inputDataBytes_6;
+ wire [7:0] s2_inputDataBytes_7;
+ wire [7:0] s2_inputDataBytes_8;
+ wire [7:0] s2_inputDataBytes_9;
+ wire [7:0] s2_inputDataBytes_10;
+ wire [7:0] s2_inputDataBytes_11;
+ wire [7:0] s2_inputDataBytes_12;
+ wire [7:0] s2_inputDataBytes_13;
+ wire [7:0] s2_inputDataBytes_14;
+ wire [7:0] s2_inputDataBytes_15;
+ reg s2_byteLogic_0_buffer_valid;
+ reg [7:0] s2_byteLogic_0_buffer_data;
+ wire s2_byteLogic_0_lastUsed;
+ wire s2_byteLogic_0_inputMask;
+ wire [7:0] s2_byteLogic_0_inputData;
+ wire s2_byteLogic_0_outputMask;
+ wire [7:0] s2_byteLogic_0_outputData;
+ wire when_DmaSg_l1493;
+ reg s2_byteLogic_1_buffer_valid;
+ reg [7:0] s2_byteLogic_1_buffer_data;
+ wire s2_byteLogic_1_lastUsed;
+ wire s2_byteLogic_1_inputMask;
+ wire [7:0] s2_byteLogic_1_inputData;
+ wire s2_byteLogic_1_outputMask;
+ wire [7:0] s2_byteLogic_1_outputData;
+ wire when_DmaSg_l1493_1;
+ reg s2_byteLogic_2_buffer_valid;
+ reg [7:0] s2_byteLogic_2_buffer_data;
+ wire s2_byteLogic_2_lastUsed;
+ wire s2_byteLogic_2_inputMask;
+ wire [7:0] s2_byteLogic_2_inputData;
+ wire s2_byteLogic_2_outputMask;
+ wire [7:0] s2_byteLogic_2_outputData;
+ wire when_DmaSg_l1493_2;
+ reg s2_byteLogic_3_buffer_valid;
+ reg [7:0] s2_byteLogic_3_buffer_data;
+ wire s2_byteLogic_3_lastUsed;
+ wire s2_byteLogic_3_inputMask;
+ wire [7:0] s2_byteLogic_3_inputData;
+ wire s2_byteLogic_3_outputMask;
+ wire [7:0] s2_byteLogic_3_outputData;
+ wire when_DmaSg_l1493_3;
+ reg s2_byteLogic_4_buffer_valid;
+ reg [7:0] s2_byteLogic_4_buffer_data;
+ wire s2_byteLogic_4_lastUsed;
+ wire s2_byteLogic_4_inputMask;
+ wire [7:0] s2_byteLogic_4_inputData;
+ wire s2_byteLogic_4_outputMask;
+ wire [7:0] s2_byteLogic_4_outputData;
+ wire when_DmaSg_l1493_4;
+ reg s2_byteLogic_5_buffer_valid;
+ reg [7:0] s2_byteLogic_5_buffer_data;
+ wire s2_byteLogic_5_lastUsed;
+ wire s2_byteLogic_5_inputMask;
+ wire [7:0] s2_byteLogic_5_inputData;
+ wire s2_byteLogic_5_outputMask;
+ wire [7:0] s2_byteLogic_5_outputData;
+ wire when_DmaSg_l1493_5;
+ reg s2_byteLogic_6_buffer_valid;
+ reg [7:0] s2_byteLogic_6_buffer_data;
+ wire s2_byteLogic_6_lastUsed;
+ wire s2_byteLogic_6_inputMask;
+ wire [7:0] s2_byteLogic_6_inputData;
+ wire s2_byteLogic_6_outputMask;
+ wire [7:0] s2_byteLogic_6_outputData;
+ wire when_DmaSg_l1493_6;
+ reg s2_byteLogic_7_buffer_valid;
+ reg [7:0] s2_byteLogic_7_buffer_data;
+ wire s2_byteLogic_7_lastUsed;
+ wire s2_byteLogic_7_inputMask;
+ wire [7:0] s2_byteLogic_7_inputData;
+ wire s2_byteLogic_7_outputMask;
+ wire [7:0] s2_byteLogic_7_outputData;
+ wire when_DmaSg_l1493_7;
+ reg s2_byteLogic_8_buffer_valid;
+ reg [7:0] s2_byteLogic_8_buffer_data;
+ wire s2_byteLogic_8_lastUsed;
+ wire s2_byteLogic_8_inputMask;
+ wire [7:0] s2_byteLogic_8_inputData;
+ wire s2_byteLogic_8_outputMask;
+ wire [7:0] s2_byteLogic_8_outputData;
+ wire when_DmaSg_l1493_8;
+ reg s2_byteLogic_9_buffer_valid;
+ reg [7:0] s2_byteLogic_9_buffer_data;
+ wire s2_byteLogic_9_lastUsed;
+ wire s2_byteLogic_9_inputMask;
+ wire [7:0] s2_byteLogic_9_inputData;
+ wire s2_byteLogic_9_outputMask;
+ wire [7:0] s2_byteLogic_9_outputData;
+ wire when_DmaSg_l1493_9;
+ reg s2_byteLogic_10_buffer_valid;
+ reg [7:0] s2_byteLogic_10_buffer_data;
+ wire s2_byteLogic_10_lastUsed;
+ wire s2_byteLogic_10_inputMask;
+ wire [7:0] s2_byteLogic_10_inputData;
+ wire s2_byteLogic_10_outputMask;
+ wire [7:0] s2_byteLogic_10_outputData;
+ wire when_DmaSg_l1493_10;
+ reg s2_byteLogic_11_buffer_valid;
+ reg [7:0] s2_byteLogic_11_buffer_data;
+ wire s2_byteLogic_11_lastUsed;
+ wire s2_byteLogic_11_inputMask;
+ wire [7:0] s2_byteLogic_11_inputData;
+ wire s2_byteLogic_11_outputMask;
+ wire [7:0] s2_byteLogic_11_outputData;
+ wire when_DmaSg_l1493_11;
+ reg s2_byteLogic_12_buffer_valid;
+ reg [7:0] s2_byteLogic_12_buffer_data;
+ wire s2_byteLogic_12_lastUsed;
+ wire s2_byteLogic_12_inputMask;
+ wire [7:0] s2_byteLogic_12_inputData;
+ wire s2_byteLogic_12_outputMask;
+ wire [7:0] s2_byteLogic_12_outputData;
+ wire when_DmaSg_l1493_12;
+ reg s2_byteLogic_13_buffer_valid;
+ reg [7:0] s2_byteLogic_13_buffer_data;
+ wire s2_byteLogic_13_lastUsed;
+ wire s2_byteLogic_13_inputMask;
+ wire [7:0] s2_byteLogic_13_inputData;
+ wire s2_byteLogic_13_outputMask;
+ wire [7:0] s2_byteLogic_13_outputData;
+ wire when_DmaSg_l1493_13;
+ reg s2_byteLogic_14_buffer_valid;
+ reg [7:0] s2_byteLogic_14_buffer_data;
+ wire s2_byteLogic_14_lastUsed;
+ wire s2_byteLogic_14_inputMask;
+ wire [7:0] s2_byteLogic_14_inputData;
+ wire s2_byteLogic_14_outputMask;
+ wire [7:0] s2_byteLogic_14_outputData;
+ wire when_DmaSg_l1493_14;
+ reg s2_byteLogic_15_buffer_valid;
+ reg [7:0] s2_byteLogic_15_buffer_data;
+ wire s2_byteLogic_15_lastUsed;
+ wire s2_byteLogic_15_inputMask;
+ wire [7:0] s2_byteLogic_15_inputData;
+ wire s2_byteLogic_15_outputMask;
+ wire [7:0] s2_byteLogic_15_outputData;
+ wire when_DmaSg_l1493_15;
+ wire _zz_io_output_usedUntil;
+ wire _zz_io_output_usedUntil_1;
+ wire _zz_io_output_usedUntil_2;
+ wire _zz_io_output_usedUntil_3;
+
+ assign _zz_s0_countOnesLogic_3_13 = _zz_s0_countOnesLogic_3;
+ assign _zz_s0_countOnesLogic_3_12 = {2'd0, _zz_s0_countOnesLogic_3_13};
+ assign _zz_s0_countOnesLogic_4_13 = {_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3};
+ assign _zz_s0_countOnesLogic_4_12 = {1'd0, _zz_s0_countOnesLogic_4_13};
+ assign _zz_s0_countOnesLogic_6_9 = (_zz_s0_countOnesLogic_6_10 + _zz_s0_countOnesLogic_6_12);
+ assign _zz_s0_countOnesLogic_6_16 = _zz_s0_countOnesLogic_6;
+ assign _zz_s0_countOnesLogic_6_15 = {2'd0, _zz_s0_countOnesLogic_6_16};
+ assign _zz_s0_countOnesLogic_7_9 = (_zz_s0_countOnesLogic_7_10 + _zz_s0_countOnesLogic_7_12);
+ assign _zz_s0_countOnesLogic_7_16 = {_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6};
+ assign _zz_s0_countOnesLogic_7_15 = {1'd0, _zz_s0_countOnesLogic_7_16};
+ assign _zz_s0_countOnesLogic_8_9 = (_zz_s0_countOnesLogic_8_10 + _zz_s0_countOnesLogic_8_12);
+ assign _zz_s0_countOnesLogic_9_9 = (_zz_s0_countOnesLogic_9_10 + _zz_s0_countOnesLogic_9_12);
+ assign _zz_s0_countOnesLogic_9_14 = (_zz_s0_countOnesLogic_9_15 + _zz_s0_countOnesLogic_9_17);
+ assign _zz_s0_countOnesLogic_9_19 = _zz_s0_countOnesLogic_9;
+ assign _zz_s0_countOnesLogic_9_18 = {2'd0, _zz_s0_countOnesLogic_9_19};
+ assign _zz_s0_countOnesLogic_10_9 = (_zz_s0_countOnesLogic_10_10 + _zz_s0_countOnesLogic_10_12);
+ assign _zz_s0_countOnesLogic_10_14 = (_zz_s0_countOnesLogic_10_15 + _zz_s0_countOnesLogic_10_17);
+ assign _zz_s0_countOnesLogic_10_19 = {_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9};
+ assign _zz_s0_countOnesLogic_10_18 = {1'd0, _zz_s0_countOnesLogic_10_19};
+ assign _zz_s0_countOnesLogic_11_9 = (_zz_s0_countOnesLogic_11_10 + _zz_s0_countOnesLogic_11_12);
+ assign _zz_s0_countOnesLogic_11_14 = (_zz_s0_countOnesLogic_11_15 + _zz_s0_countOnesLogic_11_17);
+ assign _zz_s0_countOnesLogic_12_9 = (_zz_s0_countOnesLogic_12_10 + _zz_s0_countOnesLogic_12_15);
+ assign _zz_s0_countOnesLogic_12_10 = (_zz_s0_countOnesLogic_12_11 + _zz_s0_countOnesLogic_12_13);
+ assign _zz_s0_countOnesLogic_12_15 = (_zz_s0_countOnesLogic_12_16 + _zz_s0_countOnesLogic_12_18);
+ assign _zz_s0_countOnesLogic_12_22 = _zz_s0_countOnesLogic_12;
+ assign _zz_s0_countOnesLogic_12_21 = {2'd0, _zz_s0_countOnesLogic_12_22};
+ assign _zz_s0_countOnesLogic_13_9 = (_zz_s0_countOnesLogic_13_10 + _zz_s0_countOnesLogic_13_15);
+ assign _zz_s0_countOnesLogic_13_10 = (_zz_s0_countOnesLogic_13_11 + _zz_s0_countOnesLogic_13_13);
+ assign _zz_s0_countOnesLogic_13_15 = (_zz_s0_countOnesLogic_13_16 + _zz_s0_countOnesLogic_13_18);
+ assign _zz_s0_countOnesLogic_13_22 = {_zz_s0_countOnesLogic_13,_zz_s0_countOnesLogic_12};
+ assign _zz_s0_countOnesLogic_13_21 = {1'd0, _zz_s0_countOnesLogic_13_22};
+ assign _zz_s0_countOnesLogic_14_9 = (_zz_s0_countOnesLogic_14_10 + _zz_s0_countOnesLogic_14_15);
+ assign _zz_s0_countOnesLogic_14_10 = (_zz_s0_countOnesLogic_14_11 + _zz_s0_countOnesLogic_14_13);
+ assign _zz_s0_countOnesLogic_14_15 = (_zz_s0_countOnesLogic_14_16 + _zz_s0_countOnesLogic_14_18);
+ assign _zz_s0_countOnesLogic_15_8 = (_zz_s0_countOnesLogic_15_9 + _zz_s0_countOnesLogic_15_14);
+ assign _zz_s0_countOnesLogic_15_9 = (_zz_s0_countOnesLogic_15_10 + _zz_s0_countOnesLogic_15_12);
+ assign _zz_s0_countOnesLogic_15_14 = (_zz_s0_countOnesLogic_15_15 + _zz_s0_countOnesLogic_15_17);
+ assign _zz_s0_countOnesLogic_15_19 = (_zz_s0_countOnesLogic_15_20 + _zz_s0_countOnesLogic_15_22);
+ assign _zz_s0_countOnesLogic_15_24 = s0_input_payload_mask[15];
+ assign _zz_s0_countOnesLogic_15_23 = {2'd0, _zz_s0_countOnesLogic_15_24};
+ assign _zz_s1_offsetNext = {1'd0, s1_offset};
+ assign _zz_s1_byteCounter = {8'd0, s1_input_payload_countOnes_15};
+ assign _zz_s1_inputIndexes_1 = {3'd0, s1_input_payload_countOnes_0};
+ assign _zz_s1_inputIndexes_2 = {2'd0, s1_input_payload_countOnes_1};
+ assign _zz_s1_inputIndexes_3 = {2'd0, s1_input_payload_countOnes_2};
+ assign _zz_s1_inputIndexes_4 = {1'd0, s1_input_payload_countOnes_3};
+ assign _zz_s1_inputIndexes_5 = {1'd0, s1_input_payload_countOnes_4};
+ assign _zz_s1_inputIndexes_6 = {1'd0, s1_input_payload_countOnes_5};
+ assign _zz_s1_inputIndexes_7 = {1'd0, s1_input_payload_countOnes_6};
+ assign _zz_when_DmaSg_l1464 = {1'd0, io_burstLength};
+ assign _zz_s0_countOnesLogic_0_2 = _zz_s0_countOnesLogic_0;
+ assign _zz_s0_countOnesLogic_1_2 = {_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0};
+ assign _zz_s0_countOnesLogic_2_2 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_3_10 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_4_10 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_5_10 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_5_12 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_6_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_6_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_7_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_7_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_8_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_8_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_8_15 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_9_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_9_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_9_16 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_10_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_10_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_10_16 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_11_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_11_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_11_16 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_11_18 = {_zz_s0_countOnesLogic_11,{_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9}};
+ assign _zz_s0_countOnesLogic_12_12 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_12_14 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_12_17 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_12_19 = {_zz_s0_countOnesLogic_11,{_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9}};
+ assign _zz_s0_countOnesLogic_13_12 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_13_14 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_13_17 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_13_19 = {_zz_s0_countOnesLogic_11,{_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9}};
+ assign _zz_s0_countOnesLogic_14_12 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_14_14 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_14_17 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_14_19 = {_zz_s0_countOnesLogic_11,{_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9}};
+ assign _zz_s0_countOnesLogic_14_21 = {_zz_s0_countOnesLogic_14,{_zz_s0_countOnesLogic_13,_zz_s0_countOnesLogic_12}};
+ assign _zz_s0_countOnesLogic_15_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_15_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_15_16 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_15_18 = {_zz_s0_countOnesLogic_11,{_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9}};
+ assign _zz_s0_countOnesLogic_15_21 = {_zz_s0_countOnesLogic_14,{_zz_s0_countOnesLogic_13,_zz_s0_countOnesLogic_12}};
+ assign _zz_io_output_usedUntil_5 = {_zz_io_output_usedUntil_3,{_zz_io_output_usedUntil_2,{_zz_io_output_usedUntil_1,_zz_io_output_usedUntil}}};
+ assign _zz_s1_outputPayload_selValid_240 = _zz_s1_outputPayload_selValid_6;
+ assign _zz_s1_outputPayload_selValid_241 = {_zz_s1_outputPayload_selValid_5,{_zz_s1_outputPayload_selValid_4,{_zz_s1_outputPayload_selValid_3,{_zz_s1_outputPayload_selValid_2,{_zz_s1_outputPayload_selValid_1,{_zz_s1_outputPayload_selValid,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0000))}}}}}};
+ assign _zz_s1_outputPayload_selValid_242 = _zz_s1_outputPayload_selValid_21;
+ assign _zz_s1_outputPayload_selValid_243 = {_zz_s1_outputPayload_selValid_20,{_zz_s1_outputPayload_selValid_19,{_zz_s1_outputPayload_selValid_18,{_zz_s1_outputPayload_selValid_17,{_zz_s1_outputPayload_selValid_16,{_zz_s1_outputPayload_selValid_15,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0001))}}}}}};
+ assign _zz_s1_outputPayload_selValid_244 = _zz_s1_outputPayload_selValid_36;
+ assign _zz_s1_outputPayload_selValid_245 = {_zz_s1_outputPayload_selValid_35,{_zz_s1_outputPayload_selValid_34,{_zz_s1_outputPayload_selValid_33,{_zz_s1_outputPayload_selValid_32,{_zz_s1_outputPayload_selValid_31,{_zz_s1_outputPayload_selValid_30,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0010))}}}}}};
+ assign _zz_s1_outputPayload_selValid_246 = _zz_s1_outputPayload_selValid_51;
+ assign _zz_s1_outputPayload_selValid_247 = {_zz_s1_outputPayload_selValid_50,{_zz_s1_outputPayload_selValid_49,{_zz_s1_outputPayload_selValid_48,{_zz_s1_outputPayload_selValid_47,{_zz_s1_outputPayload_selValid_46,{_zz_s1_outputPayload_selValid_45,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0011))}}}}}};
+ assign _zz_s1_outputPayload_selValid_248 = _zz_s1_outputPayload_selValid_66;
+ assign _zz_s1_outputPayload_selValid_249 = {_zz_s1_outputPayload_selValid_65,{_zz_s1_outputPayload_selValid_64,{_zz_s1_outputPayload_selValid_63,{_zz_s1_outputPayload_selValid_62,{_zz_s1_outputPayload_selValid_61,{_zz_s1_outputPayload_selValid_60,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0100))}}}}}};
+ assign _zz_s1_outputPayload_selValid_250 = _zz_s1_outputPayload_selValid_81;
+ assign _zz_s1_outputPayload_selValid_251 = {_zz_s1_outputPayload_selValid_80,{_zz_s1_outputPayload_selValid_79,{_zz_s1_outputPayload_selValid_78,{_zz_s1_outputPayload_selValid_77,{_zz_s1_outputPayload_selValid_76,{_zz_s1_outputPayload_selValid_75,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0101))}}}}}};
+ assign _zz_s1_outputPayload_selValid_252 = _zz_s1_outputPayload_selValid_96;
+ assign _zz_s1_outputPayload_selValid_253 = {_zz_s1_outputPayload_selValid_95,{_zz_s1_outputPayload_selValid_94,{_zz_s1_outputPayload_selValid_93,{_zz_s1_outputPayload_selValid_92,{_zz_s1_outputPayload_selValid_91,{_zz_s1_outputPayload_selValid_90,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0110))}}}}}};
+ assign _zz_s1_outputPayload_selValid_254 = _zz_s1_outputPayload_selValid_111;
+ assign _zz_s1_outputPayload_selValid_255 = {_zz_s1_outputPayload_selValid_110,{_zz_s1_outputPayload_selValid_109,{_zz_s1_outputPayload_selValid_108,{_zz_s1_outputPayload_selValid_107,{_zz_s1_outputPayload_selValid_106,{_zz_s1_outputPayload_selValid_105,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0111))}}}}}};
+ assign _zz_s1_outputPayload_selValid_256 = _zz_s1_outputPayload_selValid_126;
+ assign _zz_s1_outputPayload_selValid_257 = {_zz_s1_outputPayload_selValid_125,{_zz_s1_outputPayload_selValid_124,{_zz_s1_outputPayload_selValid_123,{_zz_s1_outputPayload_selValid_122,{_zz_s1_outputPayload_selValid_121,{_zz_s1_outputPayload_selValid_120,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1000))}}}}}};
+ assign _zz_s1_outputPayload_selValid_258 = _zz_s1_outputPayload_selValid_141;
+ assign _zz_s1_outputPayload_selValid_259 = {_zz_s1_outputPayload_selValid_140,{_zz_s1_outputPayload_selValid_139,{_zz_s1_outputPayload_selValid_138,{_zz_s1_outputPayload_selValid_137,{_zz_s1_outputPayload_selValid_136,{_zz_s1_outputPayload_selValid_135,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1001))}}}}}};
+ assign _zz_s1_outputPayload_selValid_260 = _zz_s1_outputPayload_selValid_156;
+ assign _zz_s1_outputPayload_selValid_261 = {_zz_s1_outputPayload_selValid_155,{_zz_s1_outputPayload_selValid_154,{_zz_s1_outputPayload_selValid_153,{_zz_s1_outputPayload_selValid_152,{_zz_s1_outputPayload_selValid_151,{_zz_s1_outputPayload_selValid_150,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1010))}}}}}};
+ assign _zz_s1_outputPayload_selValid_262 = _zz_s1_outputPayload_selValid_171;
+ assign _zz_s1_outputPayload_selValid_263 = {_zz_s1_outputPayload_selValid_170,{_zz_s1_outputPayload_selValid_169,{_zz_s1_outputPayload_selValid_168,{_zz_s1_outputPayload_selValid_167,{_zz_s1_outputPayload_selValid_166,{_zz_s1_outputPayload_selValid_165,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1011))}}}}}};
+ assign _zz_s1_outputPayload_selValid_264 = _zz_s1_outputPayload_selValid_186;
+ assign _zz_s1_outputPayload_selValid_265 = {_zz_s1_outputPayload_selValid_185,{_zz_s1_outputPayload_selValid_184,{_zz_s1_outputPayload_selValid_183,{_zz_s1_outputPayload_selValid_182,{_zz_s1_outputPayload_selValid_181,{_zz_s1_outputPayload_selValid_180,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1100))}}}}}};
+ assign _zz_s1_outputPayload_selValid_266 = _zz_s1_outputPayload_selValid_201;
+ assign _zz_s1_outputPayload_selValid_267 = {_zz_s1_outputPayload_selValid_200,{_zz_s1_outputPayload_selValid_199,{_zz_s1_outputPayload_selValid_198,{_zz_s1_outputPayload_selValid_197,{_zz_s1_outputPayload_selValid_196,{_zz_s1_outputPayload_selValid_195,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1101))}}}}}};
+ assign _zz_s1_outputPayload_selValid_268 = _zz_s1_outputPayload_selValid_216;
+ assign _zz_s1_outputPayload_selValid_269 = {_zz_s1_outputPayload_selValid_215,{_zz_s1_outputPayload_selValid_214,{_zz_s1_outputPayload_selValid_213,{_zz_s1_outputPayload_selValid_212,{_zz_s1_outputPayload_selValid_211,{_zz_s1_outputPayload_selValid_210,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1110))}}}}}};
+ assign _zz_s1_outputPayload_selValid_270 = _zz_s1_outputPayload_selValid_231;
+ assign _zz_s1_outputPayload_selValid_271 = {_zz_s1_outputPayload_selValid_230,{_zz_s1_outputPayload_selValid_229,{_zz_s1_outputPayload_selValid_228,{_zz_s1_outputPayload_selValid_227,{_zz_s1_outputPayload_selValid_226,{_zz_s1_outputPayload_selValid_225,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1111))}}}}}};
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_0_2)
+ 1'b0 : _zz_s0_countOnesLogic_0_1 = 1'b0;
+ default : _zz_s0_countOnesLogic_0_1 = 1'b1;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_1_2)
+ 2'b00 : _zz_s0_countOnesLogic_1_1 = 2'b00;
+ 2'b01 : _zz_s0_countOnesLogic_1_1 = 2'b01;
+ 2'b10 : _zz_s0_countOnesLogic_1_1 = 2'b01;
+ default : _zz_s0_countOnesLogic_1_1 = 2'b10;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_2_2)
+ 3'b000 : _zz_s0_countOnesLogic_2_1 = 2'b00;
+ 3'b001 : _zz_s0_countOnesLogic_2_1 = 2'b01;
+ 3'b010 : _zz_s0_countOnesLogic_2_1 = 2'b01;
+ 3'b011 : _zz_s0_countOnesLogic_2_1 = 2'b10;
+ 3'b100 : _zz_s0_countOnesLogic_2_1 = 2'b01;
+ 3'b101 : _zz_s0_countOnesLogic_2_1 = 2'b10;
+ 3'b110 : _zz_s0_countOnesLogic_2_1 = 2'b10;
+ default : _zz_s0_countOnesLogic_2_1 = 2'b11;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_3_10)
+ 3'b000 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_1;
+ 3'b001 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_2;
+ 3'b010 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_3;
+ 3'b011 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_4;
+ 3'b100 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_5;
+ 3'b101 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_6;
+ 3'b110 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_7;
+ default : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_3_12)
+ 3'b000 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_1;
+ 3'b001 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_2;
+ 3'b010 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_3;
+ 3'b011 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_4;
+ 3'b100 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_5;
+ 3'b101 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_6;
+ 3'b110 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_7;
+ default : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_4_10)
+ 3'b000 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_1;
+ 3'b001 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_2;
+ 3'b010 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_3;
+ 3'b011 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_4;
+ 3'b100 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_5;
+ 3'b101 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_6;
+ 3'b110 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_7;
+ default : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_4_12)
+ 3'b000 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_1;
+ 3'b001 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_2;
+ 3'b010 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_3;
+ 3'b011 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_4;
+ 3'b100 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_5;
+ 3'b101 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_6;
+ 3'b110 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_7;
+ default : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_5_10)
+ 3'b000 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_1;
+ 3'b001 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_2;
+ 3'b010 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_3;
+ 3'b011 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_4;
+ 3'b100 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_5;
+ 3'b101 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_6;
+ 3'b110 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_7;
+ default : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_5_12)
+ 3'b000 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_1;
+ 3'b001 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_2;
+ 3'b010 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_3;
+ 3'b011 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_4;
+ 3'b100 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_5;
+ 3'b101 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_6;
+ 3'b110 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_7;
+ default : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_6_11)
+ 3'b000 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_1;
+ 3'b001 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_2;
+ 3'b010 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_3;
+ 3'b011 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_4;
+ 3'b100 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_5;
+ 3'b101 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_6;
+ 3'b110 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_7;
+ default : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_6_13)
+ 3'b000 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_1;
+ 3'b001 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_2;
+ 3'b010 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_3;
+ 3'b011 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_4;
+ 3'b100 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_5;
+ 3'b101 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_6;
+ 3'b110 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_7;
+ default : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_6_15)
+ 3'b000 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_1;
+ 3'b001 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_2;
+ 3'b010 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_3;
+ 3'b011 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_4;
+ 3'b100 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_5;
+ 3'b101 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_6;
+ 3'b110 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_7;
+ default : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_7_11)
+ 3'b000 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_1;
+ 3'b001 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_2;
+ 3'b010 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_3;
+ 3'b011 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_4;
+ 3'b100 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_5;
+ 3'b101 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_6;
+ 3'b110 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_7;
+ default : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_7_13)
+ 3'b000 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_1;
+ 3'b001 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_2;
+ 3'b010 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_3;
+ 3'b011 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_4;
+ 3'b100 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_5;
+ 3'b101 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_6;
+ 3'b110 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_7;
+ default : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_7_15)
+ 3'b000 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_1;
+ 3'b001 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_2;
+ 3'b010 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_3;
+ 3'b011 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_4;
+ 3'b100 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_5;
+ 3'b101 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_6;
+ 3'b110 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_7;
+ default : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_8_11)
+ 3'b000 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_1;
+ 3'b001 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_2;
+ 3'b010 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_3;
+ 3'b011 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_4;
+ 3'b100 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_5;
+ 3'b101 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_6;
+ 3'b110 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_7;
+ default : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_8_13)
+ 3'b000 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_1;
+ 3'b001 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_2;
+ 3'b010 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_3;
+ 3'b011 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_4;
+ 3'b100 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_5;
+ 3'b101 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_6;
+ 3'b110 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_7;
+ default : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_8_15)
+ 3'b000 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_1;
+ 3'b001 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_2;
+ 3'b010 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_3;
+ 3'b011 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_4;
+ 3'b100 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_5;
+ 3'b101 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_6;
+ 3'b110 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_7;
+ default : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_9_11)
+ 3'b000 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_1;
+ 3'b001 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_2;
+ 3'b010 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_3;
+ 3'b011 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_4;
+ 3'b100 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_5;
+ 3'b101 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_6;
+ 3'b110 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_7;
+ default : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_9_13)
+ 3'b000 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_1;
+ 3'b001 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_2;
+ 3'b010 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_3;
+ 3'b011 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_4;
+ 3'b100 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_5;
+ 3'b101 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_6;
+ 3'b110 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_7;
+ default : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_9_16)
+ 3'b000 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_1;
+ 3'b001 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_2;
+ 3'b010 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_3;
+ 3'b011 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_4;
+ 3'b100 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_5;
+ 3'b101 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_6;
+ 3'b110 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_7;
+ default : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_9_18)
+ 3'b000 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_1;
+ 3'b001 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_2;
+ 3'b010 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_3;
+ 3'b011 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_4;
+ 3'b100 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_5;
+ 3'b101 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_6;
+ 3'b110 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_7;
+ default : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_10_11)
+ 3'b000 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_1;
+ 3'b001 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_2;
+ 3'b010 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_3;
+ 3'b011 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_4;
+ 3'b100 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_5;
+ 3'b101 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_6;
+ 3'b110 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_7;
+ default : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_10_13)
+ 3'b000 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_1;
+ 3'b001 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_2;
+ 3'b010 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_3;
+ 3'b011 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_4;
+ 3'b100 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_5;
+ 3'b101 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_6;
+ 3'b110 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_7;
+ default : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_10_16)
+ 3'b000 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_1;
+ 3'b001 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_2;
+ 3'b010 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_3;
+ 3'b011 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_4;
+ 3'b100 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_5;
+ 3'b101 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_6;
+ 3'b110 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_7;
+ default : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_10_18)
+ 3'b000 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_1;
+ 3'b001 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_2;
+ 3'b010 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_3;
+ 3'b011 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_4;
+ 3'b100 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_5;
+ 3'b101 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_6;
+ 3'b110 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_7;
+ default : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_11_11)
+ 3'b000 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_1;
+ 3'b001 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_2;
+ 3'b010 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_3;
+ 3'b011 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_4;
+ 3'b100 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_5;
+ 3'b101 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_6;
+ 3'b110 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_7;
+ default : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_11_13)
+ 3'b000 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_1;
+ 3'b001 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_2;
+ 3'b010 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_3;
+ 3'b011 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_4;
+ 3'b100 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_5;
+ 3'b101 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_6;
+ 3'b110 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_7;
+ default : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_11_16)
+ 3'b000 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_1;
+ 3'b001 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_2;
+ 3'b010 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_3;
+ 3'b011 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_4;
+ 3'b100 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_5;
+ 3'b101 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_6;
+ 3'b110 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_7;
+ default : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_11_18)
+ 3'b000 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_1;
+ 3'b001 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_2;
+ 3'b010 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_3;
+ 3'b011 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_4;
+ 3'b100 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_5;
+ 3'b101 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_6;
+ 3'b110 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_7;
+ default : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_12_12)
+ 3'b000 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_1;
+ 3'b001 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_2;
+ 3'b010 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_3;
+ 3'b011 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_4;
+ 3'b100 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_5;
+ 3'b101 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_6;
+ 3'b110 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_7;
+ default : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_12_14)
+ 3'b000 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_1;
+ 3'b001 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_2;
+ 3'b010 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_3;
+ 3'b011 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_4;
+ 3'b100 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_5;
+ 3'b101 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_6;
+ 3'b110 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_7;
+ default : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_12_17)
+ 3'b000 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_1;
+ 3'b001 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_2;
+ 3'b010 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_3;
+ 3'b011 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_4;
+ 3'b100 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_5;
+ 3'b101 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_6;
+ 3'b110 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_7;
+ default : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_12_19)
+ 3'b000 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_1;
+ 3'b001 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_2;
+ 3'b010 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_3;
+ 3'b011 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_4;
+ 3'b100 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_5;
+ 3'b101 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_6;
+ 3'b110 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_7;
+ default : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_12_21)
+ 3'b000 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_1;
+ 3'b001 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_2;
+ 3'b010 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_3;
+ 3'b011 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_4;
+ 3'b100 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_5;
+ 3'b101 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_6;
+ 3'b110 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_7;
+ default : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_13_12)
+ 3'b000 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_1;
+ 3'b001 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_2;
+ 3'b010 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_3;
+ 3'b011 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_4;
+ 3'b100 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_5;
+ 3'b101 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_6;
+ 3'b110 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_7;
+ default : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_13_14)
+ 3'b000 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_1;
+ 3'b001 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_2;
+ 3'b010 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_3;
+ 3'b011 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_4;
+ 3'b100 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_5;
+ 3'b101 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_6;
+ 3'b110 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_7;
+ default : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_13_17)
+ 3'b000 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_1;
+ 3'b001 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_2;
+ 3'b010 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_3;
+ 3'b011 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_4;
+ 3'b100 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_5;
+ 3'b101 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_6;
+ 3'b110 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_7;
+ default : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_13_19)
+ 3'b000 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_1;
+ 3'b001 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_2;
+ 3'b010 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_3;
+ 3'b011 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_4;
+ 3'b100 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_5;
+ 3'b101 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_6;
+ 3'b110 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_7;
+ default : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_13_21)
+ 3'b000 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_1;
+ 3'b001 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_2;
+ 3'b010 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_3;
+ 3'b011 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_4;
+ 3'b100 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_5;
+ 3'b101 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_6;
+ 3'b110 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_7;
+ default : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_14_12)
+ 3'b000 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_1;
+ 3'b001 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_2;
+ 3'b010 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_3;
+ 3'b011 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_4;
+ 3'b100 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_5;
+ 3'b101 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_6;
+ 3'b110 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_7;
+ default : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_14_14)
+ 3'b000 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_1;
+ 3'b001 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_2;
+ 3'b010 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_3;
+ 3'b011 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_4;
+ 3'b100 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_5;
+ 3'b101 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_6;
+ 3'b110 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_7;
+ default : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_14_17)
+ 3'b000 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_1;
+ 3'b001 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_2;
+ 3'b010 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_3;
+ 3'b011 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_4;
+ 3'b100 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_5;
+ 3'b101 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_6;
+ 3'b110 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_7;
+ default : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_14_19)
+ 3'b000 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_1;
+ 3'b001 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_2;
+ 3'b010 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_3;
+ 3'b011 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_4;
+ 3'b100 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_5;
+ 3'b101 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_6;
+ 3'b110 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_7;
+ default : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_14_21)
+ 3'b000 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_1;
+ 3'b001 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_2;
+ 3'b010 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_3;
+ 3'b011 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_4;
+ 3'b100 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_5;
+ 3'b101 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_6;
+ 3'b110 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_7;
+ default : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_11)
+ 3'b000 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_13)
+ 3'b000 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_16)
+ 3'b000 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_18)
+ 3'b000 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_21)
+ 3'b000 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_23)
+ 3'b000 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_0)
+ 4'b0000 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_1)
+ 4'b0000 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_2)
+ 4'b0000 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_3)
+ 4'b0000 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_4)
+ 4'b0000 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_5)
+ 4'b0000 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_6)
+ 4'b0000 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_7)
+ 4'b0000 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_8)
+ 4'b0000 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_9)
+ 4'b0000 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_10)
+ 4'b0000 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_11)
+ 4'b0000 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_12)
+ 4'b0000 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_13)
+ 4'b0000 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_14)
+ 4'b0000 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_15)
+ 4'b0000 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_io_output_usedUntil_5)
+ 4'b0000 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_0;
+ 4'b0001 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_1;
+ 4'b0010 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_2;
+ 4'b0011 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_3;
+ 4'b0100 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_4;
+ 4'b0101 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_5;
+ 4'b0110 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_6;
+ 4'b0111 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_7;
+ 4'b1000 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_8;
+ 4'b1001 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_9;
+ 4'b1010 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_10;
+ 4'b1011 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_11;
+ 4'b1100 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_12;
+ 4'b1101 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_13;
+ 4'b1110 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_14;
+ default : _zz_io_output_usedUntil_4 = s2_input_payload_sel_15;
+ endcase
+ end
+
+ always @(*) begin
+ io_input_ready = s0_input_ready;
+ if(when_Stream_l375) begin
+ io_input_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! s0_input_valid);
+ assign s0_input_valid = io_input_rValid;
+ assign s0_input_payload_data = io_input_rData_data;
+ assign s0_input_payload_mask = io_input_rData_mask;
+ assign _zz_s0_countOnesLogic_0 = s0_input_payload_mask[0];
+ assign _zz_s0_countOnesLogic_1 = s0_input_payload_mask[1];
+ assign _zz_s0_countOnesLogic_2 = s0_input_payload_mask[2];
+ assign _zz_s0_countOnesLogic_3 = s0_input_payload_mask[3];
+ assign _zz_s0_countOnesLogic_4 = s0_input_payload_mask[4];
+ assign _zz_s0_countOnesLogic_5 = s0_input_payload_mask[5];
+ assign _zz_s0_countOnesLogic_6 = s0_input_payload_mask[6];
+ assign _zz_s0_countOnesLogic_7 = s0_input_payload_mask[7];
+ assign _zz_s0_countOnesLogic_8 = s0_input_payload_mask[8];
+ assign _zz_s0_countOnesLogic_9 = s0_input_payload_mask[9];
+ assign _zz_s0_countOnesLogic_10 = s0_input_payload_mask[10];
+ assign _zz_s0_countOnesLogic_11 = s0_input_payload_mask[11];
+ assign _zz_s0_countOnesLogic_12 = s0_input_payload_mask[12];
+ assign _zz_s0_countOnesLogic_13 = s0_input_payload_mask[13];
+ assign _zz_s0_countOnesLogic_14 = s0_input_payload_mask[14];
+ assign s0_countOnesLogic_0 = _zz_s0_countOnesLogic_0_1;
+ assign s0_countOnesLogic_1 = _zz_s0_countOnesLogic_1_1;
+ assign s0_countOnesLogic_2 = _zz_s0_countOnesLogic_2_1;
+ assign _zz_s0_countOnesLogic_3_1 = 3'b000;
+ assign _zz_s0_countOnesLogic_3_2 = 3'b001;
+ assign _zz_s0_countOnesLogic_3_3 = 3'b001;
+ assign _zz_s0_countOnesLogic_3_4 = 3'b010;
+ assign _zz_s0_countOnesLogic_3_5 = 3'b001;
+ assign _zz_s0_countOnesLogic_3_6 = 3'b010;
+ assign _zz_s0_countOnesLogic_3_7 = 3'b010;
+ assign _zz_s0_countOnesLogic_3_8 = 3'b011;
+ assign s0_countOnesLogic_3 = (_zz_s0_countOnesLogic_3_9 + _zz_s0_countOnesLogic_3_11);
+ assign _zz_s0_countOnesLogic_4_1 = 3'b000;
+ assign _zz_s0_countOnesLogic_4_2 = 3'b001;
+ assign _zz_s0_countOnesLogic_4_3 = 3'b001;
+ assign _zz_s0_countOnesLogic_4_4 = 3'b010;
+ assign _zz_s0_countOnesLogic_4_5 = 3'b001;
+ assign _zz_s0_countOnesLogic_4_6 = 3'b010;
+ assign _zz_s0_countOnesLogic_4_7 = 3'b010;
+ assign _zz_s0_countOnesLogic_4_8 = 3'b011;
+ assign s0_countOnesLogic_4 = (_zz_s0_countOnesLogic_4_9 + _zz_s0_countOnesLogic_4_11);
+ assign _zz_s0_countOnesLogic_5_1 = 3'b000;
+ assign _zz_s0_countOnesLogic_5_2 = 3'b001;
+ assign _zz_s0_countOnesLogic_5_3 = 3'b001;
+ assign _zz_s0_countOnesLogic_5_4 = 3'b010;
+ assign _zz_s0_countOnesLogic_5_5 = 3'b001;
+ assign _zz_s0_countOnesLogic_5_6 = 3'b010;
+ assign _zz_s0_countOnesLogic_5_7 = 3'b010;
+ assign _zz_s0_countOnesLogic_5_8 = 3'b011;
+ assign s0_countOnesLogic_5 = (_zz_s0_countOnesLogic_5_9 + _zz_s0_countOnesLogic_5_11);
+ assign _zz_s0_countOnesLogic_6_1 = 3'b000;
+ assign _zz_s0_countOnesLogic_6_2 = 3'b001;
+ assign _zz_s0_countOnesLogic_6_3 = 3'b001;
+ assign _zz_s0_countOnesLogic_6_4 = 3'b010;
+ assign _zz_s0_countOnesLogic_6_5 = 3'b001;
+ assign _zz_s0_countOnesLogic_6_6 = 3'b010;
+ assign _zz_s0_countOnesLogic_6_7 = 3'b010;
+ assign _zz_s0_countOnesLogic_6_8 = 3'b011;
+ assign s0_countOnesLogic_6 = (_zz_s0_countOnesLogic_6_9 + _zz_s0_countOnesLogic_6_14);
+ assign _zz_s0_countOnesLogic_7_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_7_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_7_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_7_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_7_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_7_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_7_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_7_8 = 4'b0011;
+ assign s0_countOnesLogic_7 = (_zz_s0_countOnesLogic_7_9 + _zz_s0_countOnesLogic_7_14);
+ assign _zz_s0_countOnesLogic_8_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_8_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_8_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_8_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_8_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_8_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_8_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_8_8 = 4'b0011;
+ assign s0_countOnesLogic_8 = (_zz_s0_countOnesLogic_8_9 + _zz_s0_countOnesLogic_8_14);
+ assign _zz_s0_countOnesLogic_9_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_9_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_9_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_9_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_9_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_9_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_9_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_9_8 = 4'b0011;
+ assign s0_countOnesLogic_9 = (_zz_s0_countOnesLogic_9_9 + _zz_s0_countOnesLogic_9_14);
+ assign _zz_s0_countOnesLogic_10_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_10_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_10_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_10_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_10_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_10_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_10_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_10_8 = 4'b0011;
+ assign s0_countOnesLogic_10 = (_zz_s0_countOnesLogic_10_9 + _zz_s0_countOnesLogic_10_14);
+ assign _zz_s0_countOnesLogic_11_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_11_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_11_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_11_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_11_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_11_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_11_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_11_8 = 4'b0011;
+ assign s0_countOnesLogic_11 = (_zz_s0_countOnesLogic_11_9 + _zz_s0_countOnesLogic_11_14);
+ assign _zz_s0_countOnesLogic_12_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_12_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_12_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_12_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_12_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_12_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_12_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_12_8 = 4'b0011;
+ assign s0_countOnesLogic_12 = (_zz_s0_countOnesLogic_12_9 + _zz_s0_countOnesLogic_12_20);
+ assign _zz_s0_countOnesLogic_13_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_13_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_13_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_13_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_13_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_13_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_13_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_13_8 = 4'b0011;
+ assign s0_countOnesLogic_13 = (_zz_s0_countOnesLogic_13_9 + _zz_s0_countOnesLogic_13_20);
+ assign _zz_s0_countOnesLogic_14_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_14_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_14_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_14_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_14_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_14_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_14_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_14_8 = 4'b0011;
+ assign s0_countOnesLogic_14 = (_zz_s0_countOnesLogic_14_9 + _zz_s0_countOnesLogic_14_20);
+ assign _zz_s0_countOnesLogic_15 = 5'h0;
+ assign _zz_s0_countOnesLogic_15_1 = 5'h01;
+ assign _zz_s0_countOnesLogic_15_2 = 5'h01;
+ assign _zz_s0_countOnesLogic_15_3 = 5'h02;
+ assign _zz_s0_countOnesLogic_15_4 = 5'h01;
+ assign _zz_s0_countOnesLogic_15_5 = 5'h02;
+ assign _zz_s0_countOnesLogic_15_6 = 5'h02;
+ assign _zz_s0_countOnesLogic_15_7 = 5'h03;
+ assign s0_countOnesLogic_15 = (_zz_s0_countOnesLogic_15_8 + _zz_s0_countOnesLogic_15_19);
+ assign s0_outputPayload_cmd_data = s0_input_payload_data;
+ assign s0_outputPayload_cmd_mask = s0_input_payload_mask;
+ assign s0_outputPayload_countOnes_0 = s0_countOnesLogic_0;
+ assign s0_outputPayload_countOnes_1 = s0_countOnesLogic_1;
+ assign s0_outputPayload_countOnes_2 = s0_countOnesLogic_2;
+ assign s0_outputPayload_countOnes_3 = s0_countOnesLogic_3;
+ assign s0_outputPayload_countOnes_4 = s0_countOnesLogic_4;
+ assign s0_outputPayload_countOnes_5 = s0_countOnesLogic_5;
+ assign s0_outputPayload_countOnes_6 = s0_countOnesLogic_6;
+ assign s0_outputPayload_countOnes_7 = s0_countOnesLogic_7;
+ assign s0_outputPayload_countOnes_8 = s0_countOnesLogic_8;
+ assign s0_outputPayload_countOnes_9 = s0_countOnesLogic_9;
+ assign s0_outputPayload_countOnes_10 = s0_countOnesLogic_10;
+ assign s0_outputPayload_countOnes_11 = s0_countOnesLogic_11;
+ assign s0_outputPayload_countOnes_12 = s0_countOnesLogic_12;
+ assign s0_outputPayload_countOnes_13 = s0_countOnesLogic_13;
+ assign s0_outputPayload_countOnes_14 = s0_countOnesLogic_14;
+ assign s0_outputPayload_countOnes_15 = s0_countOnesLogic_15;
+ assign s0_output_valid = s0_input_valid;
+ assign s0_input_ready = s0_output_ready;
+ assign s0_output_payload_cmd_data = s0_outputPayload_cmd_data;
+ assign s0_output_payload_cmd_mask = s0_outputPayload_cmd_mask;
+ assign s0_output_payload_countOnes_0 = s0_outputPayload_countOnes_0;
+ assign s0_output_payload_countOnes_1 = s0_outputPayload_countOnes_1;
+ assign s0_output_payload_countOnes_2 = s0_outputPayload_countOnes_2;
+ assign s0_output_payload_countOnes_3 = s0_outputPayload_countOnes_3;
+ assign s0_output_payload_countOnes_4 = s0_outputPayload_countOnes_4;
+ assign s0_output_payload_countOnes_5 = s0_outputPayload_countOnes_5;
+ assign s0_output_payload_countOnes_6 = s0_outputPayload_countOnes_6;
+ assign s0_output_payload_countOnes_7 = s0_outputPayload_countOnes_7;
+ assign s0_output_payload_countOnes_8 = s0_outputPayload_countOnes_8;
+ assign s0_output_payload_countOnes_9 = s0_outputPayload_countOnes_9;
+ assign s0_output_payload_countOnes_10 = s0_outputPayload_countOnes_10;
+ assign s0_output_payload_countOnes_11 = s0_outputPayload_countOnes_11;
+ assign s0_output_payload_countOnes_12 = s0_outputPayload_countOnes_12;
+ assign s0_output_payload_countOnes_13 = s0_outputPayload_countOnes_13;
+ assign s0_output_payload_countOnes_14 = s0_outputPayload_countOnes_14;
+ assign s0_output_payload_countOnes_15 = s0_outputPayload_countOnes_15;
+ always @(*) begin
+ s0_output_ready = s1_input_ready;
+ if(when_Stream_l375_1) begin
+ s0_output_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_1 = (! s1_input_valid);
+ assign s1_input_valid = s0_output_rValid;
+ assign s1_input_payload_cmd_data = s0_output_rData_cmd_data;
+ assign s1_input_payload_cmd_mask = s0_output_rData_cmd_mask;
+ assign s1_input_payload_countOnes_0 = s0_output_rData_countOnes_0;
+ assign s1_input_payload_countOnes_1 = s0_output_rData_countOnes_1;
+ assign s1_input_payload_countOnes_2 = s0_output_rData_countOnes_2;
+ assign s1_input_payload_countOnes_3 = s0_output_rData_countOnes_3;
+ assign s1_input_payload_countOnes_4 = s0_output_rData_countOnes_4;
+ assign s1_input_payload_countOnes_5 = s0_output_rData_countOnes_5;
+ assign s1_input_payload_countOnes_6 = s0_output_rData_countOnes_6;
+ assign s1_input_payload_countOnes_7 = s0_output_rData_countOnes_7;
+ assign s1_input_payload_countOnes_8 = s0_output_rData_countOnes_8;
+ assign s1_input_payload_countOnes_9 = s0_output_rData_countOnes_9;
+ assign s1_input_payload_countOnes_10 = s0_output_rData_countOnes_10;
+ assign s1_input_payload_countOnes_11 = s0_output_rData_countOnes_11;
+ assign s1_input_payload_countOnes_12 = s0_output_rData_countOnes_12;
+ assign s1_input_payload_countOnes_13 = s0_output_rData_countOnes_13;
+ assign s1_input_payload_countOnes_14 = s0_output_rData_countOnes_14;
+ assign s1_input_payload_countOnes_15 = s0_output_rData_countOnes_15;
+ assign s1_offsetNext = (_zz_s1_offsetNext + s1_input_payload_countOnes_15);
+ assign s1_input_fire = (s1_input_valid && s1_input_ready);
+ assign s1_inputIndexes_0 = (4'b0000 + s1_offset);
+ assign s1_inputIndexes_1 = (_zz_s1_inputIndexes_1 + s1_offset);
+ assign s1_inputIndexes_2 = (_zz_s1_inputIndexes_2 + s1_offset);
+ assign s1_inputIndexes_3 = (_zz_s1_inputIndexes_3 + s1_offset);
+ assign s1_inputIndexes_4 = (_zz_s1_inputIndexes_4 + s1_offset);
+ assign s1_inputIndexes_5 = (_zz_s1_inputIndexes_5 + s1_offset);
+ assign s1_inputIndexes_6 = (_zz_s1_inputIndexes_6 + s1_offset);
+ assign s1_inputIndexes_7 = (_zz_s1_inputIndexes_7 + s1_offset);
+ assign s1_inputIndexes_8 = (s1_input_payload_countOnes_7 + s1_offset);
+ assign s1_inputIndexes_9 = (s1_input_payload_countOnes_8 + s1_offset);
+ assign s1_inputIndexes_10 = (s1_input_payload_countOnes_9 + s1_offset);
+ assign s1_inputIndexes_11 = (s1_input_payload_countOnes_10 + s1_offset);
+ assign s1_inputIndexes_12 = (s1_input_payload_countOnes_11 + s1_offset);
+ assign s1_inputIndexes_13 = (s1_input_payload_countOnes_12 + s1_offset);
+ assign s1_inputIndexes_14 = (s1_input_payload_countOnes_13 + s1_offset);
+ assign s1_inputIndexes_15 = (s1_input_payload_countOnes_14 + s1_offset);
+ assign s1_outputPayload_cmd_data = s1_input_payload_cmd_data;
+ assign s1_outputPayload_cmd_mask = s1_input_payload_cmd_mask;
+ assign s1_outputPayload_index_0 = s1_inputIndexes_0;
+ assign s1_outputPayload_index_1 = s1_inputIndexes_1;
+ assign s1_outputPayload_index_2 = s1_inputIndexes_2;
+ assign s1_outputPayload_index_3 = s1_inputIndexes_3;
+ assign s1_outputPayload_index_4 = s1_inputIndexes_4;
+ assign s1_outputPayload_index_5 = s1_inputIndexes_5;
+ assign s1_outputPayload_index_6 = s1_inputIndexes_6;
+ assign s1_outputPayload_index_7 = s1_inputIndexes_7;
+ assign s1_outputPayload_index_8 = s1_inputIndexes_8;
+ assign s1_outputPayload_index_9 = s1_inputIndexes_9;
+ assign s1_outputPayload_index_10 = s1_inputIndexes_10;
+ assign s1_outputPayload_index_11 = s1_inputIndexes_11;
+ assign s1_outputPayload_index_12 = s1_inputIndexes_12;
+ assign s1_outputPayload_index_13 = s1_inputIndexes_13;
+ assign s1_outputPayload_index_14 = s1_inputIndexes_14;
+ assign s1_outputPayload_index_15 = s1_inputIndexes_15;
+ assign s1_outputPayload_last = s1_offsetNext[4];
+ assign _zz_s1_outputPayload_selValid = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_1 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_2 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_3 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_4 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_5 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_6 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_7 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_8 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_9 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_10 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_11 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_12 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_13 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_14 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0000));
+ assign _zz_s1_outputPayload_sel_0 = (((((((_zz_s1_outputPayload_selValid || _zz_s1_outputPayload_selValid_2) || _zz_s1_outputPayload_selValid_4) || _zz_s1_outputPayload_selValid_6) || _zz_s1_outputPayload_selValid_8) || _zz_s1_outputPayload_selValid_10) || _zz_s1_outputPayload_selValid_12) || _zz_s1_outputPayload_selValid_14);
+ assign _zz_s1_outputPayload_sel_0_1 = (((((((_zz_s1_outputPayload_selValid_1 || _zz_s1_outputPayload_selValid_2) || _zz_s1_outputPayload_selValid_5) || _zz_s1_outputPayload_selValid_6) || _zz_s1_outputPayload_selValid_9) || _zz_s1_outputPayload_selValid_10) || _zz_s1_outputPayload_selValid_13) || _zz_s1_outputPayload_selValid_14);
+ assign _zz_s1_outputPayload_sel_0_2 = (((((((_zz_s1_outputPayload_selValid_3 || _zz_s1_outputPayload_selValid_4) || _zz_s1_outputPayload_selValid_5) || _zz_s1_outputPayload_selValid_6) || _zz_s1_outputPayload_selValid_11) || _zz_s1_outputPayload_selValid_12) || _zz_s1_outputPayload_selValid_13) || _zz_s1_outputPayload_selValid_14);
+ assign _zz_s1_outputPayload_sel_0_3 = (((((((_zz_s1_outputPayload_selValid_7 || _zz_s1_outputPayload_selValid_8) || _zz_s1_outputPayload_selValid_9) || _zz_s1_outputPayload_selValid_10) || _zz_s1_outputPayload_selValid_11) || _zz_s1_outputPayload_selValid_12) || _zz_s1_outputPayload_selValid_13) || _zz_s1_outputPayload_selValid_14);
+ assign s1_outputPayload_sel_0 = {_zz_s1_outputPayload_sel_0_3,{_zz_s1_outputPayload_sel_0_2,{_zz_s1_outputPayload_sel_0_1,_zz_s1_outputPayload_sel_0}}};
+ always @(*) begin
+ s1_outputPayload_selValid[0] = ((|{_zz_s1_outputPayload_selValid_14,{_zz_s1_outputPayload_selValid_13,{_zz_s1_outputPayload_selValid_12,{_zz_s1_outputPayload_selValid_11,{_zz_s1_outputPayload_selValid_10,{_zz_s1_outputPayload_selValid_9,{_zz_s1_outputPayload_selValid_8,{_zz_s1_outputPayload_selValid_7,{_zz_s1_outputPayload_selValid_240,_zz_s1_outputPayload_selValid_241}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_0]);
+ s1_outputPayload_selValid[1] = ((|{_zz_s1_outputPayload_selValid_29,{_zz_s1_outputPayload_selValid_28,{_zz_s1_outputPayload_selValid_27,{_zz_s1_outputPayload_selValid_26,{_zz_s1_outputPayload_selValid_25,{_zz_s1_outputPayload_selValid_24,{_zz_s1_outputPayload_selValid_23,{_zz_s1_outputPayload_selValid_22,{_zz_s1_outputPayload_selValid_242,_zz_s1_outputPayload_selValid_243}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_1]);
+ s1_outputPayload_selValid[2] = ((|{_zz_s1_outputPayload_selValid_44,{_zz_s1_outputPayload_selValid_43,{_zz_s1_outputPayload_selValid_42,{_zz_s1_outputPayload_selValid_41,{_zz_s1_outputPayload_selValid_40,{_zz_s1_outputPayload_selValid_39,{_zz_s1_outputPayload_selValid_38,{_zz_s1_outputPayload_selValid_37,{_zz_s1_outputPayload_selValid_244,_zz_s1_outputPayload_selValid_245}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_2]);
+ s1_outputPayload_selValid[3] = ((|{_zz_s1_outputPayload_selValid_59,{_zz_s1_outputPayload_selValid_58,{_zz_s1_outputPayload_selValid_57,{_zz_s1_outputPayload_selValid_56,{_zz_s1_outputPayload_selValid_55,{_zz_s1_outputPayload_selValid_54,{_zz_s1_outputPayload_selValid_53,{_zz_s1_outputPayload_selValid_52,{_zz_s1_outputPayload_selValid_246,_zz_s1_outputPayload_selValid_247}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_3]);
+ s1_outputPayload_selValid[4] = ((|{_zz_s1_outputPayload_selValid_74,{_zz_s1_outputPayload_selValid_73,{_zz_s1_outputPayload_selValid_72,{_zz_s1_outputPayload_selValid_71,{_zz_s1_outputPayload_selValid_70,{_zz_s1_outputPayload_selValid_69,{_zz_s1_outputPayload_selValid_68,{_zz_s1_outputPayload_selValid_67,{_zz_s1_outputPayload_selValid_248,_zz_s1_outputPayload_selValid_249}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_4]);
+ s1_outputPayload_selValid[5] = ((|{_zz_s1_outputPayload_selValid_89,{_zz_s1_outputPayload_selValid_88,{_zz_s1_outputPayload_selValid_87,{_zz_s1_outputPayload_selValid_86,{_zz_s1_outputPayload_selValid_85,{_zz_s1_outputPayload_selValid_84,{_zz_s1_outputPayload_selValid_83,{_zz_s1_outputPayload_selValid_82,{_zz_s1_outputPayload_selValid_250,_zz_s1_outputPayload_selValid_251}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_5]);
+ s1_outputPayload_selValid[6] = ((|{_zz_s1_outputPayload_selValid_104,{_zz_s1_outputPayload_selValid_103,{_zz_s1_outputPayload_selValid_102,{_zz_s1_outputPayload_selValid_101,{_zz_s1_outputPayload_selValid_100,{_zz_s1_outputPayload_selValid_99,{_zz_s1_outputPayload_selValid_98,{_zz_s1_outputPayload_selValid_97,{_zz_s1_outputPayload_selValid_252,_zz_s1_outputPayload_selValid_253}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_6]);
+ s1_outputPayload_selValid[7] = ((|{_zz_s1_outputPayload_selValid_119,{_zz_s1_outputPayload_selValid_118,{_zz_s1_outputPayload_selValid_117,{_zz_s1_outputPayload_selValid_116,{_zz_s1_outputPayload_selValid_115,{_zz_s1_outputPayload_selValid_114,{_zz_s1_outputPayload_selValid_113,{_zz_s1_outputPayload_selValid_112,{_zz_s1_outputPayload_selValid_254,_zz_s1_outputPayload_selValid_255}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_7]);
+ s1_outputPayload_selValid[8] = ((|{_zz_s1_outputPayload_selValid_134,{_zz_s1_outputPayload_selValid_133,{_zz_s1_outputPayload_selValid_132,{_zz_s1_outputPayload_selValid_131,{_zz_s1_outputPayload_selValid_130,{_zz_s1_outputPayload_selValid_129,{_zz_s1_outputPayload_selValid_128,{_zz_s1_outputPayload_selValid_127,{_zz_s1_outputPayload_selValid_256,_zz_s1_outputPayload_selValid_257}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_8]);
+ s1_outputPayload_selValid[9] = ((|{_zz_s1_outputPayload_selValid_149,{_zz_s1_outputPayload_selValid_148,{_zz_s1_outputPayload_selValid_147,{_zz_s1_outputPayload_selValid_146,{_zz_s1_outputPayload_selValid_145,{_zz_s1_outputPayload_selValid_144,{_zz_s1_outputPayload_selValid_143,{_zz_s1_outputPayload_selValid_142,{_zz_s1_outputPayload_selValid_258,_zz_s1_outputPayload_selValid_259}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_9]);
+ s1_outputPayload_selValid[10] = ((|{_zz_s1_outputPayload_selValid_164,{_zz_s1_outputPayload_selValid_163,{_zz_s1_outputPayload_selValid_162,{_zz_s1_outputPayload_selValid_161,{_zz_s1_outputPayload_selValid_160,{_zz_s1_outputPayload_selValid_159,{_zz_s1_outputPayload_selValid_158,{_zz_s1_outputPayload_selValid_157,{_zz_s1_outputPayload_selValid_260,_zz_s1_outputPayload_selValid_261}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_10]);
+ s1_outputPayload_selValid[11] = ((|{_zz_s1_outputPayload_selValid_179,{_zz_s1_outputPayload_selValid_178,{_zz_s1_outputPayload_selValid_177,{_zz_s1_outputPayload_selValid_176,{_zz_s1_outputPayload_selValid_175,{_zz_s1_outputPayload_selValid_174,{_zz_s1_outputPayload_selValid_173,{_zz_s1_outputPayload_selValid_172,{_zz_s1_outputPayload_selValid_262,_zz_s1_outputPayload_selValid_263}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_11]);
+ s1_outputPayload_selValid[12] = ((|{_zz_s1_outputPayload_selValid_194,{_zz_s1_outputPayload_selValid_193,{_zz_s1_outputPayload_selValid_192,{_zz_s1_outputPayload_selValid_191,{_zz_s1_outputPayload_selValid_190,{_zz_s1_outputPayload_selValid_189,{_zz_s1_outputPayload_selValid_188,{_zz_s1_outputPayload_selValid_187,{_zz_s1_outputPayload_selValid_264,_zz_s1_outputPayload_selValid_265}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_12]);
+ s1_outputPayload_selValid[13] = ((|{_zz_s1_outputPayload_selValid_209,{_zz_s1_outputPayload_selValid_208,{_zz_s1_outputPayload_selValid_207,{_zz_s1_outputPayload_selValid_206,{_zz_s1_outputPayload_selValid_205,{_zz_s1_outputPayload_selValid_204,{_zz_s1_outputPayload_selValid_203,{_zz_s1_outputPayload_selValid_202,{_zz_s1_outputPayload_selValid_266,_zz_s1_outputPayload_selValid_267}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_13]);
+ s1_outputPayload_selValid[14] = ((|{_zz_s1_outputPayload_selValid_224,{_zz_s1_outputPayload_selValid_223,{_zz_s1_outputPayload_selValid_222,{_zz_s1_outputPayload_selValid_221,{_zz_s1_outputPayload_selValid_220,{_zz_s1_outputPayload_selValid_219,{_zz_s1_outputPayload_selValid_218,{_zz_s1_outputPayload_selValid_217,{_zz_s1_outputPayload_selValid_268,_zz_s1_outputPayload_selValid_269}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_14]);
+ s1_outputPayload_selValid[15] = ((|{_zz_s1_outputPayload_selValid_239,{_zz_s1_outputPayload_selValid_238,{_zz_s1_outputPayload_selValid_237,{_zz_s1_outputPayload_selValid_236,{_zz_s1_outputPayload_selValid_235,{_zz_s1_outputPayload_selValid_234,{_zz_s1_outputPayload_selValid_233,{_zz_s1_outputPayload_selValid_232,{_zz_s1_outputPayload_selValid_270,_zz_s1_outputPayload_selValid_271}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_15]);
+ end
+
+ assign _zz_s1_outputPayload_selValid_15 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_16 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_17 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_18 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_19 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_20 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_21 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_22 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_23 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_24 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_25 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_26 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_27 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_28 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_29 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0001));
+ assign _zz_s1_outputPayload_sel_1 = (((((((_zz_s1_outputPayload_selValid_15 || _zz_s1_outputPayload_selValid_17) || _zz_s1_outputPayload_selValid_19) || _zz_s1_outputPayload_selValid_21) || _zz_s1_outputPayload_selValid_23) || _zz_s1_outputPayload_selValid_25) || _zz_s1_outputPayload_selValid_27) || _zz_s1_outputPayload_selValid_29);
+ assign _zz_s1_outputPayload_sel_1_1 = (((((((_zz_s1_outputPayload_selValid_16 || _zz_s1_outputPayload_selValid_17) || _zz_s1_outputPayload_selValid_20) || _zz_s1_outputPayload_selValid_21) || _zz_s1_outputPayload_selValid_24) || _zz_s1_outputPayload_selValid_25) || _zz_s1_outputPayload_selValid_28) || _zz_s1_outputPayload_selValid_29);
+ assign _zz_s1_outputPayload_sel_1_2 = (((((((_zz_s1_outputPayload_selValid_18 || _zz_s1_outputPayload_selValid_19) || _zz_s1_outputPayload_selValid_20) || _zz_s1_outputPayload_selValid_21) || _zz_s1_outputPayload_selValid_26) || _zz_s1_outputPayload_selValid_27) || _zz_s1_outputPayload_selValid_28) || _zz_s1_outputPayload_selValid_29);
+ assign _zz_s1_outputPayload_sel_1_3 = (((((((_zz_s1_outputPayload_selValid_22 || _zz_s1_outputPayload_selValid_23) || _zz_s1_outputPayload_selValid_24) || _zz_s1_outputPayload_selValid_25) || _zz_s1_outputPayload_selValid_26) || _zz_s1_outputPayload_selValid_27) || _zz_s1_outputPayload_selValid_28) || _zz_s1_outputPayload_selValid_29);
+ assign s1_outputPayload_sel_1 = {_zz_s1_outputPayload_sel_1_3,{_zz_s1_outputPayload_sel_1_2,{_zz_s1_outputPayload_sel_1_1,_zz_s1_outputPayload_sel_1}}};
+ assign _zz_s1_outputPayload_selValid_30 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_31 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_32 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_33 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_34 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_35 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_36 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_37 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_38 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_39 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_40 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_41 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_42 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_43 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_44 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0010));
+ assign _zz_s1_outputPayload_sel_2 = (((((((_zz_s1_outputPayload_selValid_30 || _zz_s1_outputPayload_selValid_32) || _zz_s1_outputPayload_selValid_34) || _zz_s1_outputPayload_selValid_36) || _zz_s1_outputPayload_selValid_38) || _zz_s1_outputPayload_selValid_40) || _zz_s1_outputPayload_selValid_42) || _zz_s1_outputPayload_selValid_44);
+ assign _zz_s1_outputPayload_sel_2_1 = (((((((_zz_s1_outputPayload_selValid_31 || _zz_s1_outputPayload_selValid_32) || _zz_s1_outputPayload_selValid_35) || _zz_s1_outputPayload_selValid_36) || _zz_s1_outputPayload_selValid_39) || _zz_s1_outputPayload_selValid_40) || _zz_s1_outputPayload_selValid_43) || _zz_s1_outputPayload_selValid_44);
+ assign _zz_s1_outputPayload_sel_2_2 = (((((((_zz_s1_outputPayload_selValid_33 || _zz_s1_outputPayload_selValid_34) || _zz_s1_outputPayload_selValid_35) || _zz_s1_outputPayload_selValid_36) || _zz_s1_outputPayload_selValid_41) || _zz_s1_outputPayload_selValid_42) || _zz_s1_outputPayload_selValid_43) || _zz_s1_outputPayload_selValid_44);
+ assign _zz_s1_outputPayload_sel_2_3 = (((((((_zz_s1_outputPayload_selValid_37 || _zz_s1_outputPayload_selValid_38) || _zz_s1_outputPayload_selValid_39) || _zz_s1_outputPayload_selValid_40) || _zz_s1_outputPayload_selValid_41) || _zz_s1_outputPayload_selValid_42) || _zz_s1_outputPayload_selValid_43) || _zz_s1_outputPayload_selValid_44);
+ assign s1_outputPayload_sel_2 = {_zz_s1_outputPayload_sel_2_3,{_zz_s1_outputPayload_sel_2_2,{_zz_s1_outputPayload_sel_2_1,_zz_s1_outputPayload_sel_2}}};
+ assign _zz_s1_outputPayload_selValid_45 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_46 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_47 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_48 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_49 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_50 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_51 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_52 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_53 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_54 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_55 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_56 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_57 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_58 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_59 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0011));
+ assign _zz_s1_outputPayload_sel_3 = (((((((_zz_s1_outputPayload_selValid_45 || _zz_s1_outputPayload_selValid_47) || _zz_s1_outputPayload_selValid_49) || _zz_s1_outputPayload_selValid_51) || _zz_s1_outputPayload_selValid_53) || _zz_s1_outputPayload_selValid_55) || _zz_s1_outputPayload_selValid_57) || _zz_s1_outputPayload_selValid_59);
+ assign _zz_s1_outputPayload_sel_3_1 = (((((((_zz_s1_outputPayload_selValid_46 || _zz_s1_outputPayload_selValid_47) || _zz_s1_outputPayload_selValid_50) || _zz_s1_outputPayload_selValid_51) || _zz_s1_outputPayload_selValid_54) || _zz_s1_outputPayload_selValid_55) || _zz_s1_outputPayload_selValid_58) || _zz_s1_outputPayload_selValid_59);
+ assign _zz_s1_outputPayload_sel_3_2 = (((((((_zz_s1_outputPayload_selValid_48 || _zz_s1_outputPayload_selValid_49) || _zz_s1_outputPayload_selValid_50) || _zz_s1_outputPayload_selValid_51) || _zz_s1_outputPayload_selValid_56) || _zz_s1_outputPayload_selValid_57) || _zz_s1_outputPayload_selValid_58) || _zz_s1_outputPayload_selValid_59);
+ assign _zz_s1_outputPayload_sel_3_3 = (((((((_zz_s1_outputPayload_selValid_52 || _zz_s1_outputPayload_selValid_53) || _zz_s1_outputPayload_selValid_54) || _zz_s1_outputPayload_selValid_55) || _zz_s1_outputPayload_selValid_56) || _zz_s1_outputPayload_selValid_57) || _zz_s1_outputPayload_selValid_58) || _zz_s1_outputPayload_selValid_59);
+ assign s1_outputPayload_sel_3 = {_zz_s1_outputPayload_sel_3_3,{_zz_s1_outputPayload_sel_3_2,{_zz_s1_outputPayload_sel_3_1,_zz_s1_outputPayload_sel_3}}};
+ assign _zz_s1_outputPayload_selValid_60 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_61 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_62 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_63 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_64 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_65 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_66 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_67 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_68 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_69 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_70 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_71 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_72 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_73 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_74 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0100));
+ assign _zz_s1_outputPayload_sel_4 = (((((((_zz_s1_outputPayload_selValid_60 || _zz_s1_outputPayload_selValid_62) || _zz_s1_outputPayload_selValid_64) || _zz_s1_outputPayload_selValid_66) || _zz_s1_outputPayload_selValid_68) || _zz_s1_outputPayload_selValid_70) || _zz_s1_outputPayload_selValid_72) || _zz_s1_outputPayload_selValid_74);
+ assign _zz_s1_outputPayload_sel_4_1 = (((((((_zz_s1_outputPayload_selValid_61 || _zz_s1_outputPayload_selValid_62) || _zz_s1_outputPayload_selValid_65) || _zz_s1_outputPayload_selValid_66) || _zz_s1_outputPayload_selValid_69) || _zz_s1_outputPayload_selValid_70) || _zz_s1_outputPayload_selValid_73) || _zz_s1_outputPayload_selValid_74);
+ assign _zz_s1_outputPayload_sel_4_2 = (((((((_zz_s1_outputPayload_selValid_63 || _zz_s1_outputPayload_selValid_64) || _zz_s1_outputPayload_selValid_65) || _zz_s1_outputPayload_selValid_66) || _zz_s1_outputPayload_selValid_71) || _zz_s1_outputPayload_selValid_72) || _zz_s1_outputPayload_selValid_73) || _zz_s1_outputPayload_selValid_74);
+ assign _zz_s1_outputPayload_sel_4_3 = (((((((_zz_s1_outputPayload_selValid_67 || _zz_s1_outputPayload_selValid_68) || _zz_s1_outputPayload_selValid_69) || _zz_s1_outputPayload_selValid_70) || _zz_s1_outputPayload_selValid_71) || _zz_s1_outputPayload_selValid_72) || _zz_s1_outputPayload_selValid_73) || _zz_s1_outputPayload_selValid_74);
+ assign s1_outputPayload_sel_4 = {_zz_s1_outputPayload_sel_4_3,{_zz_s1_outputPayload_sel_4_2,{_zz_s1_outputPayload_sel_4_1,_zz_s1_outputPayload_sel_4}}};
+ assign _zz_s1_outputPayload_selValid_75 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_76 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_77 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_78 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_79 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_80 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_81 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_82 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_83 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_84 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_85 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_86 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_87 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_88 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_89 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0101));
+ assign _zz_s1_outputPayload_sel_5 = (((((((_zz_s1_outputPayload_selValid_75 || _zz_s1_outputPayload_selValid_77) || _zz_s1_outputPayload_selValid_79) || _zz_s1_outputPayload_selValid_81) || _zz_s1_outputPayload_selValid_83) || _zz_s1_outputPayload_selValid_85) || _zz_s1_outputPayload_selValid_87) || _zz_s1_outputPayload_selValid_89);
+ assign _zz_s1_outputPayload_sel_5_1 = (((((((_zz_s1_outputPayload_selValid_76 || _zz_s1_outputPayload_selValid_77) || _zz_s1_outputPayload_selValid_80) || _zz_s1_outputPayload_selValid_81) || _zz_s1_outputPayload_selValid_84) || _zz_s1_outputPayload_selValid_85) || _zz_s1_outputPayload_selValid_88) || _zz_s1_outputPayload_selValid_89);
+ assign _zz_s1_outputPayload_sel_5_2 = (((((((_zz_s1_outputPayload_selValid_78 || _zz_s1_outputPayload_selValid_79) || _zz_s1_outputPayload_selValid_80) || _zz_s1_outputPayload_selValid_81) || _zz_s1_outputPayload_selValid_86) || _zz_s1_outputPayload_selValid_87) || _zz_s1_outputPayload_selValid_88) || _zz_s1_outputPayload_selValid_89);
+ assign _zz_s1_outputPayload_sel_5_3 = (((((((_zz_s1_outputPayload_selValid_82 || _zz_s1_outputPayload_selValid_83) || _zz_s1_outputPayload_selValid_84) || _zz_s1_outputPayload_selValid_85) || _zz_s1_outputPayload_selValid_86) || _zz_s1_outputPayload_selValid_87) || _zz_s1_outputPayload_selValid_88) || _zz_s1_outputPayload_selValid_89);
+ assign s1_outputPayload_sel_5 = {_zz_s1_outputPayload_sel_5_3,{_zz_s1_outputPayload_sel_5_2,{_zz_s1_outputPayload_sel_5_1,_zz_s1_outputPayload_sel_5}}};
+ assign _zz_s1_outputPayload_selValid_90 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_91 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_92 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_93 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_94 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_95 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_96 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_97 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_98 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_99 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_100 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_101 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_102 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_103 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_104 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0110));
+ assign _zz_s1_outputPayload_sel_6 = (((((((_zz_s1_outputPayload_selValid_90 || _zz_s1_outputPayload_selValid_92) || _zz_s1_outputPayload_selValid_94) || _zz_s1_outputPayload_selValid_96) || _zz_s1_outputPayload_selValid_98) || _zz_s1_outputPayload_selValid_100) || _zz_s1_outputPayload_selValid_102) || _zz_s1_outputPayload_selValid_104);
+ assign _zz_s1_outputPayload_sel_6_1 = (((((((_zz_s1_outputPayload_selValid_91 || _zz_s1_outputPayload_selValid_92) || _zz_s1_outputPayload_selValid_95) || _zz_s1_outputPayload_selValid_96) || _zz_s1_outputPayload_selValid_99) || _zz_s1_outputPayload_selValid_100) || _zz_s1_outputPayload_selValid_103) || _zz_s1_outputPayload_selValid_104);
+ assign _zz_s1_outputPayload_sel_6_2 = (((((((_zz_s1_outputPayload_selValid_93 || _zz_s1_outputPayload_selValid_94) || _zz_s1_outputPayload_selValid_95) || _zz_s1_outputPayload_selValid_96) || _zz_s1_outputPayload_selValid_101) || _zz_s1_outputPayload_selValid_102) || _zz_s1_outputPayload_selValid_103) || _zz_s1_outputPayload_selValid_104);
+ assign _zz_s1_outputPayload_sel_6_3 = (((((((_zz_s1_outputPayload_selValid_97 || _zz_s1_outputPayload_selValid_98) || _zz_s1_outputPayload_selValid_99) || _zz_s1_outputPayload_selValid_100) || _zz_s1_outputPayload_selValid_101) || _zz_s1_outputPayload_selValid_102) || _zz_s1_outputPayload_selValid_103) || _zz_s1_outputPayload_selValid_104);
+ assign s1_outputPayload_sel_6 = {_zz_s1_outputPayload_sel_6_3,{_zz_s1_outputPayload_sel_6_2,{_zz_s1_outputPayload_sel_6_1,_zz_s1_outputPayload_sel_6}}};
+ assign _zz_s1_outputPayload_selValid_105 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_106 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_107 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_108 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_109 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_110 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_111 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_112 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_113 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_114 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_115 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_116 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_117 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_118 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_119 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0111));
+ assign _zz_s1_outputPayload_sel_7 = (((((((_zz_s1_outputPayload_selValid_105 || _zz_s1_outputPayload_selValid_107) || _zz_s1_outputPayload_selValid_109) || _zz_s1_outputPayload_selValid_111) || _zz_s1_outputPayload_selValid_113) || _zz_s1_outputPayload_selValid_115) || _zz_s1_outputPayload_selValid_117) || _zz_s1_outputPayload_selValid_119);
+ assign _zz_s1_outputPayload_sel_7_1 = (((((((_zz_s1_outputPayload_selValid_106 || _zz_s1_outputPayload_selValid_107) || _zz_s1_outputPayload_selValid_110) || _zz_s1_outputPayload_selValid_111) || _zz_s1_outputPayload_selValid_114) || _zz_s1_outputPayload_selValid_115) || _zz_s1_outputPayload_selValid_118) || _zz_s1_outputPayload_selValid_119);
+ assign _zz_s1_outputPayload_sel_7_2 = (((((((_zz_s1_outputPayload_selValid_108 || _zz_s1_outputPayload_selValid_109) || _zz_s1_outputPayload_selValid_110) || _zz_s1_outputPayload_selValid_111) || _zz_s1_outputPayload_selValid_116) || _zz_s1_outputPayload_selValid_117) || _zz_s1_outputPayload_selValid_118) || _zz_s1_outputPayload_selValid_119);
+ assign _zz_s1_outputPayload_sel_7_3 = (((((((_zz_s1_outputPayload_selValid_112 || _zz_s1_outputPayload_selValid_113) || _zz_s1_outputPayload_selValid_114) || _zz_s1_outputPayload_selValid_115) || _zz_s1_outputPayload_selValid_116) || _zz_s1_outputPayload_selValid_117) || _zz_s1_outputPayload_selValid_118) || _zz_s1_outputPayload_selValid_119);
+ assign s1_outputPayload_sel_7 = {_zz_s1_outputPayload_sel_7_3,{_zz_s1_outputPayload_sel_7_2,{_zz_s1_outputPayload_sel_7_1,_zz_s1_outputPayload_sel_7}}};
+ assign _zz_s1_outputPayload_selValid_120 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_121 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_122 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_123 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_124 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_125 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_126 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_127 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_128 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_129 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_130 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_131 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_132 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_133 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_134 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1000));
+ assign _zz_s1_outputPayload_sel_8 = (((((((_zz_s1_outputPayload_selValid_120 || _zz_s1_outputPayload_selValid_122) || _zz_s1_outputPayload_selValid_124) || _zz_s1_outputPayload_selValid_126) || _zz_s1_outputPayload_selValid_128) || _zz_s1_outputPayload_selValid_130) || _zz_s1_outputPayload_selValid_132) || _zz_s1_outputPayload_selValid_134);
+ assign _zz_s1_outputPayload_sel_8_1 = (((((((_zz_s1_outputPayload_selValid_121 || _zz_s1_outputPayload_selValid_122) || _zz_s1_outputPayload_selValid_125) || _zz_s1_outputPayload_selValid_126) || _zz_s1_outputPayload_selValid_129) || _zz_s1_outputPayload_selValid_130) || _zz_s1_outputPayload_selValid_133) || _zz_s1_outputPayload_selValid_134);
+ assign _zz_s1_outputPayload_sel_8_2 = (((((((_zz_s1_outputPayload_selValid_123 || _zz_s1_outputPayload_selValid_124) || _zz_s1_outputPayload_selValid_125) || _zz_s1_outputPayload_selValid_126) || _zz_s1_outputPayload_selValid_131) || _zz_s1_outputPayload_selValid_132) || _zz_s1_outputPayload_selValid_133) || _zz_s1_outputPayload_selValid_134);
+ assign _zz_s1_outputPayload_sel_8_3 = (((((((_zz_s1_outputPayload_selValid_127 || _zz_s1_outputPayload_selValid_128) || _zz_s1_outputPayload_selValid_129) || _zz_s1_outputPayload_selValid_130) || _zz_s1_outputPayload_selValid_131) || _zz_s1_outputPayload_selValid_132) || _zz_s1_outputPayload_selValid_133) || _zz_s1_outputPayload_selValid_134);
+ assign s1_outputPayload_sel_8 = {_zz_s1_outputPayload_sel_8_3,{_zz_s1_outputPayload_sel_8_2,{_zz_s1_outputPayload_sel_8_1,_zz_s1_outputPayload_sel_8}}};
+ assign _zz_s1_outputPayload_selValid_135 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_136 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_137 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_138 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_139 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_140 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_141 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_142 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_143 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_144 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_145 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_146 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_147 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_148 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_149 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1001));
+ assign _zz_s1_outputPayload_sel_9 = (((((((_zz_s1_outputPayload_selValid_135 || _zz_s1_outputPayload_selValid_137) || _zz_s1_outputPayload_selValid_139) || _zz_s1_outputPayload_selValid_141) || _zz_s1_outputPayload_selValid_143) || _zz_s1_outputPayload_selValid_145) || _zz_s1_outputPayload_selValid_147) || _zz_s1_outputPayload_selValid_149);
+ assign _zz_s1_outputPayload_sel_9_1 = (((((((_zz_s1_outputPayload_selValid_136 || _zz_s1_outputPayload_selValid_137) || _zz_s1_outputPayload_selValid_140) || _zz_s1_outputPayload_selValid_141) || _zz_s1_outputPayload_selValid_144) || _zz_s1_outputPayload_selValid_145) || _zz_s1_outputPayload_selValid_148) || _zz_s1_outputPayload_selValid_149);
+ assign _zz_s1_outputPayload_sel_9_2 = (((((((_zz_s1_outputPayload_selValid_138 || _zz_s1_outputPayload_selValid_139) || _zz_s1_outputPayload_selValid_140) || _zz_s1_outputPayload_selValid_141) || _zz_s1_outputPayload_selValid_146) || _zz_s1_outputPayload_selValid_147) || _zz_s1_outputPayload_selValid_148) || _zz_s1_outputPayload_selValid_149);
+ assign _zz_s1_outputPayload_sel_9_3 = (((((((_zz_s1_outputPayload_selValid_142 || _zz_s1_outputPayload_selValid_143) || _zz_s1_outputPayload_selValid_144) || _zz_s1_outputPayload_selValid_145) || _zz_s1_outputPayload_selValid_146) || _zz_s1_outputPayload_selValid_147) || _zz_s1_outputPayload_selValid_148) || _zz_s1_outputPayload_selValid_149);
+ assign s1_outputPayload_sel_9 = {_zz_s1_outputPayload_sel_9_3,{_zz_s1_outputPayload_sel_9_2,{_zz_s1_outputPayload_sel_9_1,_zz_s1_outputPayload_sel_9}}};
+ assign _zz_s1_outputPayload_selValid_150 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_151 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_152 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_153 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_154 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_155 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_156 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_157 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_158 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_159 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_160 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_161 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_162 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_163 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_164 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1010));
+ assign _zz_s1_outputPayload_sel_10 = (((((((_zz_s1_outputPayload_selValid_150 || _zz_s1_outputPayload_selValid_152) || _zz_s1_outputPayload_selValid_154) || _zz_s1_outputPayload_selValid_156) || _zz_s1_outputPayload_selValid_158) || _zz_s1_outputPayload_selValid_160) || _zz_s1_outputPayload_selValid_162) || _zz_s1_outputPayload_selValid_164);
+ assign _zz_s1_outputPayload_sel_10_1 = (((((((_zz_s1_outputPayload_selValid_151 || _zz_s1_outputPayload_selValid_152) || _zz_s1_outputPayload_selValid_155) || _zz_s1_outputPayload_selValid_156) || _zz_s1_outputPayload_selValid_159) || _zz_s1_outputPayload_selValid_160) || _zz_s1_outputPayload_selValid_163) || _zz_s1_outputPayload_selValid_164);
+ assign _zz_s1_outputPayload_sel_10_2 = (((((((_zz_s1_outputPayload_selValid_153 || _zz_s1_outputPayload_selValid_154) || _zz_s1_outputPayload_selValid_155) || _zz_s1_outputPayload_selValid_156) || _zz_s1_outputPayload_selValid_161) || _zz_s1_outputPayload_selValid_162) || _zz_s1_outputPayload_selValid_163) || _zz_s1_outputPayload_selValid_164);
+ assign _zz_s1_outputPayload_sel_10_3 = (((((((_zz_s1_outputPayload_selValid_157 || _zz_s1_outputPayload_selValid_158) || _zz_s1_outputPayload_selValid_159) || _zz_s1_outputPayload_selValid_160) || _zz_s1_outputPayload_selValid_161) || _zz_s1_outputPayload_selValid_162) || _zz_s1_outputPayload_selValid_163) || _zz_s1_outputPayload_selValid_164);
+ assign s1_outputPayload_sel_10 = {_zz_s1_outputPayload_sel_10_3,{_zz_s1_outputPayload_sel_10_2,{_zz_s1_outputPayload_sel_10_1,_zz_s1_outputPayload_sel_10}}};
+ assign _zz_s1_outputPayload_selValid_165 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_166 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_167 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_168 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_169 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_170 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_171 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_172 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_173 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_174 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_175 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_176 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_177 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_178 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_179 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1011));
+ assign _zz_s1_outputPayload_sel_11 = (((((((_zz_s1_outputPayload_selValid_165 || _zz_s1_outputPayload_selValid_167) || _zz_s1_outputPayload_selValid_169) || _zz_s1_outputPayload_selValid_171) || _zz_s1_outputPayload_selValid_173) || _zz_s1_outputPayload_selValid_175) || _zz_s1_outputPayload_selValid_177) || _zz_s1_outputPayload_selValid_179);
+ assign _zz_s1_outputPayload_sel_11_1 = (((((((_zz_s1_outputPayload_selValid_166 || _zz_s1_outputPayload_selValid_167) || _zz_s1_outputPayload_selValid_170) || _zz_s1_outputPayload_selValid_171) || _zz_s1_outputPayload_selValid_174) || _zz_s1_outputPayload_selValid_175) || _zz_s1_outputPayload_selValid_178) || _zz_s1_outputPayload_selValid_179);
+ assign _zz_s1_outputPayload_sel_11_2 = (((((((_zz_s1_outputPayload_selValid_168 || _zz_s1_outputPayload_selValid_169) || _zz_s1_outputPayload_selValid_170) || _zz_s1_outputPayload_selValid_171) || _zz_s1_outputPayload_selValid_176) || _zz_s1_outputPayload_selValid_177) || _zz_s1_outputPayload_selValid_178) || _zz_s1_outputPayload_selValid_179);
+ assign _zz_s1_outputPayload_sel_11_3 = (((((((_zz_s1_outputPayload_selValid_172 || _zz_s1_outputPayload_selValid_173) || _zz_s1_outputPayload_selValid_174) || _zz_s1_outputPayload_selValid_175) || _zz_s1_outputPayload_selValid_176) || _zz_s1_outputPayload_selValid_177) || _zz_s1_outputPayload_selValid_178) || _zz_s1_outputPayload_selValid_179);
+ assign s1_outputPayload_sel_11 = {_zz_s1_outputPayload_sel_11_3,{_zz_s1_outputPayload_sel_11_2,{_zz_s1_outputPayload_sel_11_1,_zz_s1_outputPayload_sel_11}}};
+ assign _zz_s1_outputPayload_selValid_180 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_181 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_182 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_183 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_184 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_185 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_186 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_187 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_188 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_189 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_190 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_191 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_192 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_193 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_194 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1100));
+ assign _zz_s1_outputPayload_sel_12 = (((((((_zz_s1_outputPayload_selValid_180 || _zz_s1_outputPayload_selValid_182) || _zz_s1_outputPayload_selValid_184) || _zz_s1_outputPayload_selValid_186) || _zz_s1_outputPayload_selValid_188) || _zz_s1_outputPayload_selValid_190) || _zz_s1_outputPayload_selValid_192) || _zz_s1_outputPayload_selValid_194);
+ assign _zz_s1_outputPayload_sel_12_1 = (((((((_zz_s1_outputPayload_selValid_181 || _zz_s1_outputPayload_selValid_182) || _zz_s1_outputPayload_selValid_185) || _zz_s1_outputPayload_selValid_186) || _zz_s1_outputPayload_selValid_189) || _zz_s1_outputPayload_selValid_190) || _zz_s1_outputPayload_selValid_193) || _zz_s1_outputPayload_selValid_194);
+ assign _zz_s1_outputPayload_sel_12_2 = (((((((_zz_s1_outputPayload_selValid_183 || _zz_s1_outputPayload_selValid_184) || _zz_s1_outputPayload_selValid_185) || _zz_s1_outputPayload_selValid_186) || _zz_s1_outputPayload_selValid_191) || _zz_s1_outputPayload_selValid_192) || _zz_s1_outputPayload_selValid_193) || _zz_s1_outputPayload_selValid_194);
+ assign _zz_s1_outputPayload_sel_12_3 = (((((((_zz_s1_outputPayload_selValid_187 || _zz_s1_outputPayload_selValid_188) || _zz_s1_outputPayload_selValid_189) || _zz_s1_outputPayload_selValid_190) || _zz_s1_outputPayload_selValid_191) || _zz_s1_outputPayload_selValid_192) || _zz_s1_outputPayload_selValid_193) || _zz_s1_outputPayload_selValid_194);
+ assign s1_outputPayload_sel_12 = {_zz_s1_outputPayload_sel_12_3,{_zz_s1_outputPayload_sel_12_2,{_zz_s1_outputPayload_sel_12_1,_zz_s1_outputPayload_sel_12}}};
+ assign _zz_s1_outputPayload_selValid_195 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_196 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_197 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_198 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_199 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_200 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_201 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_202 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_203 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_204 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_205 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_206 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_207 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_208 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_209 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1101));
+ assign _zz_s1_outputPayload_sel_13 = (((((((_zz_s1_outputPayload_selValid_195 || _zz_s1_outputPayload_selValid_197) || _zz_s1_outputPayload_selValid_199) || _zz_s1_outputPayload_selValid_201) || _zz_s1_outputPayload_selValid_203) || _zz_s1_outputPayload_selValid_205) || _zz_s1_outputPayload_selValid_207) || _zz_s1_outputPayload_selValid_209);
+ assign _zz_s1_outputPayload_sel_13_1 = (((((((_zz_s1_outputPayload_selValid_196 || _zz_s1_outputPayload_selValid_197) || _zz_s1_outputPayload_selValid_200) || _zz_s1_outputPayload_selValid_201) || _zz_s1_outputPayload_selValid_204) || _zz_s1_outputPayload_selValid_205) || _zz_s1_outputPayload_selValid_208) || _zz_s1_outputPayload_selValid_209);
+ assign _zz_s1_outputPayload_sel_13_2 = (((((((_zz_s1_outputPayload_selValid_198 || _zz_s1_outputPayload_selValid_199) || _zz_s1_outputPayload_selValid_200) || _zz_s1_outputPayload_selValid_201) || _zz_s1_outputPayload_selValid_206) || _zz_s1_outputPayload_selValid_207) || _zz_s1_outputPayload_selValid_208) || _zz_s1_outputPayload_selValid_209);
+ assign _zz_s1_outputPayload_sel_13_3 = (((((((_zz_s1_outputPayload_selValid_202 || _zz_s1_outputPayload_selValid_203) || _zz_s1_outputPayload_selValid_204) || _zz_s1_outputPayload_selValid_205) || _zz_s1_outputPayload_selValid_206) || _zz_s1_outputPayload_selValid_207) || _zz_s1_outputPayload_selValid_208) || _zz_s1_outputPayload_selValid_209);
+ assign s1_outputPayload_sel_13 = {_zz_s1_outputPayload_sel_13_3,{_zz_s1_outputPayload_sel_13_2,{_zz_s1_outputPayload_sel_13_1,_zz_s1_outputPayload_sel_13}}};
+ assign _zz_s1_outputPayload_selValid_210 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_211 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_212 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_213 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_214 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_215 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_216 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_217 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_218 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_219 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_220 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_221 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_222 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_223 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_224 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1110));
+ assign _zz_s1_outputPayload_sel_14 = (((((((_zz_s1_outputPayload_selValid_210 || _zz_s1_outputPayload_selValid_212) || _zz_s1_outputPayload_selValid_214) || _zz_s1_outputPayload_selValid_216) || _zz_s1_outputPayload_selValid_218) || _zz_s1_outputPayload_selValid_220) || _zz_s1_outputPayload_selValid_222) || _zz_s1_outputPayload_selValid_224);
+ assign _zz_s1_outputPayload_sel_14_1 = (((((((_zz_s1_outputPayload_selValid_211 || _zz_s1_outputPayload_selValid_212) || _zz_s1_outputPayload_selValid_215) || _zz_s1_outputPayload_selValid_216) || _zz_s1_outputPayload_selValid_219) || _zz_s1_outputPayload_selValid_220) || _zz_s1_outputPayload_selValid_223) || _zz_s1_outputPayload_selValid_224);
+ assign _zz_s1_outputPayload_sel_14_2 = (((((((_zz_s1_outputPayload_selValid_213 || _zz_s1_outputPayload_selValid_214) || _zz_s1_outputPayload_selValid_215) || _zz_s1_outputPayload_selValid_216) || _zz_s1_outputPayload_selValid_221) || _zz_s1_outputPayload_selValid_222) || _zz_s1_outputPayload_selValid_223) || _zz_s1_outputPayload_selValid_224);
+ assign _zz_s1_outputPayload_sel_14_3 = (((((((_zz_s1_outputPayload_selValid_217 || _zz_s1_outputPayload_selValid_218) || _zz_s1_outputPayload_selValid_219) || _zz_s1_outputPayload_selValid_220) || _zz_s1_outputPayload_selValid_221) || _zz_s1_outputPayload_selValid_222) || _zz_s1_outputPayload_selValid_223) || _zz_s1_outputPayload_selValid_224);
+ assign s1_outputPayload_sel_14 = {_zz_s1_outputPayload_sel_14_3,{_zz_s1_outputPayload_sel_14_2,{_zz_s1_outputPayload_sel_14_1,_zz_s1_outputPayload_sel_14}}};
+ assign _zz_s1_outputPayload_selValid_225 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_226 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_227 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_228 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_229 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_230 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_231 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_232 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_233 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_234 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_235 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_236 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_237 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_238 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_239 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1111));
+ assign _zz_s1_outputPayload_sel_15 = (((((((_zz_s1_outputPayload_selValid_225 || _zz_s1_outputPayload_selValid_227) || _zz_s1_outputPayload_selValid_229) || _zz_s1_outputPayload_selValid_231) || _zz_s1_outputPayload_selValid_233) || _zz_s1_outputPayload_selValid_235) || _zz_s1_outputPayload_selValid_237) || _zz_s1_outputPayload_selValid_239);
+ assign _zz_s1_outputPayload_sel_15_1 = (((((((_zz_s1_outputPayload_selValid_226 || _zz_s1_outputPayload_selValid_227) || _zz_s1_outputPayload_selValid_230) || _zz_s1_outputPayload_selValid_231) || _zz_s1_outputPayload_selValid_234) || _zz_s1_outputPayload_selValid_235) || _zz_s1_outputPayload_selValid_238) || _zz_s1_outputPayload_selValid_239);
+ assign _zz_s1_outputPayload_sel_15_2 = (((((((_zz_s1_outputPayload_selValid_228 || _zz_s1_outputPayload_selValid_229) || _zz_s1_outputPayload_selValid_230) || _zz_s1_outputPayload_selValid_231) || _zz_s1_outputPayload_selValid_236) || _zz_s1_outputPayload_selValid_237) || _zz_s1_outputPayload_selValid_238) || _zz_s1_outputPayload_selValid_239);
+ assign _zz_s1_outputPayload_sel_15_3 = (((((((_zz_s1_outputPayload_selValid_232 || _zz_s1_outputPayload_selValid_233) || _zz_s1_outputPayload_selValid_234) || _zz_s1_outputPayload_selValid_235) || _zz_s1_outputPayload_selValid_236) || _zz_s1_outputPayload_selValid_237) || _zz_s1_outputPayload_selValid_238) || _zz_s1_outputPayload_selValid_239);
+ assign s1_outputPayload_sel_15 = {_zz_s1_outputPayload_sel_15_3,{_zz_s1_outputPayload_sel_15_2,{_zz_s1_outputPayload_sel_15_1,_zz_s1_outputPayload_sel_15}}};
+ assign s1_output_valid = s1_input_valid;
+ assign s1_input_ready = s1_output_ready;
+ assign s1_output_payload_cmd_data = s1_outputPayload_cmd_data;
+ assign s1_output_payload_cmd_mask = s1_outputPayload_cmd_mask;
+ assign s1_output_payload_index_0 = s1_outputPayload_index_0;
+ assign s1_output_payload_index_1 = s1_outputPayload_index_1;
+ assign s1_output_payload_index_2 = s1_outputPayload_index_2;
+ assign s1_output_payload_index_3 = s1_outputPayload_index_3;
+ assign s1_output_payload_index_4 = s1_outputPayload_index_4;
+ assign s1_output_payload_index_5 = s1_outputPayload_index_5;
+ assign s1_output_payload_index_6 = s1_outputPayload_index_6;
+ assign s1_output_payload_index_7 = s1_outputPayload_index_7;
+ assign s1_output_payload_index_8 = s1_outputPayload_index_8;
+ assign s1_output_payload_index_9 = s1_outputPayload_index_9;
+ assign s1_output_payload_index_10 = s1_outputPayload_index_10;
+ assign s1_output_payload_index_11 = s1_outputPayload_index_11;
+ assign s1_output_payload_index_12 = s1_outputPayload_index_12;
+ assign s1_output_payload_index_13 = s1_outputPayload_index_13;
+ assign s1_output_payload_index_14 = s1_outputPayload_index_14;
+ assign s1_output_payload_index_15 = s1_outputPayload_index_15;
+ assign s1_output_payload_last = s1_outputPayload_last;
+ assign s1_output_payload_sel_0 = s1_outputPayload_sel_0;
+ assign s1_output_payload_sel_1 = s1_outputPayload_sel_1;
+ assign s1_output_payload_sel_2 = s1_outputPayload_sel_2;
+ assign s1_output_payload_sel_3 = s1_outputPayload_sel_3;
+ assign s1_output_payload_sel_4 = s1_outputPayload_sel_4;
+ assign s1_output_payload_sel_5 = s1_outputPayload_sel_5;
+ assign s1_output_payload_sel_6 = s1_outputPayload_sel_6;
+ assign s1_output_payload_sel_7 = s1_outputPayload_sel_7;
+ assign s1_output_payload_sel_8 = s1_outputPayload_sel_8;
+ assign s1_output_payload_sel_9 = s1_outputPayload_sel_9;
+ assign s1_output_payload_sel_10 = s1_outputPayload_sel_10;
+ assign s1_output_payload_sel_11 = s1_outputPayload_sel_11;
+ assign s1_output_payload_sel_12 = s1_outputPayload_sel_12;
+ assign s1_output_payload_sel_13 = s1_outputPayload_sel_13;
+ assign s1_output_payload_sel_14 = s1_outputPayload_sel_14;
+ assign s1_output_payload_sel_15 = s1_outputPayload_sel_15;
+ assign s1_output_payload_selValid = s1_outputPayload_selValid;
+ always @(*) begin
+ s1_output_ready = s2_input_ready;
+ if(when_Stream_l375_2) begin
+ s1_output_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_2 = (! s2_input_valid);
+ assign s2_input_valid = s1_output_rValid;
+ assign s2_input_payload_cmd_data = s1_output_rData_cmd_data;
+ assign s2_input_payload_cmd_mask = s1_output_rData_cmd_mask;
+ assign s2_input_payload_index_0 = s1_output_rData_index_0;
+ assign s2_input_payload_index_1 = s1_output_rData_index_1;
+ assign s2_input_payload_index_2 = s1_output_rData_index_2;
+ assign s2_input_payload_index_3 = s1_output_rData_index_3;
+ assign s2_input_payload_index_4 = s1_output_rData_index_4;
+ assign s2_input_payload_index_5 = s1_output_rData_index_5;
+ assign s2_input_payload_index_6 = s1_output_rData_index_6;
+ assign s2_input_payload_index_7 = s1_output_rData_index_7;
+ assign s2_input_payload_index_8 = s1_output_rData_index_8;
+ assign s2_input_payload_index_9 = s1_output_rData_index_9;
+ assign s2_input_payload_index_10 = s1_output_rData_index_10;
+ assign s2_input_payload_index_11 = s1_output_rData_index_11;
+ assign s2_input_payload_index_12 = s1_output_rData_index_12;
+ assign s2_input_payload_index_13 = s1_output_rData_index_13;
+ assign s2_input_payload_index_14 = s1_output_rData_index_14;
+ assign s2_input_payload_index_15 = s1_output_rData_index_15;
+ assign s2_input_payload_last = s1_output_rData_last;
+ assign s2_input_payload_sel_0 = s1_output_rData_sel_0;
+ assign s2_input_payload_sel_1 = s1_output_rData_sel_1;
+ assign s2_input_payload_sel_2 = s1_output_rData_sel_2;
+ assign s2_input_payload_sel_3 = s1_output_rData_sel_3;
+ assign s2_input_payload_sel_4 = s1_output_rData_sel_4;
+ assign s2_input_payload_sel_5 = s1_output_rData_sel_5;
+ assign s2_input_payload_sel_6 = s1_output_rData_sel_6;
+ assign s2_input_payload_sel_7 = s1_output_rData_sel_7;
+ assign s2_input_payload_sel_8 = s1_output_rData_sel_8;
+ assign s2_input_payload_sel_9 = s1_output_rData_sel_9;
+ assign s2_input_payload_sel_10 = s1_output_rData_sel_10;
+ assign s2_input_payload_sel_11 = s1_output_rData_sel_11;
+ assign s2_input_payload_sel_12 = s1_output_rData_sel_12;
+ assign s2_input_payload_sel_13 = s1_output_rData_sel_13;
+ assign s2_input_payload_sel_14 = s1_output_rData_sel_14;
+ assign s2_input_payload_sel_15 = s1_output_rData_sel_15;
+ assign s2_input_payload_selValid = s1_output_rData_selValid;
+ always @(*) begin
+ s2_input_ready = ((! io_output_enough) || io_output_consume);
+ if(when_DmaSg_l1464) begin
+ s2_input_ready = 1'b0;
+ end
+ end
+
+ assign when_DmaSg_l1464 = (_zz_when_DmaSg_l1464 < s1_byteCounter);
+ assign s2_input_fire = (s2_input_valid && s2_input_ready);
+ assign io_output_consumed = s2_input_fire;
+ assign s2_inputDataBytes_0 = s2_input_payload_cmd_data[7 : 0];
+ assign s2_inputDataBytes_1 = s2_input_payload_cmd_data[15 : 8];
+ assign s2_inputDataBytes_2 = s2_input_payload_cmd_data[23 : 16];
+ assign s2_inputDataBytes_3 = s2_input_payload_cmd_data[31 : 24];
+ assign s2_inputDataBytes_4 = s2_input_payload_cmd_data[39 : 32];
+ assign s2_inputDataBytes_5 = s2_input_payload_cmd_data[47 : 40];
+ assign s2_inputDataBytes_6 = s2_input_payload_cmd_data[55 : 48];
+ assign s2_inputDataBytes_7 = s2_input_payload_cmd_data[63 : 56];
+ assign s2_inputDataBytes_8 = s2_input_payload_cmd_data[71 : 64];
+ assign s2_inputDataBytes_9 = s2_input_payload_cmd_data[79 : 72];
+ assign s2_inputDataBytes_10 = s2_input_payload_cmd_data[87 : 80];
+ assign s2_inputDataBytes_11 = s2_input_payload_cmd_data[95 : 88];
+ assign s2_inputDataBytes_12 = s2_input_payload_cmd_data[103 : 96];
+ assign s2_inputDataBytes_13 = s2_input_payload_cmd_data[111 : 104];
+ assign s2_inputDataBytes_14 = s2_input_payload_cmd_data[119 : 112];
+ assign s2_inputDataBytes_15 = s2_input_payload_cmd_data[127 : 120];
+ assign s2_byteLogic_0_lastUsed = (4'b0000 == io_output_lastByteUsed);
+ assign s2_byteLogic_0_inputMask = s2_input_payload_selValid[0];
+ assign s2_byteLogic_0_inputData = _zz_s2_byteLogic_0_inputData;
+ assign s2_byteLogic_0_outputMask = (s2_byteLogic_0_buffer_valid || (s2_input_valid && s2_byteLogic_0_inputMask));
+ assign s2_byteLogic_0_outputData = (s2_byteLogic_0_buffer_valid ? s2_byteLogic_0_buffer_data : s2_byteLogic_0_inputData);
+ always @(*) begin
+ io_output_mask[0] = s2_byteLogic_0_outputMask;
+ io_output_mask[1] = s2_byteLogic_1_outputMask;
+ io_output_mask[2] = s2_byteLogic_2_outputMask;
+ io_output_mask[3] = s2_byteLogic_3_outputMask;
+ io_output_mask[4] = s2_byteLogic_4_outputMask;
+ io_output_mask[5] = s2_byteLogic_5_outputMask;
+ io_output_mask[6] = s2_byteLogic_6_outputMask;
+ io_output_mask[7] = s2_byteLogic_7_outputMask;
+ io_output_mask[8] = s2_byteLogic_8_outputMask;
+ io_output_mask[9] = s2_byteLogic_9_outputMask;
+ io_output_mask[10] = s2_byteLogic_10_outputMask;
+ io_output_mask[11] = s2_byteLogic_11_outputMask;
+ io_output_mask[12] = s2_byteLogic_12_outputMask;
+ io_output_mask[13] = s2_byteLogic_13_outputMask;
+ io_output_mask[14] = s2_byteLogic_14_outputMask;
+ io_output_mask[15] = s2_byteLogic_15_outputMask;
+ end
+
+ always @(*) begin
+ io_output_data[7 : 0] = s2_byteLogic_0_outputData;
+ io_output_data[15 : 8] = s2_byteLogic_1_outputData;
+ io_output_data[23 : 16] = s2_byteLogic_2_outputData;
+ io_output_data[31 : 24] = s2_byteLogic_3_outputData;
+ io_output_data[39 : 32] = s2_byteLogic_4_outputData;
+ io_output_data[47 : 40] = s2_byteLogic_5_outputData;
+ io_output_data[55 : 48] = s2_byteLogic_6_outputData;
+ io_output_data[63 : 56] = s2_byteLogic_7_outputData;
+ io_output_data[71 : 64] = s2_byteLogic_8_outputData;
+ io_output_data[79 : 72] = s2_byteLogic_9_outputData;
+ io_output_data[87 : 80] = s2_byteLogic_10_outputData;
+ io_output_data[95 : 88] = s2_byteLogic_11_outputData;
+ io_output_data[103 : 96] = s2_byteLogic_12_outputData;
+ io_output_data[111 : 104] = s2_byteLogic_13_outputData;
+ io_output_data[119 : 112] = s2_byteLogic_14_outputData;
+ io_output_data[127 : 120] = s2_byteLogic_15_outputData;
+ end
+
+ assign when_DmaSg_l1493 = (s2_byteLogic_0_inputMask && ((! io_output_consume) || s2_byteLogic_0_buffer_valid));
+ assign s2_byteLogic_1_lastUsed = (4'b0001 == io_output_lastByteUsed);
+ assign s2_byteLogic_1_inputMask = s2_input_payload_selValid[1];
+ assign s2_byteLogic_1_inputData = _zz_s2_byteLogic_1_inputData;
+ assign s2_byteLogic_1_outputMask = (s2_byteLogic_1_buffer_valid || (s2_input_valid && s2_byteLogic_1_inputMask));
+ assign s2_byteLogic_1_outputData = (s2_byteLogic_1_buffer_valid ? s2_byteLogic_1_buffer_data : s2_byteLogic_1_inputData);
+ assign when_DmaSg_l1493_1 = (s2_byteLogic_1_inputMask && ((! io_output_consume) || s2_byteLogic_1_buffer_valid));
+ assign s2_byteLogic_2_lastUsed = (4'b0010 == io_output_lastByteUsed);
+ assign s2_byteLogic_2_inputMask = s2_input_payload_selValid[2];
+ assign s2_byteLogic_2_inputData = _zz_s2_byteLogic_2_inputData;
+ assign s2_byteLogic_2_outputMask = (s2_byteLogic_2_buffer_valid || (s2_input_valid && s2_byteLogic_2_inputMask));
+ assign s2_byteLogic_2_outputData = (s2_byteLogic_2_buffer_valid ? s2_byteLogic_2_buffer_data : s2_byteLogic_2_inputData);
+ assign when_DmaSg_l1493_2 = (s2_byteLogic_2_inputMask && ((! io_output_consume) || s2_byteLogic_2_buffer_valid));
+ assign s2_byteLogic_3_lastUsed = (4'b0011 == io_output_lastByteUsed);
+ assign s2_byteLogic_3_inputMask = s2_input_payload_selValid[3];
+ assign s2_byteLogic_3_inputData = _zz_s2_byteLogic_3_inputData;
+ assign s2_byteLogic_3_outputMask = (s2_byteLogic_3_buffer_valid || (s2_input_valid && s2_byteLogic_3_inputMask));
+ assign s2_byteLogic_3_outputData = (s2_byteLogic_3_buffer_valid ? s2_byteLogic_3_buffer_data : s2_byteLogic_3_inputData);
+ assign when_DmaSg_l1493_3 = (s2_byteLogic_3_inputMask && ((! io_output_consume) || s2_byteLogic_3_buffer_valid));
+ assign s2_byteLogic_4_lastUsed = (4'b0100 == io_output_lastByteUsed);
+ assign s2_byteLogic_4_inputMask = s2_input_payload_selValid[4];
+ assign s2_byteLogic_4_inputData = _zz_s2_byteLogic_4_inputData;
+ assign s2_byteLogic_4_outputMask = (s2_byteLogic_4_buffer_valid || (s2_input_valid && s2_byteLogic_4_inputMask));
+ assign s2_byteLogic_4_outputData = (s2_byteLogic_4_buffer_valid ? s2_byteLogic_4_buffer_data : s2_byteLogic_4_inputData);
+ assign when_DmaSg_l1493_4 = (s2_byteLogic_4_inputMask && ((! io_output_consume) || s2_byteLogic_4_buffer_valid));
+ assign s2_byteLogic_5_lastUsed = (4'b0101 == io_output_lastByteUsed);
+ assign s2_byteLogic_5_inputMask = s2_input_payload_selValid[5];
+ assign s2_byteLogic_5_inputData = _zz_s2_byteLogic_5_inputData;
+ assign s2_byteLogic_5_outputMask = (s2_byteLogic_5_buffer_valid || (s2_input_valid && s2_byteLogic_5_inputMask));
+ assign s2_byteLogic_5_outputData = (s2_byteLogic_5_buffer_valid ? s2_byteLogic_5_buffer_data : s2_byteLogic_5_inputData);
+ assign when_DmaSg_l1493_5 = (s2_byteLogic_5_inputMask && ((! io_output_consume) || s2_byteLogic_5_buffer_valid));
+ assign s2_byteLogic_6_lastUsed = (4'b0110 == io_output_lastByteUsed);
+ assign s2_byteLogic_6_inputMask = s2_input_payload_selValid[6];
+ assign s2_byteLogic_6_inputData = _zz_s2_byteLogic_6_inputData;
+ assign s2_byteLogic_6_outputMask = (s2_byteLogic_6_buffer_valid || (s2_input_valid && s2_byteLogic_6_inputMask));
+ assign s2_byteLogic_6_outputData = (s2_byteLogic_6_buffer_valid ? s2_byteLogic_6_buffer_data : s2_byteLogic_6_inputData);
+ assign when_DmaSg_l1493_6 = (s2_byteLogic_6_inputMask && ((! io_output_consume) || s2_byteLogic_6_buffer_valid));
+ assign s2_byteLogic_7_lastUsed = (4'b0111 == io_output_lastByteUsed);
+ assign s2_byteLogic_7_inputMask = s2_input_payload_selValid[7];
+ assign s2_byteLogic_7_inputData = _zz_s2_byteLogic_7_inputData;
+ assign s2_byteLogic_7_outputMask = (s2_byteLogic_7_buffer_valid || (s2_input_valid && s2_byteLogic_7_inputMask));
+ assign s2_byteLogic_7_outputData = (s2_byteLogic_7_buffer_valid ? s2_byteLogic_7_buffer_data : s2_byteLogic_7_inputData);
+ assign when_DmaSg_l1493_7 = (s2_byteLogic_7_inputMask && ((! io_output_consume) || s2_byteLogic_7_buffer_valid));
+ assign s2_byteLogic_8_lastUsed = (4'b1000 == io_output_lastByteUsed);
+ assign s2_byteLogic_8_inputMask = s2_input_payload_selValid[8];
+ assign s2_byteLogic_8_inputData = _zz_s2_byteLogic_8_inputData;
+ assign s2_byteLogic_8_outputMask = (s2_byteLogic_8_buffer_valid || (s2_input_valid && s2_byteLogic_8_inputMask));
+ assign s2_byteLogic_8_outputData = (s2_byteLogic_8_buffer_valid ? s2_byteLogic_8_buffer_data : s2_byteLogic_8_inputData);
+ assign when_DmaSg_l1493_8 = (s2_byteLogic_8_inputMask && ((! io_output_consume) || s2_byteLogic_8_buffer_valid));
+ assign s2_byteLogic_9_lastUsed = (4'b1001 == io_output_lastByteUsed);
+ assign s2_byteLogic_9_inputMask = s2_input_payload_selValid[9];
+ assign s2_byteLogic_9_inputData = _zz_s2_byteLogic_9_inputData;
+ assign s2_byteLogic_9_outputMask = (s2_byteLogic_9_buffer_valid || (s2_input_valid && s2_byteLogic_9_inputMask));
+ assign s2_byteLogic_9_outputData = (s2_byteLogic_9_buffer_valid ? s2_byteLogic_9_buffer_data : s2_byteLogic_9_inputData);
+ assign when_DmaSg_l1493_9 = (s2_byteLogic_9_inputMask && ((! io_output_consume) || s2_byteLogic_9_buffer_valid));
+ assign s2_byteLogic_10_lastUsed = (4'b1010 == io_output_lastByteUsed);
+ assign s2_byteLogic_10_inputMask = s2_input_payload_selValid[10];
+ assign s2_byteLogic_10_inputData = _zz_s2_byteLogic_10_inputData;
+ assign s2_byteLogic_10_outputMask = (s2_byteLogic_10_buffer_valid || (s2_input_valid && s2_byteLogic_10_inputMask));
+ assign s2_byteLogic_10_outputData = (s2_byteLogic_10_buffer_valid ? s2_byteLogic_10_buffer_data : s2_byteLogic_10_inputData);
+ assign when_DmaSg_l1493_10 = (s2_byteLogic_10_inputMask && ((! io_output_consume) || s2_byteLogic_10_buffer_valid));
+ assign s2_byteLogic_11_lastUsed = (4'b1011 == io_output_lastByteUsed);
+ assign s2_byteLogic_11_inputMask = s2_input_payload_selValid[11];
+ assign s2_byteLogic_11_inputData = _zz_s2_byteLogic_11_inputData;
+ assign s2_byteLogic_11_outputMask = (s2_byteLogic_11_buffer_valid || (s2_input_valid && s2_byteLogic_11_inputMask));
+ assign s2_byteLogic_11_outputData = (s2_byteLogic_11_buffer_valid ? s2_byteLogic_11_buffer_data : s2_byteLogic_11_inputData);
+ assign when_DmaSg_l1493_11 = (s2_byteLogic_11_inputMask && ((! io_output_consume) || s2_byteLogic_11_buffer_valid));
+ assign s2_byteLogic_12_lastUsed = (4'b1100 == io_output_lastByteUsed);
+ assign s2_byteLogic_12_inputMask = s2_input_payload_selValid[12];
+ assign s2_byteLogic_12_inputData = _zz_s2_byteLogic_12_inputData;
+ assign s2_byteLogic_12_outputMask = (s2_byteLogic_12_buffer_valid || (s2_input_valid && s2_byteLogic_12_inputMask));
+ assign s2_byteLogic_12_outputData = (s2_byteLogic_12_buffer_valid ? s2_byteLogic_12_buffer_data : s2_byteLogic_12_inputData);
+ assign when_DmaSg_l1493_12 = (s2_byteLogic_12_inputMask && ((! io_output_consume) || s2_byteLogic_12_buffer_valid));
+ assign s2_byteLogic_13_lastUsed = (4'b1101 == io_output_lastByteUsed);
+ assign s2_byteLogic_13_inputMask = s2_input_payload_selValid[13];
+ assign s2_byteLogic_13_inputData = _zz_s2_byteLogic_13_inputData;
+ assign s2_byteLogic_13_outputMask = (s2_byteLogic_13_buffer_valid || (s2_input_valid && s2_byteLogic_13_inputMask));
+ assign s2_byteLogic_13_outputData = (s2_byteLogic_13_buffer_valid ? s2_byteLogic_13_buffer_data : s2_byteLogic_13_inputData);
+ assign when_DmaSg_l1493_13 = (s2_byteLogic_13_inputMask && ((! io_output_consume) || s2_byteLogic_13_buffer_valid));
+ assign s2_byteLogic_14_lastUsed = (4'b1110 == io_output_lastByteUsed);
+ assign s2_byteLogic_14_inputMask = s2_input_payload_selValid[14];
+ assign s2_byteLogic_14_inputData = _zz_s2_byteLogic_14_inputData;
+ assign s2_byteLogic_14_outputMask = (s2_byteLogic_14_buffer_valid || (s2_input_valid && s2_byteLogic_14_inputMask));
+ assign s2_byteLogic_14_outputData = (s2_byteLogic_14_buffer_valid ? s2_byteLogic_14_buffer_data : s2_byteLogic_14_inputData);
+ assign when_DmaSg_l1493_14 = (s2_byteLogic_14_inputMask && ((! io_output_consume) || s2_byteLogic_14_buffer_valid));
+ assign s2_byteLogic_15_lastUsed = (4'b1111 == io_output_lastByteUsed);
+ assign s2_byteLogic_15_inputMask = s2_input_payload_selValid[15];
+ assign s2_byteLogic_15_inputData = _zz_s2_byteLogic_15_inputData;
+ assign s2_byteLogic_15_outputMask = (s2_byteLogic_15_buffer_valid || (s2_input_valid && s2_byteLogic_15_inputMask));
+ assign s2_byteLogic_15_outputData = (s2_byteLogic_15_buffer_valid ? s2_byteLogic_15_buffer_data : s2_byteLogic_15_inputData);
+ assign when_DmaSg_l1493_15 = (s2_byteLogic_15_inputMask && ((! io_output_consume) || s2_byteLogic_15_buffer_valid));
+ assign _zz_io_output_usedUntil = (((((((s2_byteLogic_1_lastUsed || s2_byteLogic_3_lastUsed) || s2_byteLogic_5_lastUsed) || s2_byteLogic_7_lastUsed) || s2_byteLogic_9_lastUsed) || s2_byteLogic_11_lastUsed) || s2_byteLogic_13_lastUsed) || s2_byteLogic_15_lastUsed);
+ assign _zz_io_output_usedUntil_1 = (((((((s2_byteLogic_2_lastUsed || s2_byteLogic_3_lastUsed) || s2_byteLogic_6_lastUsed) || s2_byteLogic_7_lastUsed) || s2_byteLogic_10_lastUsed) || s2_byteLogic_11_lastUsed) || s2_byteLogic_14_lastUsed) || s2_byteLogic_15_lastUsed);
+ assign _zz_io_output_usedUntil_2 = (((((((s2_byteLogic_4_lastUsed || s2_byteLogic_5_lastUsed) || s2_byteLogic_6_lastUsed) || s2_byteLogic_7_lastUsed) || s2_byteLogic_12_lastUsed) || s2_byteLogic_13_lastUsed) || s2_byteLogic_14_lastUsed) || s2_byteLogic_15_lastUsed);
+ assign _zz_io_output_usedUntil_3 = (((((((s2_byteLogic_8_lastUsed || s2_byteLogic_9_lastUsed) || s2_byteLogic_10_lastUsed) || s2_byteLogic_11_lastUsed) || s2_byteLogic_12_lastUsed) || s2_byteLogic_13_lastUsed) || s2_byteLogic_14_lastUsed) || s2_byteLogic_15_lastUsed);
+ assign io_output_usedUntil = _zz_io_output_usedUntil_4;
+ always @(posedge clk) begin
+ if(reset) begin
+ io_input_rValid <= 1'b0;
+ s0_output_rValid <= 1'b0;
+ s1_output_rValid <= 1'b0;
+ end else begin
+ if(io_input_ready) begin
+ io_input_rValid <= io_input_valid;
+ end
+ if(io_flush) begin
+ io_input_rValid <= 1'b0;
+ end
+ if(s0_output_ready) begin
+ s0_output_rValid <= s0_output_valid;
+ end
+ if(io_flush) begin
+ s0_output_rValid <= 1'b0;
+ end
+ if(s1_output_ready) begin
+ s1_output_rValid <= s1_output_valid;
+ end
+ if(io_flush) begin
+ s1_output_rValid <= 1'b0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_input_ready) begin
+ io_input_rData_data <= io_input_payload_data;
+ io_input_rData_mask <= io_input_payload_mask;
+ end
+ if(s0_output_ready) begin
+ s0_output_rData_cmd_data <= s0_output_payload_cmd_data;
+ s0_output_rData_cmd_mask <= s0_output_payload_cmd_mask;
+ s0_output_rData_countOnes_0 <= s0_output_payload_countOnes_0;
+ s0_output_rData_countOnes_1 <= s0_output_payload_countOnes_1;
+ s0_output_rData_countOnes_2 <= s0_output_payload_countOnes_2;
+ s0_output_rData_countOnes_3 <= s0_output_payload_countOnes_3;
+ s0_output_rData_countOnes_4 <= s0_output_payload_countOnes_4;
+ s0_output_rData_countOnes_5 <= s0_output_payload_countOnes_5;
+ s0_output_rData_countOnes_6 <= s0_output_payload_countOnes_6;
+ s0_output_rData_countOnes_7 <= s0_output_payload_countOnes_7;
+ s0_output_rData_countOnes_8 <= s0_output_payload_countOnes_8;
+ s0_output_rData_countOnes_9 <= s0_output_payload_countOnes_9;
+ s0_output_rData_countOnes_10 <= s0_output_payload_countOnes_10;
+ s0_output_rData_countOnes_11 <= s0_output_payload_countOnes_11;
+ s0_output_rData_countOnes_12 <= s0_output_payload_countOnes_12;
+ s0_output_rData_countOnes_13 <= s0_output_payload_countOnes_13;
+ s0_output_rData_countOnes_14 <= s0_output_payload_countOnes_14;
+ s0_output_rData_countOnes_15 <= s0_output_payload_countOnes_15;
+ end
+ if(s1_input_fire) begin
+ s1_offset <= s1_offsetNext[3:0];
+ end
+ if(io_flush) begin
+ s1_offset <= io_offset;
+ end
+ if(s1_input_fire) begin
+ s1_byteCounter <= (s1_byteCounter + _zz_s1_byteCounter);
+ end
+ if(io_flush) begin
+ s1_byteCounter <= 13'h0;
+ end
+ if(s1_output_ready) begin
+ s1_output_rData_cmd_data <= s1_output_payload_cmd_data;
+ s1_output_rData_cmd_mask <= s1_output_payload_cmd_mask;
+ s1_output_rData_index_0 <= s1_output_payload_index_0;
+ s1_output_rData_index_1 <= s1_output_payload_index_1;
+ s1_output_rData_index_2 <= s1_output_payload_index_2;
+ s1_output_rData_index_3 <= s1_output_payload_index_3;
+ s1_output_rData_index_4 <= s1_output_payload_index_4;
+ s1_output_rData_index_5 <= s1_output_payload_index_5;
+ s1_output_rData_index_6 <= s1_output_payload_index_6;
+ s1_output_rData_index_7 <= s1_output_payload_index_7;
+ s1_output_rData_index_8 <= s1_output_payload_index_8;
+ s1_output_rData_index_9 <= s1_output_payload_index_9;
+ s1_output_rData_index_10 <= s1_output_payload_index_10;
+ s1_output_rData_index_11 <= s1_output_payload_index_11;
+ s1_output_rData_index_12 <= s1_output_payload_index_12;
+ s1_output_rData_index_13 <= s1_output_payload_index_13;
+ s1_output_rData_index_14 <= s1_output_payload_index_14;
+ s1_output_rData_index_15 <= s1_output_payload_index_15;
+ s1_output_rData_last <= s1_output_payload_last;
+ s1_output_rData_sel_0 <= s1_output_payload_sel_0;
+ s1_output_rData_sel_1 <= s1_output_payload_sel_1;
+ s1_output_rData_sel_2 <= s1_output_payload_sel_2;
+ s1_output_rData_sel_3 <= s1_output_payload_sel_3;
+ s1_output_rData_sel_4 <= s1_output_payload_sel_4;
+ s1_output_rData_sel_5 <= s1_output_payload_sel_5;
+ s1_output_rData_sel_6 <= s1_output_payload_sel_6;
+ s1_output_rData_sel_7 <= s1_output_payload_sel_7;
+ s1_output_rData_sel_8 <= s1_output_payload_sel_8;
+ s1_output_rData_sel_9 <= s1_output_payload_sel_9;
+ s1_output_rData_sel_10 <= s1_output_payload_sel_10;
+ s1_output_rData_sel_11 <= s1_output_payload_sel_11;
+ s1_output_rData_sel_12 <= s1_output_payload_sel_12;
+ s1_output_rData_sel_13 <= s1_output_payload_sel_13;
+ s1_output_rData_sel_14 <= s1_output_payload_sel_14;
+ s1_output_rData_sel_15 <= s1_output_payload_sel_15;
+ s1_output_rData_selValid <= s1_output_payload_selValid;
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_0_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_0_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493) begin
+ s2_byteLogic_0_buffer_valid <= 1'b1;
+ s2_byteLogic_0_buffer_data <= s2_byteLogic_0_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_0_buffer_valid <= (4'b0000 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_1_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_1_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_1) begin
+ s2_byteLogic_1_buffer_valid <= 1'b1;
+ s2_byteLogic_1_buffer_data <= s2_byteLogic_1_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_1_buffer_valid <= (4'b0001 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_2_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_2_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_2) begin
+ s2_byteLogic_2_buffer_valid <= 1'b1;
+ s2_byteLogic_2_buffer_data <= s2_byteLogic_2_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_2_buffer_valid <= (4'b0010 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_3_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_3_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_3) begin
+ s2_byteLogic_3_buffer_valid <= 1'b1;
+ s2_byteLogic_3_buffer_data <= s2_byteLogic_3_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_3_buffer_valid <= (4'b0011 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_4_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_4_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_4) begin
+ s2_byteLogic_4_buffer_valid <= 1'b1;
+ s2_byteLogic_4_buffer_data <= s2_byteLogic_4_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_4_buffer_valid <= (4'b0100 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_5_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_5_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_5) begin
+ s2_byteLogic_5_buffer_valid <= 1'b1;
+ s2_byteLogic_5_buffer_data <= s2_byteLogic_5_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_5_buffer_valid <= (4'b0101 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_6_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_6_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_6) begin
+ s2_byteLogic_6_buffer_valid <= 1'b1;
+ s2_byteLogic_6_buffer_data <= s2_byteLogic_6_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_6_buffer_valid <= (4'b0110 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_7_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_7_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_7) begin
+ s2_byteLogic_7_buffer_valid <= 1'b1;
+ s2_byteLogic_7_buffer_data <= s2_byteLogic_7_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_7_buffer_valid <= (4'b0111 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_8_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_8_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_8) begin
+ s2_byteLogic_8_buffer_valid <= 1'b1;
+ s2_byteLogic_8_buffer_data <= s2_byteLogic_8_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_8_buffer_valid <= (4'b1000 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_9_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_9_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_9) begin
+ s2_byteLogic_9_buffer_valid <= 1'b1;
+ s2_byteLogic_9_buffer_data <= s2_byteLogic_9_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_9_buffer_valid <= (4'b1001 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_10_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_10_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_10) begin
+ s2_byteLogic_10_buffer_valid <= 1'b1;
+ s2_byteLogic_10_buffer_data <= s2_byteLogic_10_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_10_buffer_valid <= (4'b1010 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_11_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_11_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_11) begin
+ s2_byteLogic_11_buffer_valid <= 1'b1;
+ s2_byteLogic_11_buffer_data <= s2_byteLogic_11_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_11_buffer_valid <= (4'b1011 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_12_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_12_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_12) begin
+ s2_byteLogic_12_buffer_valid <= 1'b1;
+ s2_byteLogic_12_buffer_data <= s2_byteLogic_12_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_12_buffer_valid <= (4'b1100 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_13_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_13_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_13) begin
+ s2_byteLogic_13_buffer_valid <= 1'b1;
+ s2_byteLogic_13_buffer_data <= s2_byteLogic_13_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_13_buffer_valid <= (4'b1101 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_14_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_14_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_14) begin
+ s2_byteLogic_14_buffer_valid <= 1'b1;
+ s2_byteLogic_14_buffer_data <= s2_byteLogic_14_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_14_buffer_valid <= (4'b1110 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_15_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_15_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_15) begin
+ s2_byteLogic_15_buffer_valid <= 1'b1;
+ s2_byteLogic_15_buffer_data <= s2_byteLogic_15_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_15_buffer_valid <= (4'b1111 < io_offset);
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_DmaMemoryCore_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_writes_0_cmd_valid,
+ output wire io_writes_0_cmd_ready,
+ input wire [9:0] io_writes_0_cmd_payload_address,
+ input wire [63:0] io_writes_0_cmd_payload_data,
+ input wire [7:0] io_writes_0_cmd_payload_mask,
+ input wire [1:0] io_writes_0_cmd_payload_priority,
+ input wire [6:0] io_writes_0_cmd_payload_context,
+ output wire io_writes_0_rsp_valid,
+ output wire [6:0] io_writes_0_rsp_payload_context,
+ input wire io_writes_1_cmd_valid,
+ output wire io_writes_1_cmd_ready,
+ input wire [9:0] io_writes_1_cmd_payload_address,
+ input wire [127:0] io_writes_1_cmd_payload_data,
+ input wire [15:0] io_writes_1_cmd_payload_mask,
+ input wire [6:0] io_writes_1_cmd_payload_context,
+ output wire io_writes_1_rsp_valid,
+ output wire [6:0] io_writes_1_rsp_payload_context,
+ input wire io_reads_0_cmd_valid,
+ output wire io_reads_0_cmd_ready,
+ input wire [9:0] io_reads_0_cmd_payload_address,
+ input wire [1:0] io_reads_0_cmd_payload_priority,
+ input wire [2:0] io_reads_0_cmd_payload_context,
+ output wire io_reads_0_rsp_valid,
+ input wire io_reads_0_rsp_ready,
+ output wire [63:0] io_reads_0_rsp_payload_data,
+ output wire [7:0] io_reads_0_rsp_payload_mask,
+ output wire [2:0] io_reads_0_rsp_payload_context,
+ input wire io_reads_1_cmd_valid,
+ output wire io_reads_1_cmd_ready,
+ input wire [9:0] io_reads_1_cmd_payload_address,
+ input wire [11:0] io_reads_1_cmd_payload_context,
+ output wire io_reads_1_rsp_valid,
+ input wire io_reads_1_rsp_ready,
+ output wire [127:0] io_reads_1_rsp_payload_data,
+ output wire [15:0] io_reads_1_rsp_payload_mask,
+ output wire [11:0] io_reads_1_rsp_payload_context,
+ input wire clk,
+ input wire reset
+);
+
+ reg [71:0] banks_0_ram_spinal_port1;
+ reg [71:0] banks_1_ram_spinal_port1;
+ wire [71:0] _zz_banks_0_ram_port;
+ wire [71:0] _zz_banks_1_ram_port;
+ wire [3:0] _zz_write_ports_0_priority_value;
+ wire [9:0] _zz_when_MemoryCore_l136;
+ wire [9:0] _zz_when_MemoryCore_l136_1;
+ reg [63:0] _zz_read_ports_0_buffer_bufferIn_payload_data;
+ reg [7:0] _zz_read_ports_0_buffer_bufferIn_payload_mask;
+ wire [3:0] _zz_read_ports_0_priority_value;
+ wire [9:0] _zz_when_MemoryCore_l221;
+ wire [9:0] _zz_when_MemoryCore_l221_1;
+ reg _zz_1;
+ reg _zz_2;
+ reg banks_0_write_valid;
+ reg [8:0] banks_0_write_payload_address;
+ reg [63:0] banks_0_write_payload_data_data;
+ reg [7:0] banks_0_write_payload_data_mask;
+ wire banks_0_read_cmd_valid;
+ wire [8:0] banks_0_read_cmd_payload;
+ wire [63:0] banks_0_read_rsp_data;
+ wire [7:0] banks_0_read_rsp_mask;
+ wire [71:0] _zz_banks_0_read_rsp_data;
+ wire banks_0_writeOr_value_valid;
+ wire [8:0] banks_0_writeOr_value_payload_address;
+ wire [63:0] banks_0_writeOr_value_payload_data_data;
+ wire [7:0] banks_0_writeOr_value_payload_data_mask;
+ wire banks_0_readOr_value_valid;
+ wire [8:0] banks_0_readOr_value_payload;
+ reg banks_1_write_valid;
+ reg [8:0] banks_1_write_payload_address;
+ reg [63:0] banks_1_write_payload_data_data;
+ reg [7:0] banks_1_write_payload_data_mask;
+ wire banks_1_read_cmd_valid;
+ wire [8:0] banks_1_read_cmd_payload;
+ wire [63:0] banks_1_read_rsp_data;
+ wire [7:0] banks_1_read_rsp_mask;
+ wire [71:0] _zz_banks_1_read_rsp_data;
+ wire banks_1_writeOr_value_valid;
+ wire [8:0] banks_1_writeOr_value_payload_address;
+ wire [63:0] banks_1_writeOr_value_payload_data_data;
+ wire [7:0] banks_1_writeOr_value_payload_data_mask;
+ wire banks_1_readOr_value_valid;
+ wire [8:0] banks_1_readOr_value_payload;
+ reg [3:0] write_ports_0_priority_value;
+ wire write_nodes_0_0_priority;
+ wire write_nodes_0_0_conflict;
+ wire write_nodes_0_1_priority;
+ wire write_nodes_0_1_conflict;
+ wire write_nodes_1_0_priority;
+ wire write_nodes_1_0_conflict;
+ wire write_nodes_1_1_priority;
+ wire write_nodes_1_1_conflict;
+ wire [0:0] write_arbiter_0_losedAgainst;
+ reg write_arbiter_0_doIt;
+ reg _zz_banks_0_writeOr_value_valid;
+ reg [8:0] _zz_banks_0_writeOr_value_valid_1;
+ reg [63:0] _zz_banks_0_writeOr_value_valid_2;
+ reg [7:0] _zz_banks_0_writeOr_value_valid_3;
+ wire when_MemoryCore_l136;
+ reg _zz_banks_1_writeOr_value_valid;
+ reg [8:0] _zz_banks_1_writeOr_value_valid_1;
+ reg [63:0] _zz_banks_1_writeOr_value_valid_2;
+ reg [7:0] _zz_banks_1_writeOr_value_valid_3;
+ wire when_MemoryCore_l136_1;
+ reg write_arbiter_0_doIt_regNext;
+ reg [6:0] io_writes_0_cmd_payload_context_regNext;
+ wire [0:0] write_arbiter_1_losedAgainst;
+ reg write_arbiter_1_doIt;
+ reg _zz_banks_0_writeOr_value_valid_4;
+ reg [8:0] _zz_banks_0_writeOr_value_valid_5;
+ reg [63:0] _zz_banks_0_writeOr_value_valid_6;
+ reg [7:0] _zz_banks_0_writeOr_value_valid_7;
+ wire when_MemoryCore_l136_2;
+ reg _zz_banks_1_writeOr_value_valid_4;
+ reg [8:0] _zz_banks_1_writeOr_value_valid_5;
+ reg [63:0] _zz_banks_1_writeOr_value_valid_6;
+ reg [7:0] _zz_banks_1_writeOr_value_valid_7;
+ wire when_MemoryCore_l136_3;
+ reg write_arbiter_1_doIt_regNext;
+ reg [6:0] io_writes_1_cmd_payload_context_regNext;
+ wire read_ports_0_buffer_s0_valid;
+ wire [2:0] read_ports_0_buffer_s0_payload_context;
+ wire [9:0] read_ports_0_buffer_s0_payload_address;
+ reg read_ports_0_buffer_s1_valid;
+ reg [2:0] read_ports_0_buffer_s1_payload_context;
+ reg [9:0] read_ports_0_buffer_s1_payload_address;
+ wire [0:0] read_ports_0_buffer_groupSel;
+ wire read_ports_0_buffer_bufferIn_valid;
+ wire read_ports_0_buffer_bufferIn_ready;
+ wire [63:0] read_ports_0_buffer_bufferIn_payload_data;
+ wire [7:0] read_ports_0_buffer_bufferIn_payload_mask;
+ wire [2:0] read_ports_0_buffer_bufferIn_payload_context;
+ wire read_ports_0_buffer_bufferOut_valid;
+ wire read_ports_0_buffer_bufferOut_ready;
+ wire [63:0] read_ports_0_buffer_bufferOut_payload_data;
+ wire [7:0] read_ports_0_buffer_bufferOut_payload_mask;
+ wire [2:0] read_ports_0_buffer_bufferOut_payload_context;
+ reg read_ports_0_buffer_bufferIn_rValidN;
+ reg [63:0] read_ports_0_buffer_bufferIn_rData_data;
+ reg [7:0] read_ports_0_buffer_bufferIn_rData_mask;
+ reg [2:0] read_ports_0_buffer_bufferIn_rData_context;
+ wire read_ports_0_buffer_full;
+ wire _zz_io_reads_0_cmd_ready;
+ wire read_ports_0_cmd_valid;
+ wire read_ports_0_cmd_ready;
+ wire [9:0] read_ports_0_cmd_payload_address;
+ wire [1:0] read_ports_0_cmd_payload_priority;
+ wire [2:0] read_ports_0_cmd_payload_context;
+ reg [3:0] read_ports_0_priority_value;
+ wire read_ports_1_buffer_s0_valid;
+ wire [11:0] read_ports_1_buffer_s0_payload_context;
+ wire [9:0] read_ports_1_buffer_s0_payload_address;
+ reg read_ports_1_buffer_s1_valid;
+ reg [11:0] read_ports_1_buffer_s1_payload_context;
+ reg [9:0] read_ports_1_buffer_s1_payload_address;
+ wire read_ports_1_buffer_bufferIn_valid;
+ wire read_ports_1_buffer_bufferIn_ready;
+ wire [127:0] read_ports_1_buffer_bufferIn_payload_data;
+ wire [15:0] read_ports_1_buffer_bufferIn_payload_mask;
+ wire [11:0] read_ports_1_buffer_bufferIn_payload_context;
+ wire read_ports_1_buffer_bufferOut_valid;
+ wire read_ports_1_buffer_bufferOut_ready;
+ wire [127:0] read_ports_1_buffer_bufferOut_payload_data;
+ wire [15:0] read_ports_1_buffer_bufferOut_payload_mask;
+ wire [11:0] read_ports_1_buffer_bufferOut_payload_context;
+ reg read_ports_1_buffer_bufferIn_rValidN;
+ reg [127:0] read_ports_1_buffer_bufferIn_rData_data;
+ reg [15:0] read_ports_1_buffer_bufferIn_rData_mask;
+ reg [11:0] read_ports_1_buffer_bufferIn_rData_context;
+ wire read_ports_1_buffer_full;
+ wire _zz_io_reads_1_cmd_ready;
+ wire read_ports_1_cmd_valid;
+ wire read_ports_1_cmd_ready;
+ wire [9:0] read_ports_1_cmd_payload_address;
+ wire [11:0] read_ports_1_cmd_payload_context;
+ wire read_nodes_0_0_priority;
+ wire read_nodes_0_0_conflict;
+ wire read_nodes_0_1_priority;
+ wire read_nodes_0_1_conflict;
+ wire read_nodes_1_0_priority;
+ wire read_nodes_1_0_conflict;
+ wire read_nodes_1_1_priority;
+ wire read_nodes_1_1_conflict;
+ wire [0:0] read_arbiter_0_losedAgainst;
+ wire read_arbiter_0_doIt;
+ reg _zz_banks_0_readOr_value_valid;
+ reg [8:0] _zz_banks_0_readOr_value_valid_1;
+ wire when_MemoryCore_l221;
+ reg _zz_banks_1_readOr_value_valid;
+ reg [8:0] _zz_banks_1_readOr_value_valid_1;
+ wire when_MemoryCore_l221_1;
+ wire [0:0] read_arbiter_1_losedAgainst;
+ wire read_arbiter_1_doIt;
+ reg _zz_banks_0_readOr_value_valid_2;
+ reg [8:0] _zz_banks_0_readOr_value_valid_3;
+ wire when_MemoryCore_l221_2;
+ reg _zz_banks_1_readOr_value_valid_2;
+ reg [8:0] _zz_banks_1_readOr_value_valid_3;
+ wire when_MemoryCore_l221_3;
+ reg [9:0] initialiser_counter;
+ wire initialiser_done;
+ wire when_MemoryCore_l239;
+ wire [71:0] _zz_banks_0_write_payload_data_data;
+ wire [71:0] _zz_banks_1_write_payload_data_data;
+ wire [81:0] _zz_banks_0_writeOr_value_valid_8;
+ wire [80:0] _zz_banks_0_writeOr_value_payload_address;
+ wire [71:0] _zz_banks_0_writeOr_value_payload_data_data;
+ wire [9:0] _zz_banks_0_readOr_value_valid_4;
+ wire [81:0] _zz_banks_1_writeOr_value_valid_8;
+ wire [80:0] _zz_banks_1_writeOr_value_payload_address;
+ wire [71:0] _zz_banks_1_writeOr_value_payload_data_data;
+ wire [9:0] _zz_banks_1_readOr_value_valid_4;
+ (* ram_style = "block" *) reg [71:0] banks_0_ram [0:511];
+ (* ram_style = "block" *) reg [71:0] banks_1_ram [0:511];
+
+ assign _zz_write_ports_0_priority_value = {2'd0, io_writes_0_cmd_payload_priority};
+ assign _zz_when_MemoryCore_l136 = (io_writes_0_cmd_payload_address ^ 10'h0);
+ assign _zz_when_MemoryCore_l136_1 = (io_writes_0_cmd_payload_address ^ 10'h001);
+ assign _zz_read_ports_0_priority_value = {2'd0, read_ports_0_cmd_payload_priority};
+ assign _zz_when_MemoryCore_l221 = (read_ports_0_cmd_payload_address ^ 10'h0);
+ assign _zz_when_MemoryCore_l221_1 = (read_ports_0_cmd_payload_address ^ 10'h001);
+ assign _zz_banks_0_ram_port = {banks_0_write_payload_data_mask,banks_0_write_payload_data_data};
+ assign _zz_banks_1_ram_port = {banks_1_write_payload_data_mask,banks_1_write_payload_data_data};
+ always @(posedge clk) begin
+ if(_zz_2) begin
+ banks_0_ram[banks_0_write_payload_address] <= _zz_banks_0_ram_port;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(banks_0_read_cmd_valid) begin
+ banks_0_ram_spinal_port1 <= banks_0_ram[banks_0_read_cmd_payload];
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ banks_1_ram[banks_1_write_payload_address] <= _zz_banks_1_ram_port;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(banks_1_read_cmd_valid) begin
+ banks_1_ram_spinal_port1 <= banks_1_ram[banks_1_read_cmd_payload];
+ end
+ end
+
+ initial begin
+ `ifndef SYNTHESIS
+ write_ports_0_priority_value = {$urandom};
+ read_ports_0_priority_value = {$urandom};
+ `endif
+ end
+
+ always @(*) begin
+ case(read_ports_0_buffer_groupSel)
+ 1'b0 : begin
+ _zz_read_ports_0_buffer_bufferIn_payload_data = banks_0_read_rsp_data;
+ _zz_read_ports_0_buffer_bufferIn_payload_mask = banks_0_read_rsp_mask;
+ end
+ default : begin
+ _zz_read_ports_0_buffer_bufferIn_payload_data = banks_1_read_rsp_data;
+ _zz_read_ports_0_buffer_bufferIn_payload_mask = banks_1_read_rsp_mask;
+ end
+ endcase
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(banks_1_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ _zz_2 = 1'b0;
+ if(banks_0_write_valid) begin
+ _zz_2 = 1'b1;
+ end
+ end
+
+ assign _zz_banks_0_read_rsp_data = banks_0_ram_spinal_port1;
+ assign banks_0_read_rsp_data = _zz_banks_0_read_rsp_data[63 : 0];
+ assign banks_0_read_rsp_mask = _zz_banks_0_read_rsp_data[71 : 64];
+ always @(*) begin
+ banks_0_write_valid = banks_0_writeOr_value_valid;
+ if(when_MemoryCore_l239) begin
+ banks_0_write_valid = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ banks_0_write_payload_address = banks_0_writeOr_value_payload_address;
+ if(when_MemoryCore_l239) begin
+ banks_0_write_payload_address = initialiser_counter[8:0];
+ end
+ end
+
+ always @(*) begin
+ banks_0_write_payload_data_data = banks_0_writeOr_value_payload_data_data;
+ if(when_MemoryCore_l239) begin
+ banks_0_write_payload_data_data = _zz_banks_0_write_payload_data_data[63 : 0];
+ end
+ end
+
+ always @(*) begin
+ banks_0_write_payload_data_mask = banks_0_writeOr_value_payload_data_mask;
+ if(when_MemoryCore_l239) begin
+ banks_0_write_payload_data_mask = _zz_banks_0_write_payload_data_data[71 : 64];
+ end
+ end
+
+ assign banks_0_read_cmd_valid = banks_0_readOr_value_valid;
+ assign banks_0_read_cmd_payload = banks_0_readOr_value_payload;
+ assign _zz_banks_1_read_rsp_data = banks_1_ram_spinal_port1;
+ assign banks_1_read_rsp_data = _zz_banks_1_read_rsp_data[63 : 0];
+ assign banks_1_read_rsp_mask = _zz_banks_1_read_rsp_data[71 : 64];
+ always @(*) begin
+ banks_1_write_valid = banks_1_writeOr_value_valid;
+ if(when_MemoryCore_l239) begin
+ banks_1_write_valid = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ banks_1_write_payload_address = banks_1_writeOr_value_payload_address;
+ if(when_MemoryCore_l239) begin
+ banks_1_write_payload_address = initialiser_counter[8:0];
+ end
+ end
+
+ always @(*) begin
+ banks_1_write_payload_data_data = banks_1_writeOr_value_payload_data_data;
+ if(when_MemoryCore_l239) begin
+ banks_1_write_payload_data_data = _zz_banks_1_write_payload_data_data[63 : 0];
+ end
+ end
+
+ always @(*) begin
+ banks_1_write_payload_data_mask = banks_1_writeOr_value_payload_data_mask;
+ if(when_MemoryCore_l239) begin
+ banks_1_write_payload_data_mask = _zz_banks_1_write_payload_data_data[71 : 64];
+ end
+ end
+
+ assign banks_1_read_cmd_valid = banks_1_readOr_value_valid;
+ assign banks_1_read_cmd_payload = banks_1_readOr_value_payload;
+ assign write_nodes_0_1_priority = 1'b0;
+ assign write_nodes_1_0_priority = 1'b1;
+ assign write_nodes_0_1_conflict = ((io_writes_0_cmd_valid && io_writes_1_cmd_valid) && (((io_writes_0_cmd_payload_address ^ io_writes_1_cmd_payload_address) & 10'h0) == 10'h0));
+ assign write_nodes_1_0_conflict = write_nodes_0_1_conflict;
+ assign write_arbiter_0_losedAgainst = (write_nodes_0_1_conflict && (! write_nodes_0_1_priority));
+ always @(*) begin
+ write_arbiter_0_doIt = (io_writes_0_cmd_valid && (write_arbiter_0_losedAgainst == 1'b0));
+ if(when_MemoryCore_l239) begin
+ write_arbiter_0_doIt = 1'b0;
+ end
+ end
+
+ assign when_MemoryCore_l136 = (write_arbiter_0_doIt && (_zz_when_MemoryCore_l136[0 : 0] == 1'b0));
+ always @(*) begin
+ if(when_MemoryCore_l136) begin
+ _zz_banks_0_writeOr_value_valid = 1'b1;
+ end else begin
+ _zz_banks_0_writeOr_value_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136) begin
+ _zz_banks_0_writeOr_value_valid_1 = (io_writes_0_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_0_writeOr_value_valid_1 = 9'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136) begin
+ _zz_banks_0_writeOr_value_valid_2 = io_writes_0_cmd_payload_data[63 : 0];
+ end else begin
+ _zz_banks_0_writeOr_value_valid_2 = 64'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136) begin
+ _zz_banks_0_writeOr_value_valid_3 = io_writes_0_cmd_payload_mask[7 : 0];
+ end else begin
+ _zz_banks_0_writeOr_value_valid_3 = 8'h0;
+ end
+ end
+
+ assign when_MemoryCore_l136_1 = (write_arbiter_0_doIt && (_zz_when_MemoryCore_l136_1[0 : 0] == 1'b0));
+ always @(*) begin
+ if(when_MemoryCore_l136_1) begin
+ _zz_banks_1_writeOr_value_valid = 1'b1;
+ end else begin
+ _zz_banks_1_writeOr_value_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_1) begin
+ _zz_banks_1_writeOr_value_valid_1 = (io_writes_0_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_1_writeOr_value_valid_1 = 9'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_1) begin
+ _zz_banks_1_writeOr_value_valid_2 = io_writes_0_cmd_payload_data[63 : 0];
+ end else begin
+ _zz_banks_1_writeOr_value_valid_2 = 64'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_1) begin
+ _zz_banks_1_writeOr_value_valid_3 = io_writes_0_cmd_payload_mask[7 : 0];
+ end else begin
+ _zz_banks_1_writeOr_value_valid_3 = 8'h0;
+ end
+ end
+
+ assign io_writes_0_cmd_ready = write_arbiter_0_doIt;
+ assign io_writes_0_rsp_valid = write_arbiter_0_doIt_regNext;
+ assign io_writes_0_rsp_payload_context = io_writes_0_cmd_payload_context_regNext;
+ assign write_arbiter_1_losedAgainst = (write_nodes_1_0_conflict && (! write_nodes_1_0_priority));
+ always @(*) begin
+ write_arbiter_1_doIt = (io_writes_1_cmd_valid && (write_arbiter_1_losedAgainst == 1'b0));
+ if(when_MemoryCore_l239) begin
+ write_arbiter_1_doIt = 1'b0;
+ end
+ end
+
+ assign when_MemoryCore_l136_2 = (write_arbiter_1_doIt && 1'b1);
+ always @(*) begin
+ if(when_MemoryCore_l136_2) begin
+ _zz_banks_0_writeOr_value_valid_4 = 1'b1;
+ end else begin
+ _zz_banks_0_writeOr_value_valid_4 = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_2) begin
+ _zz_banks_0_writeOr_value_valid_5 = (io_writes_1_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_0_writeOr_value_valid_5 = 9'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_2) begin
+ _zz_banks_0_writeOr_value_valid_6 = io_writes_1_cmd_payload_data[63 : 0];
+ end else begin
+ _zz_banks_0_writeOr_value_valid_6 = 64'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_2) begin
+ _zz_banks_0_writeOr_value_valid_7 = io_writes_1_cmd_payload_mask[7 : 0];
+ end else begin
+ _zz_banks_0_writeOr_value_valid_7 = 8'h0;
+ end
+ end
+
+ assign when_MemoryCore_l136_3 = (write_arbiter_1_doIt && 1'b1);
+ always @(*) begin
+ if(when_MemoryCore_l136_3) begin
+ _zz_banks_1_writeOr_value_valid_4 = 1'b1;
+ end else begin
+ _zz_banks_1_writeOr_value_valid_4 = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_3) begin
+ _zz_banks_1_writeOr_value_valid_5 = (io_writes_1_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_1_writeOr_value_valid_5 = 9'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_3) begin
+ _zz_banks_1_writeOr_value_valid_6 = io_writes_1_cmd_payload_data[127 : 64];
+ end else begin
+ _zz_banks_1_writeOr_value_valid_6 = 64'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_3) begin
+ _zz_banks_1_writeOr_value_valid_7 = io_writes_1_cmd_payload_mask[15 : 8];
+ end else begin
+ _zz_banks_1_writeOr_value_valid_7 = 8'h0;
+ end
+ end
+
+ assign io_writes_1_cmd_ready = write_arbiter_1_doIt;
+ assign io_writes_1_rsp_valid = write_arbiter_1_doIt_regNext;
+ assign io_writes_1_rsp_payload_context = io_writes_1_cmd_payload_context_regNext;
+ assign read_ports_0_buffer_groupSel = read_ports_0_buffer_s1_payload_address[0 : 0];
+ assign read_ports_0_buffer_bufferIn_valid = read_ports_0_buffer_s1_valid;
+ assign read_ports_0_buffer_bufferIn_payload_context = read_ports_0_buffer_s1_payload_context;
+ assign read_ports_0_buffer_bufferIn_payload_data = _zz_read_ports_0_buffer_bufferIn_payload_data;
+ assign read_ports_0_buffer_bufferIn_payload_mask = _zz_read_ports_0_buffer_bufferIn_payload_mask;
+ assign read_ports_0_buffer_bufferIn_ready = read_ports_0_buffer_bufferIn_rValidN;
+ assign read_ports_0_buffer_bufferOut_valid = (read_ports_0_buffer_bufferIn_valid || (! read_ports_0_buffer_bufferIn_rValidN));
+ assign read_ports_0_buffer_bufferOut_payload_data = (read_ports_0_buffer_bufferIn_rValidN ? read_ports_0_buffer_bufferIn_payload_data : read_ports_0_buffer_bufferIn_rData_data);
+ assign read_ports_0_buffer_bufferOut_payload_mask = (read_ports_0_buffer_bufferIn_rValidN ? read_ports_0_buffer_bufferIn_payload_mask : read_ports_0_buffer_bufferIn_rData_mask);
+ assign read_ports_0_buffer_bufferOut_payload_context = (read_ports_0_buffer_bufferIn_rValidN ? read_ports_0_buffer_bufferIn_payload_context : read_ports_0_buffer_bufferIn_rData_context);
+ assign io_reads_0_rsp_valid = read_ports_0_buffer_bufferOut_valid;
+ assign read_ports_0_buffer_bufferOut_ready = io_reads_0_rsp_ready;
+ assign io_reads_0_rsp_payload_data = read_ports_0_buffer_bufferOut_payload_data;
+ assign io_reads_0_rsp_payload_mask = read_ports_0_buffer_bufferOut_payload_mask;
+ assign io_reads_0_rsp_payload_context = read_ports_0_buffer_bufferOut_payload_context;
+ assign read_ports_0_buffer_full = (read_ports_0_buffer_bufferOut_valid && (! read_ports_0_buffer_bufferOut_ready));
+ assign _zz_io_reads_0_cmd_ready = (! read_ports_0_buffer_full);
+ assign read_ports_0_cmd_valid = (io_reads_0_cmd_valid && _zz_io_reads_0_cmd_ready);
+ assign io_reads_0_cmd_ready = (read_ports_0_cmd_ready && _zz_io_reads_0_cmd_ready);
+ assign read_ports_0_cmd_payload_address = io_reads_0_cmd_payload_address;
+ assign read_ports_0_cmd_payload_priority = io_reads_0_cmd_payload_priority;
+ assign read_ports_0_cmd_payload_context = io_reads_0_cmd_payload_context;
+ assign read_ports_1_buffer_bufferIn_valid = read_ports_1_buffer_s1_valid;
+ assign read_ports_1_buffer_bufferIn_payload_context = read_ports_1_buffer_s1_payload_context;
+ assign read_ports_1_buffer_bufferIn_payload_data = {banks_1_read_rsp_data,banks_0_read_rsp_data};
+ assign read_ports_1_buffer_bufferIn_payload_mask = {banks_1_read_rsp_mask,banks_0_read_rsp_mask};
+ assign read_ports_1_buffer_bufferIn_ready = read_ports_1_buffer_bufferIn_rValidN;
+ assign read_ports_1_buffer_bufferOut_valid = (read_ports_1_buffer_bufferIn_valid || (! read_ports_1_buffer_bufferIn_rValidN));
+ assign read_ports_1_buffer_bufferOut_payload_data = (read_ports_1_buffer_bufferIn_rValidN ? read_ports_1_buffer_bufferIn_payload_data : read_ports_1_buffer_bufferIn_rData_data);
+ assign read_ports_1_buffer_bufferOut_payload_mask = (read_ports_1_buffer_bufferIn_rValidN ? read_ports_1_buffer_bufferIn_payload_mask : read_ports_1_buffer_bufferIn_rData_mask);
+ assign read_ports_1_buffer_bufferOut_payload_context = (read_ports_1_buffer_bufferIn_rValidN ? read_ports_1_buffer_bufferIn_payload_context : read_ports_1_buffer_bufferIn_rData_context);
+ assign io_reads_1_rsp_valid = read_ports_1_buffer_bufferOut_valid;
+ assign read_ports_1_buffer_bufferOut_ready = io_reads_1_rsp_ready;
+ assign io_reads_1_rsp_payload_data = read_ports_1_buffer_bufferOut_payload_data;
+ assign io_reads_1_rsp_payload_mask = read_ports_1_buffer_bufferOut_payload_mask;
+ assign io_reads_1_rsp_payload_context = read_ports_1_buffer_bufferOut_payload_context;
+ assign read_ports_1_buffer_full = (read_ports_1_buffer_bufferOut_valid && (! read_ports_1_buffer_bufferOut_ready));
+ assign _zz_io_reads_1_cmd_ready = (! read_ports_1_buffer_full);
+ assign read_ports_1_cmd_valid = (io_reads_1_cmd_valid && _zz_io_reads_1_cmd_ready);
+ assign io_reads_1_cmd_ready = (read_ports_1_cmd_ready && _zz_io_reads_1_cmd_ready);
+ assign read_ports_1_cmd_payload_address = io_reads_1_cmd_payload_address;
+ assign read_ports_1_cmd_payload_context = io_reads_1_cmd_payload_context;
+ assign read_nodes_0_1_priority = 1'b0;
+ assign read_nodes_1_0_priority = 1'b1;
+ assign read_nodes_0_1_conflict = ((read_ports_0_cmd_valid && read_ports_1_cmd_valid) && (((read_ports_0_cmd_payload_address ^ io_reads_1_cmd_payload_address) & 10'h0) == 10'h0));
+ assign read_nodes_1_0_conflict = read_nodes_0_1_conflict;
+ assign read_arbiter_0_losedAgainst = (read_nodes_0_1_conflict && (! read_nodes_0_1_priority));
+ assign read_arbiter_0_doIt = (read_ports_0_cmd_valid && (read_arbiter_0_losedAgainst == 1'b0));
+ assign when_MemoryCore_l221 = (read_arbiter_0_doIt && (_zz_when_MemoryCore_l221[0 : 0] == 1'b0));
+ always @(*) begin
+ if(when_MemoryCore_l221) begin
+ _zz_banks_0_readOr_value_valid = 1'b1;
+ end else begin
+ _zz_banks_0_readOr_value_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l221) begin
+ _zz_banks_0_readOr_value_valid_1 = (read_ports_0_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_0_readOr_value_valid_1 = 9'h0;
+ end
+ end
+
+ assign when_MemoryCore_l221_1 = (read_arbiter_0_doIt && (_zz_when_MemoryCore_l221_1[0 : 0] == 1'b0));
+ always @(*) begin
+ if(when_MemoryCore_l221_1) begin
+ _zz_banks_1_readOr_value_valid = 1'b1;
+ end else begin
+ _zz_banks_1_readOr_value_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l221_1) begin
+ _zz_banks_1_readOr_value_valid_1 = (read_ports_0_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_1_readOr_value_valid_1 = 9'h0;
+ end
+ end
+
+ assign read_ports_0_cmd_ready = read_arbiter_0_doIt;
+ assign read_ports_0_buffer_s0_valid = read_arbiter_0_doIt;
+ assign read_ports_0_buffer_s0_payload_context = read_ports_0_cmd_payload_context;
+ assign read_ports_0_buffer_s0_payload_address = read_ports_0_cmd_payload_address;
+ assign read_arbiter_1_losedAgainst = (read_nodes_1_0_conflict && (! read_nodes_1_0_priority));
+ assign read_arbiter_1_doIt = (read_ports_1_cmd_valid && (read_arbiter_1_losedAgainst == 1'b0));
+ assign when_MemoryCore_l221_2 = (read_arbiter_1_doIt && 1'b1);
+ always @(*) begin
+ if(when_MemoryCore_l221_2) begin
+ _zz_banks_0_readOr_value_valid_2 = 1'b1;
+ end else begin
+ _zz_banks_0_readOr_value_valid_2 = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l221_2) begin
+ _zz_banks_0_readOr_value_valid_3 = (read_ports_1_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_0_readOr_value_valid_3 = 9'h0;
+ end
+ end
+
+ assign when_MemoryCore_l221_3 = (read_arbiter_1_doIt && 1'b1);
+ always @(*) begin
+ if(when_MemoryCore_l221_3) begin
+ _zz_banks_1_readOr_value_valid_2 = 1'b1;
+ end else begin
+ _zz_banks_1_readOr_value_valid_2 = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l221_3) begin
+ _zz_banks_1_readOr_value_valid_3 = (read_ports_1_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_1_readOr_value_valid_3 = 9'h0;
+ end
+ end
+
+ assign read_ports_1_cmd_ready = read_arbiter_1_doIt;
+ assign read_ports_1_buffer_s0_valid = read_arbiter_1_doIt;
+ assign read_ports_1_buffer_s0_payload_context = read_ports_1_cmd_payload_context;
+ assign read_ports_1_buffer_s0_payload_address = read_ports_1_cmd_payload_address;
+ assign initialiser_done = initialiser_counter[9];
+ assign when_MemoryCore_l239 = (! initialiser_done);
+ assign _zz_banks_0_write_payload_data_data = 72'h0;
+ assign _zz_banks_1_write_payload_data_data = 72'h0;
+ assign _zz_banks_0_writeOr_value_valid_8 = ({{{_zz_banks_0_writeOr_value_valid_3,_zz_banks_0_writeOr_value_valid_2},_zz_banks_0_writeOr_value_valid_1},_zz_banks_0_writeOr_value_valid} | {{{_zz_banks_0_writeOr_value_valid_7,_zz_banks_0_writeOr_value_valid_6},_zz_banks_0_writeOr_value_valid_5},_zz_banks_0_writeOr_value_valid_4});
+ assign banks_0_writeOr_value_valid = _zz_banks_0_writeOr_value_valid_8[0];
+ assign _zz_banks_0_writeOr_value_payload_address = _zz_banks_0_writeOr_value_valid_8[81 : 1];
+ assign banks_0_writeOr_value_payload_address = _zz_banks_0_writeOr_value_payload_address[8 : 0];
+ assign _zz_banks_0_writeOr_value_payload_data_data = _zz_banks_0_writeOr_value_payload_address[80 : 9];
+ assign banks_0_writeOr_value_payload_data_data = _zz_banks_0_writeOr_value_payload_data_data[63 : 0];
+ assign banks_0_writeOr_value_payload_data_mask = _zz_banks_0_writeOr_value_payload_data_data[71 : 64];
+ assign _zz_banks_0_readOr_value_valid_4 = ({_zz_banks_0_readOr_value_valid_1,_zz_banks_0_readOr_value_valid} | {_zz_banks_0_readOr_value_valid_3,_zz_banks_0_readOr_value_valid_2});
+ assign banks_0_readOr_value_valid = _zz_banks_0_readOr_value_valid_4[0];
+ assign banks_0_readOr_value_payload = _zz_banks_0_readOr_value_valid_4[9 : 1];
+ assign _zz_banks_1_writeOr_value_valid_8 = ({{{_zz_banks_1_writeOr_value_valid_3,_zz_banks_1_writeOr_value_valid_2},_zz_banks_1_writeOr_value_valid_1},_zz_banks_1_writeOr_value_valid} | {{{_zz_banks_1_writeOr_value_valid_7,_zz_banks_1_writeOr_value_valid_6},_zz_banks_1_writeOr_value_valid_5},_zz_banks_1_writeOr_value_valid_4});
+ assign banks_1_writeOr_value_valid = _zz_banks_1_writeOr_value_valid_8[0];
+ assign _zz_banks_1_writeOr_value_payload_address = _zz_banks_1_writeOr_value_valid_8[81 : 1];
+ assign banks_1_writeOr_value_payload_address = _zz_banks_1_writeOr_value_payload_address[8 : 0];
+ assign _zz_banks_1_writeOr_value_payload_data_data = _zz_banks_1_writeOr_value_payload_address[80 : 9];
+ assign banks_1_writeOr_value_payload_data_data = _zz_banks_1_writeOr_value_payload_data_data[63 : 0];
+ assign banks_1_writeOr_value_payload_data_mask = _zz_banks_1_writeOr_value_payload_data_data[71 : 64];
+ assign _zz_banks_1_readOr_value_valid_4 = ({_zz_banks_1_readOr_value_valid_1,_zz_banks_1_readOr_value_valid} | {_zz_banks_1_readOr_value_valid_3,_zz_banks_1_readOr_value_valid_2});
+ assign banks_1_readOr_value_valid = _zz_banks_1_readOr_value_valid_4[0];
+ assign banks_1_readOr_value_payload = _zz_banks_1_readOr_value_valid_4[9 : 1];
+ always @(posedge clk) begin
+ if(io_writes_0_cmd_valid) begin
+ write_ports_0_priority_value <= (write_ports_0_priority_value + _zz_write_ports_0_priority_value);
+ if(io_writes_0_cmd_ready) begin
+ write_ports_0_priority_value <= 4'b0000;
+ end
+ end
+ io_writes_0_cmd_payload_context_regNext <= io_writes_0_cmd_payload_context;
+ io_writes_1_cmd_payload_context_regNext <= io_writes_1_cmd_payload_context;
+ read_ports_0_buffer_s1_payload_context <= read_ports_0_buffer_s0_payload_context;
+ read_ports_0_buffer_s1_payload_address <= read_ports_0_buffer_s0_payload_address;
+ if(read_ports_0_buffer_bufferIn_ready) begin
+ read_ports_0_buffer_bufferIn_rData_data <= read_ports_0_buffer_bufferIn_payload_data;
+ read_ports_0_buffer_bufferIn_rData_mask <= read_ports_0_buffer_bufferIn_payload_mask;
+ read_ports_0_buffer_bufferIn_rData_context <= read_ports_0_buffer_bufferIn_payload_context;
+ end
+ if(read_ports_0_cmd_valid) begin
+ read_ports_0_priority_value <= (read_ports_0_priority_value + _zz_read_ports_0_priority_value);
+ if(read_ports_0_cmd_ready) begin
+ read_ports_0_priority_value <= 4'b0000;
+ end
+ end
+ read_ports_1_buffer_s1_payload_context <= read_ports_1_buffer_s0_payload_context;
+ read_ports_1_buffer_s1_payload_address <= read_ports_1_buffer_s0_payload_address;
+ if(read_ports_1_buffer_bufferIn_ready) begin
+ read_ports_1_buffer_bufferIn_rData_data <= read_ports_1_buffer_bufferIn_payload_data;
+ read_ports_1_buffer_bufferIn_rData_mask <= read_ports_1_buffer_bufferIn_payload_mask;
+ read_ports_1_buffer_bufferIn_rData_context <= read_ports_1_buffer_bufferIn_payload_context;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ write_arbiter_0_doIt_regNext <= 1'b0;
+ write_arbiter_1_doIt_regNext <= 1'b0;
+ read_ports_0_buffer_s1_valid <= 1'b0;
+ read_ports_0_buffer_bufferIn_rValidN <= 1'b1;
+ read_ports_1_buffer_s1_valid <= 1'b0;
+ read_ports_1_buffer_bufferIn_rValidN <= 1'b1;
+ initialiser_counter <= 10'h0;
+ end else begin
+ write_arbiter_0_doIt_regNext <= write_arbiter_0_doIt;
+ write_arbiter_1_doIt_regNext <= write_arbiter_1_doIt;
+ read_ports_0_buffer_s1_valid <= read_ports_0_buffer_s0_valid;
+ if(read_ports_0_buffer_bufferIn_valid) begin
+ read_ports_0_buffer_bufferIn_rValidN <= 1'b0;
+ end
+ if(read_ports_0_buffer_bufferOut_ready) begin
+ read_ports_0_buffer_bufferIn_rValidN <= 1'b1;
+ end
+ read_ports_1_buffer_s1_valid <= read_ports_1_buffer_s0_valid;
+ if(read_ports_1_buffer_bufferIn_valid) begin
+ read_ports_1_buffer_bufferIn_rValidN <= 1'b0;
+ end
+ if(read_ports_1_buffer_bufferOut_ready) begin
+ read_ports_1_buffer_bufferIn_rValidN <= 1'b1;
+ end
+ if(when_MemoryCore_l239) begin
+ initialiser_counter <= (initialiser_counter + 10'h001);
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamFifo_1_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [13:0] io_push_payload_context,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [13:0] io_pop_payload_context,
+ input wire io_flush,
+ output wire [2:0] io_occupancy,
+ output wire [2:0] io_availability,
+ input wire clk,
+ input wire reset
+);
+
+ reg [13:0] logic_ram_spinal_port1;
+ wire [2:0] _zz_logic_ptr_notPow2_counter;
+ wire [2:0] _zz_logic_ptr_notPow2_counter_1;
+ wire [0:0] _zz_logic_ptr_notPow2_counter_2;
+ wire [2:0] _zz_logic_ptr_notPow2_counter_3;
+ wire [0:0] _zz_logic_ptr_notPow2_counter_4;
+ reg _zz_1;
+ wire logic_ptr_doPush;
+ wire logic_ptr_doPop;
+ wire logic_ptr_full;
+ wire logic_ptr_empty;
+ reg [2:0] logic_ptr_push;
+ reg [2:0] logic_ptr_pop;
+ wire [2:0] logic_ptr_occupancy;
+ wire [2:0] logic_ptr_popOnIo;
+ wire when_Stream_l1248;
+ reg logic_ptr_wentUp;
+ wire when_Stream_l1283;
+ wire when_Stream_l1287;
+ reg [2:0] logic_ptr_notPow2_counter;
+ wire io_push_fire;
+ wire io_pop_fire;
+ wire logic_push_onRam_write_valid;
+ wire [2:0] logic_push_onRam_write_payload_address;
+ wire [13:0] logic_push_onRam_write_payload_data_context;
+ wire logic_pop_addressGen_valid;
+ reg logic_pop_addressGen_ready;
+ wire [2:0] logic_pop_addressGen_payload;
+ wire logic_pop_addressGen_fire;
+ wire logic_pop_sync_readArbitation_valid;
+ wire logic_pop_sync_readArbitation_ready;
+ wire [2:0] logic_pop_sync_readArbitation_payload;
+ reg logic_pop_addressGen_rValid;
+ reg [2:0] logic_pop_addressGen_rData;
+ wire when_Stream_l375;
+ wire logic_pop_sync_readPort_cmd_valid;
+ wire [2:0] logic_pop_sync_readPort_cmd_payload;
+ wire [13:0] logic_pop_sync_readPort_rsp_context;
+ wire logic_pop_sync_readArbitation_translated_valid;
+ wire logic_pop_sync_readArbitation_translated_ready;
+ wire [13:0] logic_pop_sync_readArbitation_translated_payload_context;
+ wire logic_pop_sync_readArbitation_fire;
+ reg [2:0] logic_pop_sync_popReg;
+ reg [13:0] logic_ram [0:6];
+
+ assign _zz_logic_ptr_notPow2_counter = (logic_ptr_notPow2_counter + _zz_logic_ptr_notPow2_counter_1);
+ assign _zz_logic_ptr_notPow2_counter_2 = io_push_fire;
+ assign _zz_logic_ptr_notPow2_counter_1 = {2'd0, _zz_logic_ptr_notPow2_counter_2};
+ assign _zz_logic_ptr_notPow2_counter_4 = io_pop_fire;
+ assign _zz_logic_ptr_notPow2_counter_3 = {2'd0, _zz_logic_ptr_notPow2_counter_4};
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_push_onRam_write_payload_address] <= logic_push_onRam_write_payload_data_context;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_sync_readPort_cmd_valid) begin
+ logic_ram_spinal_port1 <= logic_ram[logic_pop_sync_readPort_cmd_payload];
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_push_onRam_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l1248 = (logic_ptr_doPush != logic_ptr_doPop);
+ assign logic_ptr_full = ((logic_ptr_push == logic_ptr_popOnIo) && logic_ptr_wentUp);
+ assign logic_ptr_empty = ((logic_ptr_push == logic_ptr_pop) && (! logic_ptr_wentUp));
+ assign when_Stream_l1283 = (logic_ptr_push == 3'b110);
+ assign when_Stream_l1287 = (logic_ptr_pop == 3'b110);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign io_pop_fire = (io_pop_valid && io_pop_ready);
+ assign logic_ptr_occupancy = logic_ptr_notPow2_counter;
+ assign io_push_ready = (! logic_ptr_full);
+ assign logic_ptr_doPush = io_push_fire;
+ assign logic_push_onRam_write_valid = io_push_fire;
+ assign logic_push_onRam_write_payload_address = logic_ptr_push;
+ assign logic_push_onRam_write_payload_data_context = io_push_payload_context;
+ assign logic_pop_addressGen_valid = (! logic_ptr_empty);
+ assign logic_pop_addressGen_payload = logic_ptr_pop;
+ assign logic_pop_addressGen_fire = (logic_pop_addressGen_valid && logic_pop_addressGen_ready);
+ assign logic_ptr_doPop = logic_pop_addressGen_fire;
+ always @(*) begin
+ logic_pop_addressGen_ready = logic_pop_sync_readArbitation_ready;
+ if(when_Stream_l375) begin
+ logic_pop_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! logic_pop_sync_readArbitation_valid);
+ assign logic_pop_sync_readArbitation_valid = logic_pop_addressGen_rValid;
+ assign logic_pop_sync_readArbitation_payload = logic_pop_addressGen_rData;
+ assign logic_pop_sync_readPort_rsp_context = logic_ram_spinal_port1[13 : 0];
+ assign logic_pop_sync_readPort_cmd_valid = logic_pop_addressGen_fire;
+ assign logic_pop_sync_readPort_cmd_payload = logic_pop_addressGen_payload;
+ assign logic_pop_sync_readArbitation_translated_valid = logic_pop_sync_readArbitation_valid;
+ assign logic_pop_sync_readArbitation_ready = logic_pop_sync_readArbitation_translated_ready;
+ assign logic_pop_sync_readArbitation_translated_payload_context = logic_pop_sync_readPort_rsp_context;
+ assign io_pop_valid = logic_pop_sync_readArbitation_translated_valid;
+ assign logic_pop_sync_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_context = logic_pop_sync_readArbitation_translated_payload_context;
+ assign logic_pop_sync_readArbitation_fire = (logic_pop_sync_readArbitation_valid && logic_pop_sync_readArbitation_ready);
+ assign logic_ptr_popOnIo = logic_pop_sync_popReg;
+ assign io_occupancy = logic_ptr_occupancy;
+ assign io_availability = (3'b111 - logic_ptr_occupancy);
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_ptr_push <= 3'b000;
+ logic_ptr_pop <= 3'b000;
+ logic_ptr_wentUp <= 1'b0;
+ logic_ptr_notPow2_counter <= 3'b000;
+ logic_pop_addressGen_rValid <= 1'b0;
+ logic_pop_sync_popReg <= 3'b000;
+ end else begin
+ if(when_Stream_l1248) begin
+ logic_ptr_wentUp <= logic_ptr_doPush;
+ end
+ if(io_flush) begin
+ logic_ptr_wentUp <= 1'b0;
+ end
+ if(logic_ptr_doPush) begin
+ logic_ptr_push <= (logic_ptr_push + 3'b001);
+ if(when_Stream_l1283) begin
+ logic_ptr_push <= 3'b000;
+ end
+ end
+ if(logic_ptr_doPop) begin
+ logic_ptr_pop <= (logic_ptr_pop + 3'b001);
+ if(when_Stream_l1287) begin
+ logic_ptr_pop <= 3'b000;
+ end
+ end
+ if(io_flush) begin
+ logic_ptr_push <= 3'b000;
+ logic_ptr_pop <= 3'b000;
+ end
+ logic_ptr_notPow2_counter <= (_zz_logic_ptr_notPow2_counter - _zz_logic_ptr_notPow2_counter_3);
+ if(io_flush) begin
+ logic_ptr_notPow2_counter <= 3'b000;
+ end
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rValid <= logic_pop_addressGen_valid;
+ end
+ if(io_flush) begin
+ logic_pop_addressGen_rValid <= 1'b0;
+ end
+ if(logic_pop_sync_readArbitation_fire) begin
+ logic_pop_sync_popReg <= logic_ptr_pop;
+ end
+ if(io_flush) begin
+ logic_pop_sync_popReg <= 3'b000;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rData <= logic_pop_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamFifo_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [21:0] io_push_payload_context,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [21:0] io_pop_payload_context,
+ input wire io_flush,
+ output wire [2:0] io_occupancy,
+ output wire [2:0] io_availability,
+ input wire clk,
+ input wire reset
+);
+
+ reg [21:0] logic_ram_spinal_port1;
+ wire [2:0] _zz_logic_ptr_notPow2_counter;
+ wire [2:0] _zz_logic_ptr_notPow2_counter_1;
+ wire [0:0] _zz_logic_ptr_notPow2_counter_2;
+ wire [2:0] _zz_logic_ptr_notPow2_counter_3;
+ wire [0:0] _zz_logic_ptr_notPow2_counter_4;
+ reg _zz_1;
+ wire logic_ptr_doPush;
+ wire logic_ptr_doPop;
+ wire logic_ptr_full;
+ wire logic_ptr_empty;
+ reg [2:0] logic_ptr_push;
+ reg [2:0] logic_ptr_pop;
+ wire [2:0] logic_ptr_occupancy;
+ wire [2:0] logic_ptr_popOnIo;
+ wire when_Stream_l1248;
+ reg logic_ptr_wentUp;
+ wire when_Stream_l1283;
+ wire when_Stream_l1287;
+ reg [2:0] logic_ptr_notPow2_counter;
+ wire io_push_fire;
+ wire io_pop_fire;
+ wire logic_push_onRam_write_valid;
+ wire [2:0] logic_push_onRam_write_payload_address;
+ wire [21:0] logic_push_onRam_write_payload_data_context;
+ wire logic_pop_addressGen_valid;
+ reg logic_pop_addressGen_ready;
+ wire [2:0] logic_pop_addressGen_payload;
+ wire logic_pop_addressGen_fire;
+ wire logic_pop_sync_readArbitation_valid;
+ wire logic_pop_sync_readArbitation_ready;
+ wire [2:0] logic_pop_sync_readArbitation_payload;
+ reg logic_pop_addressGen_rValid;
+ reg [2:0] logic_pop_addressGen_rData;
+ wire when_Stream_l375;
+ wire logic_pop_sync_readPort_cmd_valid;
+ wire [2:0] logic_pop_sync_readPort_cmd_payload;
+ wire [21:0] logic_pop_sync_readPort_rsp_context;
+ wire logic_pop_sync_readArbitation_translated_valid;
+ wire logic_pop_sync_readArbitation_translated_ready;
+ wire [21:0] logic_pop_sync_readArbitation_translated_payload_context;
+ wire logic_pop_sync_readArbitation_fire;
+ reg [2:0] logic_pop_sync_popReg;
+ reg [21:0] logic_ram [0:6];
+
+ assign _zz_logic_ptr_notPow2_counter = (logic_ptr_notPow2_counter + _zz_logic_ptr_notPow2_counter_1);
+ assign _zz_logic_ptr_notPow2_counter_2 = io_push_fire;
+ assign _zz_logic_ptr_notPow2_counter_1 = {2'd0, _zz_logic_ptr_notPow2_counter_2};
+ assign _zz_logic_ptr_notPow2_counter_4 = io_pop_fire;
+ assign _zz_logic_ptr_notPow2_counter_3 = {2'd0, _zz_logic_ptr_notPow2_counter_4};
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_push_onRam_write_payload_address] <= logic_push_onRam_write_payload_data_context;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_sync_readPort_cmd_valid) begin
+ logic_ram_spinal_port1 <= logic_ram[logic_pop_sync_readPort_cmd_payload];
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_push_onRam_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l1248 = (logic_ptr_doPush != logic_ptr_doPop);
+ assign logic_ptr_full = ((logic_ptr_push == logic_ptr_popOnIo) && logic_ptr_wentUp);
+ assign logic_ptr_empty = ((logic_ptr_push == logic_ptr_pop) && (! logic_ptr_wentUp));
+ assign when_Stream_l1283 = (logic_ptr_push == 3'b110);
+ assign when_Stream_l1287 = (logic_ptr_pop == 3'b110);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign io_pop_fire = (io_pop_valid && io_pop_ready);
+ assign logic_ptr_occupancy = logic_ptr_notPow2_counter;
+ assign io_push_ready = (! logic_ptr_full);
+ assign logic_ptr_doPush = io_push_fire;
+ assign logic_push_onRam_write_valid = io_push_fire;
+ assign logic_push_onRam_write_payload_address = logic_ptr_push;
+ assign logic_push_onRam_write_payload_data_context = io_push_payload_context;
+ assign logic_pop_addressGen_valid = (! logic_ptr_empty);
+ assign logic_pop_addressGen_payload = logic_ptr_pop;
+ assign logic_pop_addressGen_fire = (logic_pop_addressGen_valid && logic_pop_addressGen_ready);
+ assign logic_ptr_doPop = logic_pop_addressGen_fire;
+ always @(*) begin
+ logic_pop_addressGen_ready = logic_pop_sync_readArbitation_ready;
+ if(when_Stream_l375) begin
+ logic_pop_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! logic_pop_sync_readArbitation_valid);
+ assign logic_pop_sync_readArbitation_valid = logic_pop_addressGen_rValid;
+ assign logic_pop_sync_readArbitation_payload = logic_pop_addressGen_rData;
+ assign logic_pop_sync_readPort_rsp_context = logic_ram_spinal_port1[21 : 0];
+ assign logic_pop_sync_readPort_cmd_valid = logic_pop_addressGen_fire;
+ assign logic_pop_sync_readPort_cmd_payload = logic_pop_addressGen_payload;
+ assign logic_pop_sync_readArbitation_translated_valid = logic_pop_sync_readArbitation_valid;
+ assign logic_pop_sync_readArbitation_ready = logic_pop_sync_readArbitation_translated_ready;
+ assign logic_pop_sync_readArbitation_translated_payload_context = logic_pop_sync_readPort_rsp_context;
+ assign io_pop_valid = logic_pop_sync_readArbitation_translated_valid;
+ assign logic_pop_sync_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_context = logic_pop_sync_readArbitation_translated_payload_context;
+ assign logic_pop_sync_readArbitation_fire = (logic_pop_sync_readArbitation_valid && logic_pop_sync_readArbitation_ready);
+ assign logic_ptr_popOnIo = logic_pop_sync_popReg;
+ assign io_occupancy = logic_ptr_occupancy;
+ assign io_availability = (3'b111 - logic_ptr_occupancy);
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_ptr_push <= 3'b000;
+ logic_ptr_pop <= 3'b000;
+ logic_ptr_wentUp <= 1'b0;
+ logic_ptr_notPow2_counter <= 3'b000;
+ logic_pop_addressGen_rValid <= 1'b0;
+ logic_pop_sync_popReg <= 3'b000;
+ end else begin
+ if(when_Stream_l1248) begin
+ logic_ptr_wentUp <= logic_ptr_doPush;
+ end
+ if(io_flush) begin
+ logic_ptr_wentUp <= 1'b0;
+ end
+ if(logic_ptr_doPush) begin
+ logic_ptr_push <= (logic_ptr_push + 3'b001);
+ if(when_Stream_l1283) begin
+ logic_ptr_push <= 3'b000;
+ end
+ end
+ if(logic_ptr_doPop) begin
+ logic_ptr_pop <= (logic_ptr_pop + 3'b001);
+ if(when_Stream_l1287) begin
+ logic_ptr_pop <= 3'b000;
+ end
+ end
+ if(io_flush) begin
+ logic_ptr_push <= 3'b000;
+ logic_ptr_pop <= 3'b000;
+ end
+ logic_ptr_notPow2_counter <= (_zz_logic_ptr_notPow2_counter - _zz_logic_ptr_notPow2_counter_3);
+ if(io_flush) begin
+ logic_ptr_notPow2_counter <= 3'b000;
+ end
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rValid <= logic_pop_addressGen_valid;
+ end
+ if(io_flush) begin
+ logic_pop_addressGen_rValid <= 1'b0;
+ end
+ if(logic_pop_sync_readArbitation_fire) begin
+ logic_pop_sync_popReg <= logic_ptr_pop;
+ end
+ if(io_flush) begin
+ logic_pop_sync_popReg <= 3'b000;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rData <= logic_pop_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BufferCC_1_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_dataIn,
+ output wire io_dataOut,
+ input wire ctrl_clk,
+ input wire ctrl_reset
+);
+
+ (* async_reg = "true" *) reg buffers_0;
+ (* async_reg = "true" *) reg buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge ctrl_clk) begin
+ if(ctrl_reset) begin
+ buffers_0 <= 1'b0;
+ buffers_1 <= 1'b0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BufferCC_a048ca8f51874147a1cd65d43e6523ef (
+ input wire io_dataIn,
+ output wire io_dataOut,
+ input wire clk,
+ input wire reset
+);
+
+ (* async_reg = "true" *) reg buffers_0;
+ (* async_reg = "true" *) reg buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge clk) begin
+ if(reset) begin
+ buffers_0 <= 1'b0;
+ buffers_1 <= 1'b0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+`undef IP_UUID
+`undef IP_NAME_CONCAT
+`undef IP_MODULE_NAME
diff --git a/Ti375C529_devkit/ip/gDMA/gDMA_define.vh b/Ti375C529_devkit/ip/gDMA/gDMA_define.vh
new file mode 100644
index 0000000..9ddbd8e
--- /dev/null
+++ b/Ti375C529_devkit/ip/gDMA/gDMA_define.vh
@@ -0,0 +1,45 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 6.4.2
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
diff --git a/Ti375C529_devkit/ip/gDMA/gDMA_tmpl.v b/Ti375C529_devkit/ip/gDMA/gDMA_tmpl.v
new file mode 100644
index 0000000..a24f50a
--- /dev/null
+++ b/Ti375C529_devkit/ip/gDMA/gDMA_tmpl.v
@@ -0,0 +1,114 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 6.4.2
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+gDMA u_gDMA
+(
+ .clk ( clk ),
+ .ctrl_reset ( ctrl_reset ),
+ .reset ( reset ),
+ .ctrl_clk ( ctrl_clk ),
+ .ctrl_PADDR ( ctrl_PADDR ),
+ .ctrl_PREADY ( ctrl_PREADY ),
+ .ctrl_PENABLE ( ctrl_PENABLE ),
+ .ctrl_PSEL ( ctrl_PSEL ),
+ .ctrl_PWRITE ( ctrl_PWRITE ),
+ .ctrl_PWDATA ( ctrl_PWDATA ),
+ .ctrl_PRDATA ( ctrl_PRDATA ),
+ .ctrl_PSLVERROR ( ctrl_PSLVERROR ),
+ .ctrl_interrupts ( ctrl_interrupts ),
+ .read_arvalid ( read_arvalid ),
+ .read_araddr ( read_araddr ),
+ .read_arready ( read_arready ),
+ .read_arregion ( read_arregion ),
+ .read_arlen ( read_arlen ),
+ .read_arsize ( read_arsize ),
+ .read_arburst ( read_arburst ),
+ .read_arlock ( read_arlock ),
+ .read_arcache ( read_arcache ),
+ .read_arqos ( read_arqos ),
+ .read_arprot ( read_arprot ),
+ .read_rready ( read_rready ),
+ .read_rvalid ( read_rvalid ),
+ .read_rdata ( read_rdata ),
+ .read_rlast ( read_rlast ),
+ .write_awvalid ( write_awvalid ),
+ .write_awready ( write_awready ),
+ .write_awaddr ( write_awaddr ),
+ .write_awregion ( write_awregion ),
+ .write_awlen ( write_awlen ),
+ .write_awsize ( write_awsize ),
+ .write_awburst ( write_awburst ),
+ .write_awlock ( write_awlock ),
+ .write_awcache ( write_awcache ),
+ .write_awqos ( write_awqos ),
+ .write_awprot ( write_awprot ),
+ .write_wvalid ( write_wvalid ),
+ .write_wready ( write_wready ),
+ .write_wdata ( write_wdata ),
+ .write_wstrb ( write_wstrb ),
+ .write_wlast ( write_wlast ),
+ .write_bvalid ( write_bvalid ),
+ .write_bready ( write_bready ),
+ .write_bresp ( write_bresp ),
+ .dat1_o_tvalid ( dat1_o_tvalid ),
+ .dat1_o_tready ( dat1_o_tready ),
+ .dat1_o_tdata ( dat1_o_tdata ),
+ .dat1_o_tkeep ( dat1_o_tkeep ),
+ .dat1_o_tdest ( dat1_o_tdest ),
+ .dat1_o_tlast ( dat1_o_tlast ),
+ .io_0_descriptorUpdate ( io_0_descriptorUpdate ),
+ .dat1_o_clk ( dat1_o_clk ),
+ .dat1_o_reset ( dat1_o_reset ),
+ .dat0_i_clk ( dat0_i_clk ),
+ .dat0_i_reset ( dat0_i_reset ),
+ .dat0_i_tvalid ( dat0_i_tvalid ),
+ .dat0_i_tready ( dat0_i_tready ),
+ .dat0_i_tdata ( dat0_i_tdata ),
+ .dat0_i_tkeep ( dat0_i_tkeep ),
+ .dat0_i_tdest ( dat0_i_tdest ),
+ .dat0_i_tlast ( dat0_i_tlast ),
+ .read_rresp ( read_rresp ),
+ .io_1_descriptorUpdate ( io_1_descriptorUpdate )
+);
diff --git a/Ti375C529_devkit/ip/gDMA/gDMA_tmpl.vhd b/Ti375C529_devkit/ip/gDMA/gDMA_tmpl.vhd
new file mode 100644
index 0000000..3f0c81e
--- /dev/null
+++ b/Ti375C529_devkit/ip/gDMA/gDMA_tmpl.vhd
@@ -0,0 +1,183 @@
+--------------------------------------------------------------------------------
+-- Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+--
+-- This document contains proprietary information which is
+-- protected by copyright. All rights are reserved. This notice
+-- refers to original work by Efinix, Inc. which may be derivitive
+-- of other work distributed under license of the authors. In the
+-- case of derivative work, nothing in this notice overrides the
+-- original author's license agreement. Where applicable, the
+-- original license agreement is included in it's original
+-- unmodified form immediately below this header.
+--
+-- WARRANTY DISCLAIMER.
+-- THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+-- EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+-- RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+-- INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+-- MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+-- PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+-- WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+--
+-- LIMITATION OF LIABILITY.
+-- NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+-- INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+-- MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+-- OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+-- SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+-- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+-- GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+-- MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+-- THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+-- (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+-- BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+-- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+-- CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+-- APPLY TO LICENSEE.
+--
+--------------------------------------------------------------------------------
+------------- Begin Cut here for COMPONENT Declaration ------
+component gDMA is
+port (
+ clk : in std_logic;
+ ctrl_reset : in std_logic;
+ reset : in std_logic;
+ ctrl_clk : in std_logic;
+ ctrl_PADDR : in std_logic_vector(13 downto 0);
+ ctrl_PREADY : out std_logic;
+ ctrl_PENABLE : in std_logic;
+ ctrl_PSEL : in std_logic;
+ ctrl_PWRITE : in std_logic;
+ ctrl_PWDATA : in std_logic_vector(31 downto 0);
+ ctrl_PRDATA : out std_logic_vector(31 downto 0);
+ ctrl_PSLVERROR : out std_logic;
+ ctrl_interrupts : out std_logic_vector(1 downto 0);
+ read_arvalid : out std_logic;
+ read_araddr : out std_logic_vector(31 downto 0);
+ read_arready : in std_logic;
+ read_arregion : out std_logic_vector(3 downto 0);
+ read_arlen : out std_logic_vector(7 downto 0);
+ read_arsize : out std_logic_vector(2 downto 0);
+ read_arburst : out std_logic_vector(1 downto 0);
+ read_arlock : out std_logic;
+ read_arcache : out std_logic_vector(3 downto 0);
+ read_arqos : out std_logic_vector(3 downto 0);
+ read_arprot : out std_logic_vector(2 downto 0);
+ read_rready : out std_logic;
+ read_rvalid : in std_logic;
+ read_rdata : in std_logic_vector(127 downto 0);
+ read_rlast : in std_logic;
+ write_awvalid : out std_logic;
+ write_awready : in std_logic;
+ write_awaddr : out std_logic_vector(31 downto 0);
+ write_awregion : out std_logic_vector(3 downto 0);
+ write_awlen : out std_logic_vector(7 downto 0);
+ write_awsize : out std_logic_vector(2 downto 0);
+ write_awburst : out std_logic_vector(1 downto 0);
+ write_awlock : out std_logic;
+ write_awcache : out std_logic_vector(3 downto 0);
+ write_awqos : out std_logic_vector(3 downto 0);
+ write_awprot : out std_logic_vector(2 downto 0);
+ write_wvalid : out std_logic;
+ write_wready : in std_logic;
+ write_wdata : out std_logic_vector(127 downto 0);
+ write_wstrb : out std_logic_vector(15 downto 0);
+ write_wlast : out std_logic;
+ write_bvalid : in std_logic;
+ write_bready : out std_logic;
+ write_bresp : in std_logic_vector(1 downto 0);
+ dat1_o_tvalid : out std_logic;
+ dat1_o_tready : in std_logic;
+ dat1_o_tdata : out std_logic_vector(7 downto 0);
+ dat1_o_tkeep : out std_logic_vector(0 to 0);
+ dat1_o_tdest : out std_logic_vector(3 downto 0);
+ dat1_o_tlast : out std_logic;
+ io_0_descriptorUpdate : out std_logic;
+ dat1_o_clk : in std_logic;
+ dat1_o_reset : in std_logic;
+ dat0_i_clk : in std_logic;
+ dat0_i_reset : in std_logic;
+ dat0_i_tvalid : in std_logic;
+ dat0_i_tready : out std_logic;
+ dat0_i_tdata : in std_logic_vector(7 downto 0);
+ dat0_i_tkeep : in std_logic_vector(0 to 0);
+ dat0_i_tdest : in std_logic_vector(3 downto 0);
+ dat0_i_tlast : in std_logic;
+ read_rresp : in std_logic_vector(1 downto 0);
+ io_1_descriptorUpdate : out std_logic
+);
+end component gDMA;
+
+---------------------- End COMPONENT Declaration ------------
+------------- Begin Cut here for INSTANTIATION Template -----
+u_gDMA : gDMA
+port map (
+ clk => clk,
+ ctrl_reset => ctrl_reset,
+ reset => reset,
+ ctrl_clk => ctrl_clk,
+ ctrl_PADDR => ctrl_PADDR,
+ ctrl_PREADY => ctrl_PREADY,
+ ctrl_PENABLE => ctrl_PENABLE,
+ ctrl_PSEL => ctrl_PSEL,
+ ctrl_PWRITE => ctrl_PWRITE,
+ ctrl_PWDATA => ctrl_PWDATA,
+ ctrl_PRDATA => ctrl_PRDATA,
+ ctrl_PSLVERROR => ctrl_PSLVERROR,
+ ctrl_interrupts => ctrl_interrupts,
+ read_arvalid => read_arvalid,
+ read_araddr => read_araddr,
+ read_arready => read_arready,
+ read_arregion => read_arregion,
+ read_arlen => read_arlen,
+ read_arsize => read_arsize,
+ read_arburst => read_arburst,
+ read_arlock => read_arlock,
+ read_arcache => read_arcache,
+ read_arqos => read_arqos,
+ read_arprot => read_arprot,
+ read_rready => read_rready,
+ read_rvalid => read_rvalid,
+ read_rdata => read_rdata,
+ read_rlast => read_rlast,
+ write_awvalid => write_awvalid,
+ write_awready => write_awready,
+ write_awaddr => write_awaddr,
+ write_awregion => write_awregion,
+ write_awlen => write_awlen,
+ write_awsize => write_awsize,
+ write_awburst => write_awburst,
+ write_awlock => write_awlock,
+ write_awcache => write_awcache,
+ write_awqos => write_awqos,
+ write_awprot => write_awprot,
+ write_wvalid => write_wvalid,
+ write_wready => write_wready,
+ write_wdata => write_wdata,
+ write_wstrb => write_wstrb,
+ write_wlast => write_wlast,
+ write_bvalid => write_bvalid,
+ write_bready => write_bready,
+ write_bresp => write_bresp,
+ dat1_o_tvalid => dat1_o_tvalid,
+ dat1_o_tready => dat1_o_tready,
+ dat1_o_tdata => dat1_o_tdata,
+ dat1_o_tkeep => dat1_o_tkeep,
+ dat1_o_tdest => dat1_o_tdest,
+ dat1_o_tlast => dat1_o_tlast,
+ io_0_descriptorUpdate => io_0_descriptorUpdate,
+ dat1_o_clk => dat1_o_clk,
+ dat1_o_reset => dat1_o_reset,
+ dat0_i_clk => dat0_i_clk,
+ dat0_i_reset => dat0_i_reset,
+ dat0_i_tvalid => dat0_i_tvalid,
+ dat0_i_tready => dat0_i_tready,
+ dat0_i_tdata => dat0_i_tdata,
+ dat0_i_tkeep => dat0_i_tkeep,
+ dat0_i_tdest => dat0_i_tdest,
+ dat0_i_tlast => dat0_i_tlast,
+ read_rresp => read_rresp,
+ io_1_descriptorUpdate => io_1_descriptorUpdate
+);
+
+------------------------ End INSTANTIATION Template ---------
diff --git a/Ti375C529_devkit/ip/gDMA/ipm/component.pickle b/Ti375C529_devkit/ip/gDMA/ipm/component.pickle
new file mode 100644
index 0000000..d3113f8
Binary files /dev/null and b/Ti375C529_devkit/ip/gDMA/ipm/component.pickle differ
diff --git a/Ti375C529_devkit/ip/gDMA/ipm/graph.pickle b/Ti375C529_devkit/ip/gDMA/ipm/graph.pickle
new file mode 100644
index 0000000..5031dee
Binary files /dev/null and b/Ti375C529_devkit/ip/gDMA/ipm/graph.pickle differ
diff --git a/Ti375C529_devkit/ip/gDMA/settings.json b/Ti375C529_devkit/ip/gDMA/settings.json
new file mode 100644
index 0000000..7d11253
--- /dev/null
+++ b/Ti375C529_devkit/ip/gDMA/settings.json
@@ -0,0 +1,126 @@
+{
+ "args": [
+ "-o",
+ "gDMA",
+ "--base_path",
+ "/projects/SSE/llching/repo/efx_IP_master/efx_IP/efx_hard_soc/fpga/Ti375C529_devkit/ip",
+ "--vlnv",
+ {
+ "vendor": "efinixinc.com",
+ "library": "bridges_and_adaptors",
+ "name": "efx_dma",
+ "version": "6.4.2"
+ }
+ ],
+ "conf": {
+ "PriorityEncode": "1'b0",
+ "WrQueue": "1'b0",
+ "CTRL_ASYNC_MODE": "1'b1",
+ "EfinixDDR": "1'b0",
+ "RdQueue": "1'b0",
+ "BufferWidth": "64",
+ "BufferWords": "512",
+ "MemExtWidth": "128",
+ "CH0_SGMode": "1'b1",
+ "CH0_Output": "1'b0",
+ "CH0_Input": "1'b1",
+ "CH4_Input": "1'b1",
+ "CH4_Width": "32",
+ "CH4_Output": "1'b1",
+ "CH4_SGMode": "1'b0",
+ "CH4_SR": "1'b0",
+ "CH5_BurstSize": "64",
+ "CH5_BufferSize": "1024",
+ "CH5_SR": "1'b0",
+ "CH6_Output": "1'b1",
+ "CH6_SGMode": "1'b0",
+ "CH6_SR": "1'b0",
+ "CH7_Output": "1'b1",
+ "CH7_SGMode": "1'b0",
+ "CH7_SR": "1'b0",
+ "CH7_Input": "1'b1",
+ "CH7_Width": "32",
+ "CH7_BurstSize": "64",
+ "CH7_BufferSize": "1024",
+ "CH6_Width": "32",
+ "CH6_Input": "1'b1",
+ "CH6_BurstSize": "64",
+ "CH6_BufferSize": "1024",
+ "CH5_Width": "32",
+ "CH5_Output": "1'b1",
+ "CH5_SGMode": "1'b0",
+ "CH5_Input": "1'b1",
+ "CH4_BurstSize": "64",
+ "CH4_BufferSize": "1024",
+ "CH3_SR": "1'b0",
+ "CH3_SGMode": "1'b0",
+ "CH3_Output": "1'b1",
+ "CH3_Width": "32",
+ "CH3_Input": "1'b1",
+ "CH3_BufferSize": "1024",
+ "CH3_BurstSize": "64",
+ "BufferCount": "2",
+ "CH0_Enable": "1'b1",
+ "CH1_Enable": "1'b1",
+ "CH1_AsyncMode": "1'b1",
+ "CH6_AsyncMode": "1'b0",
+ "CH5_AsyncMode": "1'b0",
+ "CH7_AsyncMode": "1'b0",
+ "CH0_AsyncMode": "1'b1",
+ "CH3_AsyncMode": "1'b0",
+ "CH2_AsyncMode": "1'b0",
+ "CH4_AsyncMode": "1'b0",
+ "CH0_BufferSize": "4096",
+ "CH0_BurstSize": "1024",
+ "CH0_SR": "1'b0",
+ "CH0_Width": "8",
+ "CH1_Input": "1'b0",
+ "CH1_Width": "8",
+ "CH1_Output": "1'b1",
+ "CH1_SGMode": "1'b1",
+ "CH1_SR": "1'b0",
+ "CH2_BufferSize": "1024",
+ "CH2_BurstSize": "64",
+ "CH2_Width": "32",
+ "CH2_SR": "1'b0",
+ "CH2_SGMode": "1'b0",
+ "CH2_Output": "1'b1",
+ "CH2_Input": "1'b1",
+ "CH1_BufferSize": "4096",
+ "CH1_BurstSize": "1024",
+ "CH2_Enable_user": "1'b0",
+ "CH2_Enable_default": "1'b0",
+ "CH3_Enable_default": "1'b0",
+ "CH3_Enable_user": "1'b0",
+ "CH4_Enable_default": "1'b0",
+ "CH4_Enable_user": "1'b0",
+ "CH5_Enable_user": "1'b0",
+ "CH5_Enable_default": "1'b0",
+ "CH6_Enable_user": "1'b0",
+ "CH6_Enable_default": "1'b0",
+ "CH7_Enable_user": "1'b0",
+ "CH7_Enable_default": "1'b0",
+ "CustomSGBus": "1'b0",
+ "CH0_MemMode": "1'b0",
+ "CH1_MemMode": "1'b0",
+ "CH2_MemMode": "1'b0",
+ "CH3_MemMode": "1'b0",
+ "CH4_MemMode": "1'b0",
+ "CH5_MemMode": "1'b0",
+ "CH6_MemMode": "1'b0",
+ "CH7_MemMode": "1'b0"
+ },
+ "output": {
+ "external_script_generator": [],
+ "external_source_source": [
+ "gDMA/gDMA_define.vh",
+ "gDMA/gDMA.v",
+ "gDMA/gDMA_tmpl.v",
+ "gDMA/gDMA_tmpl.vhd"
+ ],
+ "external_script_script": []
+ },
+ "ooc_synthesis": {},
+ "sw_version": "2025.2.272",
+ "generated_date": "2025-10-16T09:35:15.778966+00:00"
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gDMA/source/EfxDMA.v b/Ti375C529_devkit/ip/gDMA/source/EfxDMA.v
new file mode 100644
index 0000000..c77644c
--- /dev/null
+++ b/Ti375C529_devkit/ip/gDMA/source/EfxDMA.v
@@ -0,0 +1,11449 @@
+// Generator : SpinalHDL dev git head : a69f4b9a329be784802c37cd8038b7dc9aec3094
+// Component : EfxDMA
+
+`timescale 1ns/1ps
+
+module EfxDMA (
+ input wire [13:0] ctrl_PADDR,
+ input wire [0:0] ctrl_PSEL,
+ input wire ctrl_PENABLE,
+ output wire ctrl_PREADY,
+ input wire ctrl_PWRITE,
+ input wire [31:0] ctrl_PWDATA,
+ output wire [31:0] ctrl_PRDATA,
+ output wire ctrl_PSLVERROR,
+ output wire [1:0] ctrl_interrupts,
+ output wire read_arvalid,
+ input wire read_arready,
+ output wire [31:0] read_araddr,
+ output wire [3:0] read_arregion,
+ output wire [7:0] read_arlen,
+ output wire [2:0] read_arsize,
+ output wire [1:0] read_arburst,
+ output wire [0:0] read_arlock,
+ output wire [3:0] read_arcache,
+ output wire [3:0] read_arqos,
+ output wire [2:0] read_arprot,
+ input wire read_rvalid,
+ output wire read_rready,
+ input wire [127:0] read_rdata,
+ input wire [1:0] read_rresp,
+ input wire read_rlast,
+ output wire write_awvalid,
+ input wire write_awready,
+ output wire [31:0] write_awaddr,
+ output wire [3:0] write_awregion,
+ output wire [7:0] write_awlen,
+ output wire [2:0] write_awsize,
+ output wire [1:0] write_awburst,
+ output wire [0:0] write_awlock,
+ output wire [3:0] write_awcache,
+ output wire [3:0] write_awqos,
+ output wire [2:0] write_awprot,
+ output wire write_wvalid,
+ input wire write_wready,
+ output wire [127:0] write_wdata,
+ output wire [15:0] write_wstrb,
+ output wire write_wlast,
+ input wire write_bvalid,
+ output wire write_bready,
+ input wire [1:0] write_bresp,
+ input wire dat0_i_tvalid,
+ output wire dat0_i_tready,
+ input wire [7:0] dat0_i_tdata,
+ input wire [0:0] dat0_i_tkeep,
+ input wire [3:0] dat0_i_tdest,
+ input wire dat0_i_tlast,
+ output wire dat1_o_tvalid,
+ input wire dat1_o_tready,
+ output wire [7:0] dat1_o_tdata,
+ output wire [0:0] dat1_o_tkeep,
+ output wire [3:0] dat1_o_tdest,
+ output wire dat1_o_tlast,
+ output wire io_0_descriptorUpdate,
+ output wire io_1_descriptorUpdate,
+ input wire clk,
+ input wire reset,
+ input wire ctrl_clk,
+ input wire ctrl_reset,
+ input wire dat0_i_clk,
+ input wire dat0_i_reset,
+ input wire dat1_o_clk,
+ input wire dat1_o_reset
+);
+
+ wire core_io_sgRead_cmd_valid;
+ wire core_io_sgRead_cmd_payload_last;
+ wire [0:0] core_io_sgRead_cmd_payload_fragment_opcode;
+ wire [31:0] core_io_sgRead_cmd_payload_fragment_address;
+ wire [4:0] core_io_sgRead_cmd_payload_fragment_length;
+ wire [0:0] core_io_sgRead_cmd_payload_fragment_context;
+ wire core_io_sgRead_rsp_ready;
+ wire core_io_sgWrite_cmd_valid;
+ wire core_io_sgWrite_cmd_payload_last;
+ wire [0:0] core_io_sgWrite_cmd_payload_fragment_opcode;
+ wire [31:0] core_io_sgWrite_cmd_payload_fragment_address;
+ wire [1:0] core_io_sgWrite_cmd_payload_fragment_length;
+ wire [127:0] core_io_sgWrite_cmd_payload_fragment_data;
+ wire [15:0] core_io_sgWrite_cmd_payload_fragment_mask;
+ wire [0:0] core_io_sgWrite_cmd_payload_fragment_context;
+ wire core_io_sgWrite_rsp_ready;
+ wire core_io_read_cmd_valid;
+ wire core_io_read_cmd_payload_last;
+ wire [0:0] core_io_read_cmd_payload_fragment_opcode;
+ wire [31:0] core_io_read_cmd_payload_fragment_address;
+ wire [11:0] core_io_read_cmd_payload_fragment_length;
+ wire [20:0] core_io_read_cmd_payload_fragment_context;
+ wire core_io_read_rsp_ready;
+ wire core_io_write_cmd_valid;
+ wire core_io_write_cmd_payload_last;
+ wire [0:0] core_io_write_cmd_payload_fragment_opcode;
+ wire [31:0] core_io_write_cmd_payload_fragment_address;
+ wire [11:0] core_io_write_cmd_payload_fragment_length;
+ wire [127:0] core_io_write_cmd_payload_fragment_data;
+ wire [15:0] core_io_write_cmd_payload_fragment_mask;
+ wire [12:0] core_io_write_cmd_payload_fragment_context;
+ wire core_io_write_rsp_ready;
+ wire core_io_outputs_0_valid;
+ wire [63:0] core_io_outputs_0_payload_data;
+ wire [7:0] core_io_outputs_0_payload_mask;
+ wire [3:0] core_io_outputs_0_payload_sink;
+ wire core_io_outputs_0_payload_last;
+ wire core_io_inputs_0_ready;
+ wire [1:0] core_io_interrupts;
+ wire core_io_ctrl_PREADY;
+ wire [31:0] core_io_ctrl_PRDATA;
+ wire core_io_ctrl_PSLVERROR;
+ wire core_ll_0_descriptorUpdate;
+ wire core_ll_1_descriptorUpdate;
+ wire withCtrlCc_apbCc_io_input_PREADY;
+ wire [31:0] withCtrlCc_apbCc_io_input_PRDATA;
+ wire withCtrlCc_apbCc_io_input_PSLVERROR;
+ wire [13:0] withCtrlCc_apbCc_io_output_PADDR;
+ wire [0:0] withCtrlCc_apbCc_io_output_PSEL;
+ wire withCtrlCc_apbCc_io_output_PENABLE;
+ wire withCtrlCc_apbCc_io_output_PWRITE;
+ wire [31:0] withCtrlCc_apbCc_io_output_PWDATA;
+ wire [1:0] io_interrupts_buffercc_io_dataOut;
+ wire readLogic_sourceRemover_io_input_cmd_ready;
+ wire readLogic_sourceRemover_io_input_rsp_valid;
+ wire readLogic_sourceRemover_io_input_rsp_payload_last;
+ wire [0:0] readLogic_sourceRemover_io_input_rsp_payload_fragment_source;
+ wire [0:0] readLogic_sourceRemover_io_input_rsp_payload_fragment_opcode;
+ wire [127:0] readLogic_sourceRemover_io_input_rsp_payload_fragment_data;
+ wire [20:0] readLogic_sourceRemover_io_input_rsp_payload_fragment_context;
+ wire readLogic_sourceRemover_io_output_cmd_valid;
+ wire readLogic_sourceRemover_io_output_cmd_payload_last;
+ wire [0:0] readLogic_sourceRemover_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] readLogic_sourceRemover_io_output_cmd_payload_fragment_address;
+ wire [11:0] readLogic_sourceRemover_io_output_cmd_payload_fragment_length;
+ wire [21:0] readLogic_sourceRemover_io_output_cmd_payload_fragment_context;
+ wire readLogic_sourceRemover_io_output_rsp_ready;
+ wire readLogic_bridge_io_input_cmd_ready;
+ wire readLogic_bridge_io_input_rsp_valid;
+ wire readLogic_bridge_io_input_rsp_payload_last;
+ wire [0:0] readLogic_bridge_io_input_rsp_payload_fragment_opcode;
+ wire [127:0] readLogic_bridge_io_input_rsp_payload_fragment_data;
+ wire [21:0] readLogic_bridge_io_input_rsp_payload_fragment_context;
+ wire readLogic_bridge_io_output_ar_valid;
+ wire [31:0] readLogic_bridge_io_output_ar_payload_addr;
+ wire [7:0] readLogic_bridge_io_output_ar_payload_len;
+ wire [2:0] readLogic_bridge_io_output_ar_payload_size;
+ wire [3:0] readLogic_bridge_io_output_ar_payload_cache;
+ wire [2:0] readLogic_bridge_io_output_ar_payload_prot;
+ wire readLogic_bridge_io_output_r_ready;
+ wire writeLogic_sourceRemover_io_input_cmd_ready;
+ wire writeLogic_sourceRemover_io_input_rsp_valid;
+ wire writeLogic_sourceRemover_io_input_rsp_payload_last;
+ wire [0:0] writeLogic_sourceRemover_io_input_rsp_payload_fragment_source;
+ wire [0:0] writeLogic_sourceRemover_io_input_rsp_payload_fragment_opcode;
+ wire [12:0] writeLogic_sourceRemover_io_input_rsp_payload_fragment_context;
+ wire writeLogic_sourceRemover_io_output_cmd_valid;
+ wire writeLogic_sourceRemover_io_output_cmd_payload_last;
+ wire [0:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_address;
+ wire [11:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_length;
+ wire [127:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_data;
+ wire [15:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_mask;
+ wire [13:0] writeLogic_sourceRemover_io_output_cmd_payload_fragment_context;
+ wire writeLogic_sourceRemover_io_output_rsp_ready;
+ wire writeLogic_bridge_io_input_cmd_ready;
+ wire writeLogic_bridge_io_input_rsp_valid;
+ wire writeLogic_bridge_io_input_rsp_payload_last;
+ wire [0:0] writeLogic_bridge_io_input_rsp_payload_fragment_opcode;
+ wire [13:0] writeLogic_bridge_io_input_rsp_payload_fragment_context;
+ wire writeLogic_bridge_io_output_aw_valid;
+ wire [31:0] writeLogic_bridge_io_output_aw_payload_addr;
+ wire [7:0] writeLogic_bridge_io_output_aw_payload_len;
+ wire [2:0] writeLogic_bridge_io_output_aw_payload_size;
+ wire [3:0] writeLogic_bridge_io_output_aw_payload_cache;
+ wire [2:0] writeLogic_bridge_io_output_aw_payload_prot;
+ wire writeLogic_bridge_io_output_w_valid;
+ wire [127:0] writeLogic_bridge_io_output_w_payload_data;
+ wire [15:0] writeLogic_bridge_io_output_w_payload_strb;
+ wire writeLogic_bridge_io_output_w_payload_last;
+ wire writeLogic_bridge_io_output_b_ready;
+ wire inputsAdapter_0_upsizer_logic_io_input_ready;
+ wire inputsAdapter_0_upsizer_logic_io_output_valid;
+ wire [63:0] inputsAdapter_0_upsizer_logic_io_output_payload_data;
+ wire [7:0] inputsAdapter_0_upsizer_logic_io_output_payload_mask;
+ wire [3:0] inputsAdapter_0_upsizer_logic_io_output_payload_sink;
+ wire inputsAdapter_0_upsizer_logic_io_output_payload_last;
+ wire inputsAdapter_0_crossclock_fifo_io_push_ready;
+ wire inputsAdapter_0_crossclock_fifo_io_pop_valid;
+ wire [63:0] inputsAdapter_0_crossclock_fifo_io_pop_payload_data;
+ wire [7:0] inputsAdapter_0_crossclock_fifo_io_pop_payload_mask;
+ wire [3:0] inputsAdapter_0_crossclock_fifo_io_pop_payload_sink;
+ wire inputsAdapter_0_crossclock_fifo_io_pop_payload_last;
+ wire [4:0] inputsAdapter_0_crossclock_fifo_io_pushOccupancy;
+ wire [4:0] inputsAdapter_0_crossclock_fifo_io_popOccupancy;
+ wire outputsAdapter_0_crossclock_fifo_io_push_ready;
+ wire outputsAdapter_0_crossclock_fifo_io_pop_valid;
+ wire [63:0] outputsAdapter_0_crossclock_fifo_io_pop_payload_data;
+ wire [7:0] outputsAdapter_0_crossclock_fifo_io_pop_payload_mask;
+ wire [3:0] outputsAdapter_0_crossclock_fifo_io_pop_payload_sink;
+ wire outputsAdapter_0_crossclock_fifo_io_pop_payload_last;
+ wire [4:0] outputsAdapter_0_crossclock_fifo_io_pushOccupancy;
+ wire [4:0] outputsAdapter_0_crossclock_fifo_io_popOccupancy;
+ wire outputsAdapter_0_sparseDownsizer_logic_io_input_ready;
+ wire outputsAdapter_0_sparseDownsizer_logic_io_output_valid;
+ wire [7:0] outputsAdapter_0_sparseDownsizer_logic_io_output_payload_data;
+ wire [0:0] outputsAdapter_0_sparseDownsizer_logic_io_output_payload_mask;
+ wire [3:0] outputsAdapter_0_sparseDownsizer_logic_io_output_payload_sink;
+ wire outputsAdapter_0_sparseDownsizer_logic_io_output_payload_last;
+ wire interconnect_read_aggregated_arbiter_io_inputs_0_cmd_ready;
+ wire interconnect_read_aggregated_arbiter_io_inputs_0_rsp_valid;
+ wire interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_last;
+ wire [0:0] interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode;
+ wire [127:0] interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_data;
+ wire [0:0] interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context;
+ wire interconnect_read_aggregated_arbiter_io_inputs_1_cmd_ready;
+ wire interconnect_read_aggregated_arbiter_io_inputs_1_rsp_valid;
+ wire interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_last;
+ wire [0:0] interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode;
+ wire [127:0] interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_data;
+ wire [20:0] interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context;
+ wire interconnect_read_aggregated_arbiter_io_output_cmd_valid;
+ wire interconnect_read_aggregated_arbiter_io_output_cmd_payload_last;
+ wire [0:0] interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_source;
+ wire [0:0] interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_address;
+ wire [11:0] interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_length;
+ wire [20:0] interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_context;
+ wire interconnect_read_aggregated_arbiter_io_output_rsp_ready;
+ wire interconnect_write_aggregated_arbiter_io_inputs_0_cmd_ready;
+ wire interconnect_write_aggregated_arbiter_io_inputs_0_rsp_valid;
+ wire interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_last;
+ wire [0:0] interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode;
+ wire [0:0] interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context;
+ wire interconnect_write_aggregated_arbiter_io_inputs_1_cmd_ready;
+ wire interconnect_write_aggregated_arbiter_io_inputs_1_rsp_valid;
+ wire interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_last;
+ wire [0:0] interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode;
+ wire [12:0] interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context;
+ wire interconnect_write_aggregated_arbiter_io_output_cmd_valid;
+ wire interconnect_write_aggregated_arbiter_io_output_cmd_payload_last;
+ wire [0:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_source;
+ wire [0:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_address;
+ wire [11:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_length;
+ wire [127:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_data;
+ wire [15:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_mask;
+ wire [12:0] interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_context;
+ wire interconnect_write_aggregated_arbiter_io_output_rsp_ready;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address;
+ wire [11:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length;
+ wire [20:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode;
+ wire [127:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_data;
+ wire [20:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address;
+ wire [4:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready;
+ wire interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode;
+ wire [127:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_data;
+ wire [0:0] interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address;
+ wire [11:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length;
+ wire [127:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_data;
+ wire [15:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_mask;
+ wire [12:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode;
+ wire [12:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context;
+ wire io_write_cmd_s2mPipe_valid;
+ reg io_write_cmd_s2mPipe_ready;
+ wire io_write_cmd_s2mPipe_payload_last;
+ wire [0:0] io_write_cmd_s2mPipe_payload_fragment_opcode;
+ wire [31:0] io_write_cmd_s2mPipe_payload_fragment_address;
+ wire [11:0] io_write_cmd_s2mPipe_payload_fragment_length;
+ wire [127:0] io_write_cmd_s2mPipe_payload_fragment_data;
+ wire [15:0] io_write_cmd_s2mPipe_payload_fragment_mask;
+ wire [12:0] io_write_cmd_s2mPipe_payload_fragment_context;
+ reg io_write_cmd_rValidN;
+ reg io_write_cmd_rData_last;
+ reg [0:0] io_write_cmd_rData_fragment_opcode;
+ reg [31:0] io_write_cmd_rData_fragment_address;
+ reg [11:0] io_write_cmd_rData_fragment_length;
+ reg [127:0] io_write_cmd_rData_fragment_data;
+ reg [15:0] io_write_cmd_rData_fragment_mask;
+ reg [12:0] io_write_cmd_rData_fragment_context;
+ wire io_write_cmd_s2mPipe_m2sPipe_valid;
+ wire io_write_cmd_s2mPipe_m2sPipe_ready;
+ wire io_write_cmd_s2mPipe_m2sPipe_payload_last;
+ wire [0:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_opcode;
+ wire [31:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_address;
+ wire [11:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_length;
+ wire [127:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_data;
+ wire [15:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_mask;
+ wire [12:0] io_write_cmd_s2mPipe_m2sPipe_payload_fragment_context;
+ reg io_write_cmd_s2mPipe_rValid;
+ reg io_write_cmd_s2mPipe_rData_last;
+ reg [0:0] io_write_cmd_s2mPipe_rData_fragment_opcode;
+ reg [31:0] io_write_cmd_s2mPipe_rData_fragment_address;
+ reg [11:0] io_write_cmd_s2mPipe_rData_fragment_length;
+ reg [127:0] io_write_cmd_s2mPipe_rData_fragment_data;
+ reg [15:0] io_write_cmd_s2mPipe_rData_fragment_mask;
+ reg [12:0] io_write_cmd_s2mPipe_rData_fragment_context;
+ wire when_Stream_l375;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address;
+ wire [1:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length;
+ wire [127:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_data;
+ wire [15:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_mask;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready;
+ wire interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode;
+ wire [0:0] interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context;
+ wire interconnect_read_aggregated_cmd_valid;
+ wire interconnect_read_aggregated_cmd_ready;
+ wire interconnect_read_aggregated_cmd_payload_last;
+ wire [0:0] interconnect_read_aggregated_cmd_payload_fragment_source;
+ wire [0:0] interconnect_read_aggregated_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_read_aggregated_cmd_payload_fragment_address;
+ wire [11:0] interconnect_read_aggregated_cmd_payload_fragment_length;
+ wire [20:0] interconnect_read_aggregated_cmd_payload_fragment_context;
+ wire interconnect_read_aggregated_rsp_valid;
+ wire interconnect_read_aggregated_rsp_ready;
+ wire interconnect_read_aggregated_rsp_payload_last;
+ wire [0:0] interconnect_read_aggregated_rsp_payload_fragment_source;
+ wire [0:0] interconnect_read_aggregated_rsp_payload_fragment_opcode;
+ wire [127:0] interconnect_read_aggregated_rsp_payload_fragment_data;
+ wire [20:0] interconnect_read_aggregated_rsp_payload_fragment_context;
+ wire interconnect_write_aggregated_cmd_valid;
+ reg interconnect_write_aggregated_cmd_ready;
+ wire interconnect_write_aggregated_cmd_payload_last;
+ wire [0:0] interconnect_write_aggregated_cmd_payload_fragment_source;
+ wire [0:0] interconnect_write_aggregated_cmd_payload_fragment_opcode;
+ wire [31:0] interconnect_write_aggregated_cmd_payload_fragment_address;
+ wire [11:0] interconnect_write_aggregated_cmd_payload_fragment_length;
+ wire [127:0] interconnect_write_aggregated_cmd_payload_fragment_data;
+ wire [15:0] interconnect_write_aggregated_cmd_payload_fragment_mask;
+ wire [12:0] interconnect_write_aggregated_cmd_payload_fragment_context;
+ wire interconnect_write_aggregated_rsp_valid;
+ wire interconnect_write_aggregated_rsp_ready;
+ wire interconnect_write_aggregated_rsp_payload_last;
+ wire [0:0] interconnect_write_aggregated_rsp_payload_fragment_source;
+ wire [0:0] interconnect_write_aggregated_rsp_payload_fragment_opcode;
+ wire [12:0] interconnect_write_aggregated_rsp_payload_fragment_context;
+ wire readLogic_resized_cmd_valid;
+ wire readLogic_resized_cmd_ready;
+ wire readLogic_resized_cmd_payload_last;
+ wire [0:0] readLogic_resized_cmd_payload_fragment_source;
+ wire [0:0] readLogic_resized_cmd_payload_fragment_opcode;
+ wire [31:0] readLogic_resized_cmd_payload_fragment_address;
+ wire [11:0] readLogic_resized_cmd_payload_fragment_length;
+ wire [20:0] readLogic_resized_cmd_payload_fragment_context;
+ wire readLogic_resized_rsp_valid;
+ wire readLogic_resized_rsp_ready;
+ wire readLogic_resized_rsp_payload_last;
+ wire [0:0] readLogic_resized_rsp_payload_fragment_source;
+ wire [0:0] readLogic_resized_rsp_payload_fragment_opcode;
+ wire [127:0] readLogic_resized_rsp_payload_fragment_data;
+ wire [20:0] readLogic_resized_rsp_payload_fragment_context;
+ wire interconnect_read_aggregated_cmd_halfPipe_valid;
+ wire interconnect_read_aggregated_cmd_halfPipe_ready;
+ wire interconnect_read_aggregated_cmd_halfPipe_payload_last;
+ wire [0:0] interconnect_read_aggregated_cmd_halfPipe_payload_fragment_source;
+ wire [0:0] interconnect_read_aggregated_cmd_halfPipe_payload_fragment_opcode;
+ wire [31:0] interconnect_read_aggregated_cmd_halfPipe_payload_fragment_address;
+ wire [11:0] interconnect_read_aggregated_cmd_halfPipe_payload_fragment_length;
+ wire [20:0] interconnect_read_aggregated_cmd_halfPipe_payload_fragment_context;
+ reg interconnect_read_aggregated_cmd_rValid;
+ wire interconnect_read_aggregated_cmd_halfPipe_fire;
+ reg interconnect_read_aggregated_cmd_rData_last;
+ reg [0:0] interconnect_read_aggregated_cmd_rData_fragment_source;
+ reg [0:0] interconnect_read_aggregated_cmd_rData_fragment_opcode;
+ reg [31:0] interconnect_read_aggregated_cmd_rData_fragment_address;
+ reg [11:0] interconnect_read_aggregated_cmd_rData_fragment_length;
+ reg [20:0] interconnect_read_aggregated_cmd_rData_fragment_context;
+ wire readLogic_resized_rsp_combStage_valid;
+ wire readLogic_resized_rsp_combStage_ready;
+ wire readLogic_resized_rsp_combStage_payload_last;
+ wire [0:0] readLogic_resized_rsp_combStage_payload_fragment_source;
+ wire [0:0] readLogic_resized_rsp_combStage_payload_fragment_opcode;
+ wire [127:0] readLogic_resized_rsp_combStage_payload_fragment_data;
+ wire [20:0] readLogic_resized_rsp_combStage_payload_fragment_context;
+ wire readLogic_adapter_ar_valid;
+ wire readLogic_adapter_ar_ready;
+ wire [31:0] readLogic_adapter_ar_payload_addr;
+ wire [3:0] readLogic_adapter_ar_payload_region;
+ wire [7:0] readLogic_adapter_ar_payload_len;
+ wire [2:0] readLogic_adapter_ar_payload_size;
+ wire [1:0] readLogic_adapter_ar_payload_burst;
+ wire [0:0] readLogic_adapter_ar_payload_lock;
+ wire [3:0] readLogic_adapter_ar_payload_cache;
+ wire [3:0] readLogic_adapter_ar_payload_qos;
+ wire [2:0] readLogic_adapter_ar_payload_prot;
+ wire readLogic_adapter_r_valid;
+ wire readLogic_adapter_r_ready;
+ wire [127:0] readLogic_adapter_r_payload_data;
+ wire [1:0] readLogic_adapter_r_payload_resp;
+ wire readLogic_adapter_r_payload_last;
+ wire [3:0] _zz_readLogic_adapter_ar_payload_region;
+ wire readLogic_adapter_ar_halfPipe_valid;
+ wire readLogic_adapter_ar_halfPipe_ready;
+ wire [31:0] readLogic_adapter_ar_halfPipe_payload_addr;
+ wire [3:0] readLogic_adapter_ar_halfPipe_payload_region;
+ wire [7:0] readLogic_adapter_ar_halfPipe_payload_len;
+ wire [2:0] readLogic_adapter_ar_halfPipe_payload_size;
+ wire [1:0] readLogic_adapter_ar_halfPipe_payload_burst;
+ wire [0:0] readLogic_adapter_ar_halfPipe_payload_lock;
+ wire [3:0] readLogic_adapter_ar_halfPipe_payload_cache;
+ wire [3:0] readLogic_adapter_ar_halfPipe_payload_qos;
+ wire [2:0] readLogic_adapter_ar_halfPipe_payload_prot;
+ reg readLogic_adapter_ar_rValid;
+ wire readLogic_adapter_ar_halfPipe_fire;
+ reg [31:0] readLogic_adapter_ar_rData_addr;
+ reg [3:0] readLogic_adapter_ar_rData_region;
+ reg [7:0] readLogic_adapter_ar_rData_len;
+ reg [2:0] readLogic_adapter_ar_rData_size;
+ reg [1:0] readLogic_adapter_ar_rData_burst;
+ reg [0:0] readLogic_adapter_ar_rData_lock;
+ reg [3:0] readLogic_adapter_ar_rData_cache;
+ reg [3:0] readLogic_adapter_ar_rData_qos;
+ reg [2:0] readLogic_adapter_ar_rData_prot;
+ wire read_r_s2mPipe_valid;
+ reg read_r_s2mPipe_ready;
+ wire [127:0] read_r_s2mPipe_payload_data;
+ wire [1:0] read_r_s2mPipe_payload_resp;
+ wire read_r_s2mPipe_payload_last;
+ reg read_r_rValidN;
+ reg [127:0] read_r_rData_data;
+ reg [1:0] read_r_rData_resp;
+ reg read_r_rData_last;
+ wire readLogic_beforeQueue_valid;
+ wire readLogic_beforeQueue_ready;
+ wire [127:0] readLogic_beforeQueue_payload_data;
+ wire [1:0] readLogic_beforeQueue_payload_resp;
+ wire readLogic_beforeQueue_payload_last;
+ reg read_r_s2mPipe_rValid;
+ reg [127:0] read_r_s2mPipe_rData_data;
+ reg [1:0] read_r_s2mPipe_rData_resp;
+ reg read_r_s2mPipe_rData_last;
+ wire when_Stream_l375_1;
+ wire writeLogic_resized_cmd_valid;
+ wire writeLogic_resized_cmd_ready;
+ wire writeLogic_resized_cmd_payload_last;
+ wire [0:0] writeLogic_resized_cmd_payload_fragment_source;
+ wire [0:0] writeLogic_resized_cmd_payload_fragment_opcode;
+ wire [31:0] writeLogic_resized_cmd_payload_fragment_address;
+ wire [11:0] writeLogic_resized_cmd_payload_fragment_length;
+ wire [127:0] writeLogic_resized_cmd_payload_fragment_data;
+ wire [15:0] writeLogic_resized_cmd_payload_fragment_mask;
+ wire [12:0] writeLogic_resized_cmd_payload_fragment_context;
+ wire writeLogic_resized_rsp_valid;
+ wire writeLogic_resized_rsp_ready;
+ wire writeLogic_resized_rsp_payload_last;
+ wire [0:0] writeLogic_resized_rsp_payload_fragment_source;
+ wire [0:0] writeLogic_resized_rsp_payload_fragment_opcode;
+ wire [12:0] writeLogic_resized_rsp_payload_fragment_context;
+ wire interconnect_write_aggregated_cmd_m2sPipe_valid;
+ wire interconnect_write_aggregated_cmd_m2sPipe_ready;
+ wire interconnect_write_aggregated_cmd_m2sPipe_payload_last;
+ wire [0:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_source;
+ wire [0:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_opcode;
+ wire [31:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_address;
+ wire [11:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_length;
+ wire [127:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_data;
+ wire [15:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_mask;
+ wire [12:0] interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_context;
+ reg interconnect_write_aggregated_cmd_rValid;
+ reg interconnect_write_aggregated_cmd_rData_last;
+ reg [0:0] interconnect_write_aggregated_cmd_rData_fragment_source;
+ reg [0:0] interconnect_write_aggregated_cmd_rData_fragment_opcode;
+ reg [31:0] interconnect_write_aggregated_cmd_rData_fragment_address;
+ reg [11:0] interconnect_write_aggregated_cmd_rData_fragment_length;
+ reg [127:0] interconnect_write_aggregated_cmd_rData_fragment_data;
+ reg [15:0] interconnect_write_aggregated_cmd_rData_fragment_mask;
+ reg [12:0] interconnect_write_aggregated_cmd_rData_fragment_context;
+ wire when_Stream_l375_2;
+ wire writeLogic_resized_rsp_combStage_valid;
+ wire writeLogic_resized_rsp_combStage_ready;
+ wire writeLogic_resized_rsp_combStage_payload_last;
+ wire [0:0] writeLogic_resized_rsp_combStage_payload_fragment_source;
+ wire [0:0] writeLogic_resized_rsp_combStage_payload_fragment_opcode;
+ wire [12:0] writeLogic_resized_rsp_combStage_payload_fragment_context;
+ wire writeLogic_adapter_aw_valid;
+ wire writeLogic_adapter_aw_ready;
+ wire [31:0] writeLogic_adapter_aw_payload_addr;
+ wire [3:0] writeLogic_adapter_aw_payload_region;
+ wire [7:0] writeLogic_adapter_aw_payload_len;
+ wire [2:0] writeLogic_adapter_aw_payload_size;
+ wire [1:0] writeLogic_adapter_aw_payload_burst;
+ wire [0:0] writeLogic_adapter_aw_payload_lock;
+ wire [3:0] writeLogic_adapter_aw_payload_cache;
+ wire [3:0] writeLogic_adapter_aw_payload_qos;
+ wire [2:0] writeLogic_adapter_aw_payload_prot;
+ wire writeLogic_adapter_w_valid;
+ wire writeLogic_adapter_w_ready;
+ wire [127:0] writeLogic_adapter_w_payload_data;
+ wire [15:0] writeLogic_adapter_w_payload_strb;
+ wire writeLogic_adapter_w_payload_last;
+ wire writeLogic_adapter_b_valid;
+ wire writeLogic_adapter_b_ready;
+ wire [1:0] writeLogic_adapter_b_payload_resp;
+ wire [3:0] _zz_writeLogic_adapter_aw_payload_region;
+ wire writeLogic_adapter_aw_halfPipe_valid;
+ wire writeLogic_adapter_aw_halfPipe_ready;
+ wire [31:0] writeLogic_adapter_aw_halfPipe_payload_addr;
+ wire [3:0] writeLogic_adapter_aw_halfPipe_payload_region;
+ wire [7:0] writeLogic_adapter_aw_halfPipe_payload_len;
+ wire [2:0] writeLogic_adapter_aw_halfPipe_payload_size;
+ wire [1:0] writeLogic_adapter_aw_halfPipe_payload_burst;
+ wire [0:0] writeLogic_adapter_aw_halfPipe_payload_lock;
+ wire [3:0] writeLogic_adapter_aw_halfPipe_payload_cache;
+ wire [3:0] writeLogic_adapter_aw_halfPipe_payload_qos;
+ wire [2:0] writeLogic_adapter_aw_halfPipe_payload_prot;
+ reg writeLogic_adapter_aw_rValid;
+ wire writeLogic_adapter_aw_halfPipe_fire;
+ reg [31:0] writeLogic_adapter_aw_rData_addr;
+ reg [3:0] writeLogic_adapter_aw_rData_region;
+ reg [7:0] writeLogic_adapter_aw_rData_len;
+ reg [2:0] writeLogic_adapter_aw_rData_size;
+ reg [1:0] writeLogic_adapter_aw_rData_burst;
+ reg [0:0] writeLogic_adapter_aw_rData_lock;
+ reg [3:0] writeLogic_adapter_aw_rData_cache;
+ reg [3:0] writeLogic_adapter_aw_rData_qos;
+ reg [2:0] writeLogic_adapter_aw_rData_prot;
+ wire writeLogic_adapter_w_s2mPipe_valid;
+ reg writeLogic_adapter_w_s2mPipe_ready;
+ wire [127:0] writeLogic_adapter_w_s2mPipe_payload_data;
+ wire [15:0] writeLogic_adapter_w_s2mPipe_payload_strb;
+ wire writeLogic_adapter_w_s2mPipe_payload_last;
+ reg writeLogic_adapter_w_rValidN;
+ reg [127:0] writeLogic_adapter_w_rData_data;
+ reg [15:0] writeLogic_adapter_w_rData_strb;
+ reg writeLogic_adapter_w_rData_last;
+ wire writeLogic_adapter_w_s2mPipe_m2sPipe_valid;
+ wire writeLogic_adapter_w_s2mPipe_m2sPipe_ready;
+ wire [127:0] writeLogic_adapter_w_s2mPipe_m2sPipe_payload_data;
+ wire [15:0] writeLogic_adapter_w_s2mPipe_m2sPipe_payload_strb;
+ wire writeLogic_adapter_w_s2mPipe_m2sPipe_payload_last;
+ reg writeLogic_adapter_w_s2mPipe_rValid;
+ reg [127:0] writeLogic_adapter_w_s2mPipe_rData_data;
+ reg [15:0] writeLogic_adapter_w_s2mPipe_rData_strb;
+ reg writeLogic_adapter_w_s2mPipe_rData_last;
+ wire when_Stream_l375_3;
+ wire write_b_halfPipe_valid;
+ wire write_b_halfPipe_ready;
+ wire [1:0] write_b_halfPipe_payload_resp;
+ reg write_b_rValid;
+ wire write_b_halfPipe_fire;
+ reg [1:0] write_b_rData_resp;
+ wire io_pop_s2mPipe_valid;
+ reg io_pop_s2mPipe_ready;
+ wire [63:0] io_pop_s2mPipe_payload_data;
+ wire [7:0] io_pop_s2mPipe_payload_mask;
+ wire [3:0] io_pop_s2mPipe_payload_sink;
+ wire io_pop_s2mPipe_payload_last;
+ reg io_pop_rValidN;
+ reg [63:0] io_pop_rData_data;
+ reg [7:0] io_pop_rData_mask;
+ reg [3:0] io_pop_rData_sink;
+ reg io_pop_rData_last;
+ wire io_pop_s2mPipe_m2sPipe_valid;
+ wire io_pop_s2mPipe_m2sPipe_ready;
+ wire [63:0] io_pop_s2mPipe_m2sPipe_payload_data;
+ wire [7:0] io_pop_s2mPipe_m2sPipe_payload_mask;
+ wire [3:0] io_pop_s2mPipe_m2sPipe_payload_sink;
+ wire io_pop_s2mPipe_m2sPipe_payload_last;
+ reg io_pop_s2mPipe_rValid;
+ reg [63:0] io_pop_s2mPipe_rData_data;
+ reg [7:0] io_pop_s2mPipe_rData_mask;
+ reg [3:0] io_pop_s2mPipe_rData_sink;
+ reg io_pop_s2mPipe_rData_last;
+ wire when_Stream_l375_4;
+ wire io_outputs_0_s2mPipe_valid;
+ reg io_outputs_0_s2mPipe_ready;
+ wire [63:0] io_outputs_0_s2mPipe_payload_data;
+ wire [7:0] io_outputs_0_s2mPipe_payload_mask;
+ wire [3:0] io_outputs_0_s2mPipe_payload_sink;
+ wire io_outputs_0_s2mPipe_payload_last;
+ reg io_outputs_0_rValidN;
+ reg [63:0] io_outputs_0_rData_data;
+ reg [7:0] io_outputs_0_rData_mask;
+ reg [3:0] io_outputs_0_rData_sink;
+ reg io_outputs_0_rData_last;
+ wire outputsAdapter_0_ptr_valid;
+ wire outputsAdapter_0_ptr_ready;
+ wire [63:0] outputsAdapter_0_ptr_payload_data;
+ wire [7:0] outputsAdapter_0_ptr_payload_mask;
+ wire [3:0] outputsAdapter_0_ptr_payload_sink;
+ wire outputsAdapter_0_ptr_payload_last;
+ reg io_outputs_0_s2mPipe_rValid;
+ reg [63:0] io_outputs_0_s2mPipe_rData_data;
+ reg [7:0] io_outputs_0_s2mPipe_rData_mask;
+ reg [3:0] io_outputs_0_s2mPipe_rData_sink;
+ reg io_outputs_0_s2mPipe_rData_last;
+ wire when_Stream_l375_5;
+
+ EfxDMA_Core core (
+ .io_sgRead_cmd_valid (core_io_sgRead_cmd_valid ), //o
+ .io_sgRead_cmd_ready (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready ), //i
+ .io_sgRead_cmd_payload_last (core_io_sgRead_cmd_payload_last ), //o
+ .io_sgRead_cmd_payload_fragment_opcode (core_io_sgRead_cmd_payload_fragment_opcode ), //o
+ .io_sgRead_cmd_payload_fragment_address (core_io_sgRead_cmd_payload_fragment_address[31:0] ), //o
+ .io_sgRead_cmd_payload_fragment_length (core_io_sgRead_cmd_payload_fragment_length[4:0] ), //o
+ .io_sgRead_cmd_payload_fragment_context (core_io_sgRead_cmd_payload_fragment_context ), //o
+ .io_sgRead_rsp_valid (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid ), //i
+ .io_sgRead_rsp_ready (core_io_sgRead_rsp_ready ), //o
+ .io_sgRead_rsp_payload_last (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last ), //i
+ .io_sgRead_rsp_payload_fragment_opcode (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode ), //i
+ .io_sgRead_rsp_payload_fragment_data (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_data[127:0] ), //i
+ .io_sgRead_rsp_payload_fragment_context (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context ), //i
+ .io_sgWrite_cmd_valid (core_io_sgWrite_cmd_valid ), //o
+ .io_sgWrite_cmd_ready (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready ), //i
+ .io_sgWrite_cmd_payload_last (core_io_sgWrite_cmd_payload_last ), //o
+ .io_sgWrite_cmd_payload_fragment_opcode (core_io_sgWrite_cmd_payload_fragment_opcode ), //o
+ .io_sgWrite_cmd_payload_fragment_address (core_io_sgWrite_cmd_payload_fragment_address[31:0] ), //o
+ .io_sgWrite_cmd_payload_fragment_length (core_io_sgWrite_cmd_payload_fragment_length[1:0] ), //o
+ .io_sgWrite_cmd_payload_fragment_data (core_io_sgWrite_cmd_payload_fragment_data[127:0] ), //o
+ .io_sgWrite_cmd_payload_fragment_mask (core_io_sgWrite_cmd_payload_fragment_mask[15:0] ), //o
+ .io_sgWrite_cmd_payload_fragment_context (core_io_sgWrite_cmd_payload_fragment_context ), //o
+ .io_sgWrite_rsp_valid (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid ), //i
+ .io_sgWrite_rsp_ready (core_io_sgWrite_rsp_ready ), //o
+ .io_sgWrite_rsp_payload_last (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last ), //i
+ .io_sgWrite_rsp_payload_fragment_opcode (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode ), //i
+ .io_sgWrite_rsp_payload_fragment_context (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context ), //i
+ .io_read_cmd_valid (core_io_read_cmd_valid ), //o
+ .io_read_cmd_ready (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready ), //i
+ .io_read_cmd_payload_last (core_io_read_cmd_payload_last ), //o
+ .io_read_cmd_payload_fragment_opcode (core_io_read_cmd_payload_fragment_opcode ), //o
+ .io_read_cmd_payload_fragment_address (core_io_read_cmd_payload_fragment_address[31:0] ), //o
+ .io_read_cmd_payload_fragment_length (core_io_read_cmd_payload_fragment_length[11:0] ), //o
+ .io_read_cmd_payload_fragment_context (core_io_read_cmd_payload_fragment_context[20:0] ), //o
+ .io_read_rsp_valid (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid ), //i
+ .io_read_rsp_ready (core_io_read_rsp_ready ), //o
+ .io_read_rsp_payload_last (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last ), //i
+ .io_read_rsp_payload_fragment_opcode (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode ), //i
+ .io_read_rsp_payload_fragment_data (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_data[127:0] ), //i
+ .io_read_rsp_payload_fragment_context (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context[20:0] ), //i
+ .io_write_cmd_valid (core_io_write_cmd_valid ), //o
+ .io_write_cmd_ready (io_write_cmd_rValidN ), //i
+ .io_write_cmd_payload_last (core_io_write_cmd_payload_last ), //o
+ .io_write_cmd_payload_fragment_opcode (core_io_write_cmd_payload_fragment_opcode ), //o
+ .io_write_cmd_payload_fragment_address (core_io_write_cmd_payload_fragment_address[31:0] ), //o
+ .io_write_cmd_payload_fragment_length (core_io_write_cmd_payload_fragment_length[11:0] ), //o
+ .io_write_cmd_payload_fragment_data (core_io_write_cmd_payload_fragment_data[127:0] ), //o
+ .io_write_cmd_payload_fragment_mask (core_io_write_cmd_payload_fragment_mask[15:0] ), //o
+ .io_write_cmd_payload_fragment_context (core_io_write_cmd_payload_fragment_context[12:0] ), //o
+ .io_write_rsp_valid (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid ), //i
+ .io_write_rsp_ready (core_io_write_rsp_ready ), //o
+ .io_write_rsp_payload_last (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last ), //i
+ .io_write_rsp_payload_fragment_opcode (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode ), //i
+ .io_write_rsp_payload_fragment_context (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context[12:0]), //i
+ .io_outputs_0_valid (core_io_outputs_0_valid ), //o
+ .io_outputs_0_ready (io_outputs_0_rValidN ), //i
+ .io_outputs_0_payload_data (core_io_outputs_0_payload_data[63:0] ), //o
+ .io_outputs_0_payload_mask (core_io_outputs_0_payload_mask[7:0] ), //o
+ .io_outputs_0_payload_sink (core_io_outputs_0_payload_sink[3:0] ), //o
+ .io_outputs_0_payload_last (core_io_outputs_0_payload_last ), //o
+ .io_inputs_0_valid (io_pop_s2mPipe_m2sPipe_valid ), //i
+ .io_inputs_0_ready (core_io_inputs_0_ready ), //o
+ .io_inputs_0_payload_data (io_pop_s2mPipe_m2sPipe_payload_data[63:0] ), //i
+ .io_inputs_0_payload_mask (io_pop_s2mPipe_m2sPipe_payload_mask[7:0] ), //i
+ .io_inputs_0_payload_sink (io_pop_s2mPipe_m2sPipe_payload_sink[3:0] ), //i
+ .io_inputs_0_payload_last (io_pop_s2mPipe_m2sPipe_payload_last ), //i
+ .io_interrupts (core_io_interrupts[1:0] ), //o
+ .io_ctrl_PADDR (withCtrlCc_apbCc_io_output_PADDR[13:0] ), //i
+ .io_ctrl_PSEL (withCtrlCc_apbCc_io_output_PSEL ), //i
+ .io_ctrl_PENABLE (withCtrlCc_apbCc_io_output_PENABLE ), //i
+ .io_ctrl_PREADY (core_io_ctrl_PREADY ), //o
+ .io_ctrl_PWRITE (withCtrlCc_apbCc_io_output_PWRITE ), //i
+ .io_ctrl_PWDATA (withCtrlCc_apbCc_io_output_PWDATA[31:0] ), //i
+ .io_ctrl_PRDATA (core_io_ctrl_PRDATA[31:0] ), //o
+ .io_ctrl_PSLVERROR (core_io_ctrl_PSLVERROR ), //o
+ .ll_0_descriptorUpdate (core_ll_0_descriptorUpdate ), //o
+ .ll_1_descriptorUpdate (core_ll_1_descriptorUpdate ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_Apb3CC withCtrlCc_apbCc (
+ .io_input_PADDR (ctrl_PADDR[13:0] ), //i
+ .io_input_PSEL (ctrl_PSEL ), //i
+ .io_input_PENABLE (ctrl_PENABLE ), //i
+ .io_input_PREADY (withCtrlCc_apbCc_io_input_PREADY ), //o
+ .io_input_PWRITE (ctrl_PWRITE ), //i
+ .io_input_PWDATA (ctrl_PWDATA[31:0] ), //i
+ .io_input_PRDATA (withCtrlCc_apbCc_io_input_PRDATA[31:0] ), //o
+ .io_input_PSLVERROR (withCtrlCc_apbCc_io_input_PSLVERROR ), //o
+ .io_output_PADDR (withCtrlCc_apbCc_io_output_PADDR[13:0] ), //o
+ .io_output_PSEL (withCtrlCc_apbCc_io_output_PSEL ), //o
+ .io_output_PENABLE (withCtrlCc_apbCc_io_output_PENABLE ), //o
+ .io_output_PREADY (core_io_ctrl_PREADY ), //i
+ .io_output_PWRITE (withCtrlCc_apbCc_io_output_PWRITE ), //o
+ .io_output_PWDATA (withCtrlCc_apbCc_io_output_PWDATA[31:0]), //o
+ .io_output_PRDATA (core_io_ctrl_PRDATA[31:0] ), //i
+ .io_output_PSLVERROR (core_io_ctrl_PSLVERROR ), //i
+ .ctrl_clk (ctrl_clk ), //i
+ .ctrl_reset (ctrl_reset ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_6 io_interrupts_buffercc (
+ .io_dataIn (core_io_interrupts[1:0] ), //i
+ .io_dataOut (io_interrupts_buffercc_io_dataOut[1:0]), //o
+ .ctrl_clk (ctrl_clk ), //i
+ .ctrl_reset (ctrl_reset ) //i
+ );
+ EfxDMA_BmbSourceRemover readLogic_sourceRemover (
+ .io_input_cmd_valid (readLogic_resized_cmd_valid ), //i
+ .io_input_cmd_ready (readLogic_sourceRemover_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (readLogic_resized_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_source (readLogic_resized_cmd_payload_fragment_source ), //i
+ .io_input_cmd_payload_fragment_opcode (readLogic_resized_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (readLogic_resized_cmd_payload_fragment_address[31:0] ), //i
+ .io_input_cmd_payload_fragment_length (readLogic_resized_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_context (readLogic_resized_cmd_payload_fragment_context[20:0] ), //i
+ .io_input_rsp_valid (readLogic_sourceRemover_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (readLogic_resized_rsp_ready ), //i
+ .io_input_rsp_payload_last (readLogic_sourceRemover_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_source (readLogic_sourceRemover_io_input_rsp_payload_fragment_source ), //o
+ .io_input_rsp_payload_fragment_opcode (readLogic_sourceRemover_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (readLogic_sourceRemover_io_input_rsp_payload_fragment_data[127:0] ), //o
+ .io_input_rsp_payload_fragment_context (readLogic_sourceRemover_io_input_rsp_payload_fragment_context[20:0] ), //o
+ .io_output_cmd_valid (readLogic_sourceRemover_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (readLogic_bridge_io_input_cmd_ready ), //i
+ .io_output_cmd_payload_last (readLogic_sourceRemover_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_opcode (readLogic_sourceRemover_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (readLogic_sourceRemover_io_output_cmd_payload_fragment_address[31:0]), //o
+ .io_output_cmd_payload_fragment_length (readLogic_sourceRemover_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_cmd_payload_fragment_context (readLogic_sourceRemover_io_output_cmd_payload_fragment_context[21:0]), //o
+ .io_output_rsp_valid (readLogic_bridge_io_input_rsp_valid ), //i
+ .io_output_rsp_ready (readLogic_sourceRemover_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (readLogic_bridge_io_input_rsp_payload_last ), //i
+ .io_output_rsp_payload_fragment_opcode (readLogic_bridge_io_input_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_data (readLogic_bridge_io_input_rsp_payload_fragment_data[127:0] ), //i
+ .io_output_rsp_payload_fragment_context (readLogic_bridge_io_input_rsp_payload_fragment_context[21:0] ) //i
+ );
+ EfxDMA_BmbToAxi4ReadOnlyBridge readLogic_bridge (
+ .io_input_cmd_valid (readLogic_sourceRemover_io_output_cmd_valid ), //i
+ .io_input_cmd_ready (readLogic_bridge_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (readLogic_sourceRemover_io_output_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (readLogic_sourceRemover_io_output_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (readLogic_sourceRemover_io_output_cmd_payload_fragment_address[31:0]), //i
+ .io_input_cmd_payload_fragment_length (readLogic_sourceRemover_io_output_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_context (readLogic_sourceRemover_io_output_cmd_payload_fragment_context[21:0]), //i
+ .io_input_rsp_valid (readLogic_bridge_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (readLogic_sourceRemover_io_output_rsp_ready ), //i
+ .io_input_rsp_payload_last (readLogic_bridge_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (readLogic_bridge_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (readLogic_bridge_io_input_rsp_payload_fragment_data[127:0] ), //o
+ .io_input_rsp_payload_fragment_context (readLogic_bridge_io_input_rsp_payload_fragment_context[21:0] ), //o
+ .io_output_ar_valid (readLogic_bridge_io_output_ar_valid ), //o
+ .io_output_ar_ready (readLogic_adapter_ar_ready ), //i
+ .io_output_ar_payload_addr (readLogic_bridge_io_output_ar_payload_addr[31:0] ), //o
+ .io_output_ar_payload_len (readLogic_bridge_io_output_ar_payload_len[7:0] ), //o
+ .io_output_ar_payload_size (readLogic_bridge_io_output_ar_payload_size[2:0] ), //o
+ .io_output_ar_payload_cache (readLogic_bridge_io_output_ar_payload_cache[3:0] ), //o
+ .io_output_ar_payload_prot (readLogic_bridge_io_output_ar_payload_prot[2:0] ), //o
+ .io_output_r_valid (readLogic_adapter_r_valid ), //i
+ .io_output_r_ready (readLogic_bridge_io_output_r_ready ), //o
+ .io_output_r_payload_data (readLogic_adapter_r_payload_data[127:0] ), //i
+ .io_output_r_payload_resp (readLogic_adapter_r_payload_resp[1:0] ), //i
+ .io_output_r_payload_last (readLogic_adapter_r_payload_last ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_BmbSourceRemover_1 writeLogic_sourceRemover (
+ .io_input_cmd_valid (writeLogic_resized_cmd_valid ), //i
+ .io_input_cmd_ready (writeLogic_sourceRemover_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (writeLogic_resized_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_source (writeLogic_resized_cmd_payload_fragment_source ), //i
+ .io_input_cmd_payload_fragment_opcode (writeLogic_resized_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (writeLogic_resized_cmd_payload_fragment_address[31:0] ), //i
+ .io_input_cmd_payload_fragment_length (writeLogic_resized_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_data (writeLogic_resized_cmd_payload_fragment_data[127:0] ), //i
+ .io_input_cmd_payload_fragment_mask (writeLogic_resized_cmd_payload_fragment_mask[15:0] ), //i
+ .io_input_cmd_payload_fragment_context (writeLogic_resized_cmd_payload_fragment_context[12:0] ), //i
+ .io_input_rsp_valid (writeLogic_sourceRemover_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (writeLogic_resized_rsp_ready ), //i
+ .io_input_rsp_payload_last (writeLogic_sourceRemover_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_source (writeLogic_sourceRemover_io_input_rsp_payload_fragment_source ), //o
+ .io_input_rsp_payload_fragment_opcode (writeLogic_sourceRemover_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_context (writeLogic_sourceRemover_io_input_rsp_payload_fragment_context[12:0] ), //o
+ .io_output_cmd_valid (writeLogic_sourceRemover_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (writeLogic_bridge_io_input_cmd_ready ), //i
+ .io_output_cmd_payload_last (writeLogic_sourceRemover_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_opcode (writeLogic_sourceRemover_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (writeLogic_sourceRemover_io_output_cmd_payload_fragment_address[31:0]), //o
+ .io_output_cmd_payload_fragment_length (writeLogic_sourceRemover_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_cmd_payload_fragment_data (writeLogic_sourceRemover_io_output_cmd_payload_fragment_data[127:0] ), //o
+ .io_output_cmd_payload_fragment_mask (writeLogic_sourceRemover_io_output_cmd_payload_fragment_mask[15:0] ), //o
+ .io_output_cmd_payload_fragment_context (writeLogic_sourceRemover_io_output_cmd_payload_fragment_context[13:0]), //o
+ .io_output_rsp_valid (writeLogic_bridge_io_input_rsp_valid ), //i
+ .io_output_rsp_ready (writeLogic_sourceRemover_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (writeLogic_bridge_io_input_rsp_payload_last ), //i
+ .io_output_rsp_payload_fragment_opcode (writeLogic_bridge_io_input_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_context (writeLogic_bridge_io_input_rsp_payload_fragment_context[13:0] ) //i
+ );
+ EfxDMA_BmbToAxi4WriteOnlyBridge writeLogic_bridge (
+ .io_input_cmd_valid (writeLogic_sourceRemover_io_output_cmd_valid ), //i
+ .io_input_cmd_ready (writeLogic_bridge_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (writeLogic_sourceRemover_io_output_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (writeLogic_sourceRemover_io_output_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (writeLogic_sourceRemover_io_output_cmd_payload_fragment_address[31:0]), //i
+ .io_input_cmd_payload_fragment_length (writeLogic_sourceRemover_io_output_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_data (writeLogic_sourceRemover_io_output_cmd_payload_fragment_data[127:0] ), //i
+ .io_input_cmd_payload_fragment_mask (writeLogic_sourceRemover_io_output_cmd_payload_fragment_mask[15:0] ), //i
+ .io_input_cmd_payload_fragment_context (writeLogic_sourceRemover_io_output_cmd_payload_fragment_context[13:0]), //i
+ .io_input_rsp_valid (writeLogic_bridge_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (writeLogic_sourceRemover_io_output_rsp_ready ), //i
+ .io_input_rsp_payload_last (writeLogic_bridge_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (writeLogic_bridge_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_context (writeLogic_bridge_io_input_rsp_payload_fragment_context[13:0] ), //o
+ .io_output_aw_valid (writeLogic_bridge_io_output_aw_valid ), //o
+ .io_output_aw_ready (writeLogic_adapter_aw_ready ), //i
+ .io_output_aw_payload_addr (writeLogic_bridge_io_output_aw_payload_addr[31:0] ), //o
+ .io_output_aw_payload_len (writeLogic_bridge_io_output_aw_payload_len[7:0] ), //o
+ .io_output_aw_payload_size (writeLogic_bridge_io_output_aw_payload_size[2:0] ), //o
+ .io_output_aw_payload_cache (writeLogic_bridge_io_output_aw_payload_cache[3:0] ), //o
+ .io_output_aw_payload_prot (writeLogic_bridge_io_output_aw_payload_prot[2:0] ), //o
+ .io_output_w_valid (writeLogic_bridge_io_output_w_valid ), //o
+ .io_output_w_ready (writeLogic_adapter_w_ready ), //i
+ .io_output_w_payload_data (writeLogic_bridge_io_output_w_payload_data[127:0] ), //o
+ .io_output_w_payload_strb (writeLogic_bridge_io_output_w_payload_strb[15:0] ), //o
+ .io_output_w_payload_last (writeLogic_bridge_io_output_w_payload_last ), //o
+ .io_output_b_valid (writeLogic_adapter_b_valid ), //i
+ .io_output_b_ready (writeLogic_bridge_io_output_b_ready ), //o
+ .io_output_b_payload_resp (writeLogic_adapter_b_payload_resp[1:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_BsbUpSizerDense inputsAdapter_0_upsizer_logic (
+ .io_input_valid (dat0_i_tvalid ), //i
+ .io_input_ready (inputsAdapter_0_upsizer_logic_io_input_ready ), //o
+ .io_input_payload_data (dat0_i_tdata[7:0] ), //i
+ .io_input_payload_mask (dat0_i_tkeep ), //i
+ .io_input_payload_sink (dat0_i_tdest[3:0] ), //i
+ .io_input_payload_last (dat0_i_tlast ), //i
+ .io_output_valid (inputsAdapter_0_upsizer_logic_io_output_valid ), //o
+ .io_output_ready (inputsAdapter_0_crossclock_fifo_io_push_ready ), //i
+ .io_output_payload_data (inputsAdapter_0_upsizer_logic_io_output_payload_data[63:0]), //o
+ .io_output_payload_mask (inputsAdapter_0_upsizer_logic_io_output_payload_mask[7:0] ), //o
+ .io_output_payload_sink (inputsAdapter_0_upsizer_logic_io_output_payload_sink[3:0] ), //o
+ .io_output_payload_last (inputsAdapter_0_upsizer_logic_io_output_payload_last ), //o
+ .dat0_i_clk (dat0_i_clk ), //i
+ .dat0_i_reset (dat0_i_reset ) //i
+ );
+ EfxDMA_StreamFifoCC inputsAdapter_0_crossclock_fifo (
+ .io_push_valid (inputsAdapter_0_upsizer_logic_io_output_valid ), //i
+ .io_push_ready (inputsAdapter_0_crossclock_fifo_io_push_ready ), //o
+ .io_push_payload_data (inputsAdapter_0_upsizer_logic_io_output_payload_data[63:0]), //i
+ .io_push_payload_mask (inputsAdapter_0_upsizer_logic_io_output_payload_mask[7:0] ), //i
+ .io_push_payload_sink (inputsAdapter_0_upsizer_logic_io_output_payload_sink[3:0] ), //i
+ .io_push_payload_last (inputsAdapter_0_upsizer_logic_io_output_payload_last ), //i
+ .io_pop_valid (inputsAdapter_0_crossclock_fifo_io_pop_valid ), //o
+ .io_pop_ready (io_pop_rValidN ), //i
+ .io_pop_payload_data (inputsAdapter_0_crossclock_fifo_io_pop_payload_data[63:0] ), //o
+ .io_pop_payload_mask (inputsAdapter_0_crossclock_fifo_io_pop_payload_mask[7:0] ), //o
+ .io_pop_payload_sink (inputsAdapter_0_crossclock_fifo_io_pop_payload_sink[3:0] ), //o
+ .io_pop_payload_last (inputsAdapter_0_crossclock_fifo_io_pop_payload_last ), //o
+ .io_pushOccupancy (inputsAdapter_0_crossclock_fifo_io_pushOccupancy[4:0] ), //o
+ .io_popOccupancy (inputsAdapter_0_crossclock_fifo_io_popOccupancy[4:0] ), //o
+ .dat0_i_clk (dat0_i_clk ), //i
+ .dat0_i_reset (dat0_i_reset ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_StreamFifoCC_1 outputsAdapter_0_crossclock_fifo (
+ .io_push_valid (outputsAdapter_0_ptr_valid ), //i
+ .io_push_ready (outputsAdapter_0_crossclock_fifo_io_push_ready ), //o
+ .io_push_payload_data (outputsAdapter_0_ptr_payload_data[63:0] ), //i
+ .io_push_payload_mask (outputsAdapter_0_ptr_payload_mask[7:0] ), //i
+ .io_push_payload_sink (outputsAdapter_0_ptr_payload_sink[3:0] ), //i
+ .io_push_payload_last (outputsAdapter_0_ptr_payload_last ), //i
+ .io_pop_valid (outputsAdapter_0_crossclock_fifo_io_pop_valid ), //o
+ .io_pop_ready (outputsAdapter_0_sparseDownsizer_logic_io_input_ready ), //i
+ .io_pop_payload_data (outputsAdapter_0_crossclock_fifo_io_pop_payload_data[63:0]), //o
+ .io_pop_payload_mask (outputsAdapter_0_crossclock_fifo_io_pop_payload_mask[7:0] ), //o
+ .io_pop_payload_sink (outputsAdapter_0_crossclock_fifo_io_pop_payload_sink[3:0] ), //o
+ .io_pop_payload_last (outputsAdapter_0_crossclock_fifo_io_pop_payload_last ), //o
+ .io_pushOccupancy (outputsAdapter_0_crossclock_fifo_io_pushOccupancy[4:0] ), //o
+ .io_popOccupancy (outputsAdapter_0_crossclock_fifo_io_popOccupancy[4:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ), //i
+ .dat1_o_clk (dat1_o_clk ), //i
+ .dat1_o_reset (dat1_o_reset ) //i
+ );
+ EfxDMA_BsbDownSizerSparse outputsAdapter_0_sparseDownsizer_logic (
+ .io_input_valid (outputsAdapter_0_crossclock_fifo_io_pop_valid ), //i
+ .io_input_ready (outputsAdapter_0_sparseDownsizer_logic_io_input_ready ), //o
+ .io_input_payload_data (outputsAdapter_0_crossclock_fifo_io_pop_payload_data[63:0] ), //i
+ .io_input_payload_mask (outputsAdapter_0_crossclock_fifo_io_pop_payload_mask[7:0] ), //i
+ .io_input_payload_sink (outputsAdapter_0_crossclock_fifo_io_pop_payload_sink[3:0] ), //i
+ .io_input_payload_last (outputsAdapter_0_crossclock_fifo_io_pop_payload_last ), //i
+ .io_output_valid (outputsAdapter_0_sparseDownsizer_logic_io_output_valid ), //o
+ .io_output_ready (dat1_o_tready ), //i
+ .io_output_payload_data (outputsAdapter_0_sparseDownsizer_logic_io_output_payload_data[7:0]), //o
+ .io_output_payload_mask (outputsAdapter_0_sparseDownsizer_logic_io_output_payload_mask ), //o
+ .io_output_payload_sink (outputsAdapter_0_sparseDownsizer_logic_io_output_payload_sink[3:0]), //o
+ .io_output_payload_last (outputsAdapter_0_sparseDownsizer_logic_io_output_payload_last ), //o
+ .dat1_o_clk (dat1_o_clk ), //i
+ .dat1_o_reset (dat1_o_reset ) //i
+ );
+ EfxDMA_BmbArbiter interconnect_read_aggregated_arbiter (
+ .io_inputs_0_cmd_valid (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid ), //i
+ .io_inputs_0_cmd_ready (interconnect_read_aggregated_arbiter_io_inputs_0_cmd_ready ), //o
+ .io_inputs_0_cmd_payload_last (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last ), //i
+ .io_inputs_0_cmd_payload_fragment_opcode (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode ), //i
+ .io_inputs_0_cmd_payload_fragment_address (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address[31:0]), //i
+ .io_inputs_0_cmd_payload_fragment_length (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length[4:0] ), //i
+ .io_inputs_0_cmd_payload_fragment_context (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context ), //i
+ .io_inputs_0_rsp_valid (interconnect_read_aggregated_arbiter_io_inputs_0_rsp_valid ), //o
+ .io_inputs_0_rsp_ready (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready ), //i
+ .io_inputs_0_rsp_payload_last (interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_last ), //o
+ .io_inputs_0_rsp_payload_fragment_opcode (interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode ), //o
+ .io_inputs_0_rsp_payload_fragment_data (interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_data[127:0] ), //o
+ .io_inputs_0_rsp_payload_fragment_context (interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context ), //o
+ .io_inputs_1_cmd_valid (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid ), //i
+ .io_inputs_1_cmd_ready (interconnect_read_aggregated_arbiter_io_inputs_1_cmd_ready ), //o
+ .io_inputs_1_cmd_payload_last (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last ), //i
+ .io_inputs_1_cmd_payload_fragment_opcode (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode ), //i
+ .io_inputs_1_cmd_payload_fragment_address (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address[31:0]), //i
+ .io_inputs_1_cmd_payload_fragment_length (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length[11:0] ), //i
+ .io_inputs_1_cmd_payload_fragment_context (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context[20:0]), //i
+ .io_inputs_1_rsp_valid (interconnect_read_aggregated_arbiter_io_inputs_1_rsp_valid ), //o
+ .io_inputs_1_rsp_ready (interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready ), //i
+ .io_inputs_1_rsp_payload_last (interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_last ), //o
+ .io_inputs_1_rsp_payload_fragment_opcode (interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode ), //o
+ .io_inputs_1_rsp_payload_fragment_data (interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_data[127:0] ), //o
+ .io_inputs_1_rsp_payload_fragment_context (interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context[20:0] ), //o
+ .io_output_cmd_valid (interconnect_read_aggregated_arbiter_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (interconnect_read_aggregated_cmd_ready ), //i
+ .io_output_cmd_payload_last (interconnect_read_aggregated_arbiter_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_source (interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_source ), //o
+ .io_output_cmd_payload_fragment_opcode (interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_address[31:0] ), //o
+ .io_output_cmd_payload_fragment_length (interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_cmd_payload_fragment_context (interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_context[20:0] ), //o
+ .io_output_rsp_valid (interconnect_read_aggregated_rsp_valid ), //i
+ .io_output_rsp_ready (interconnect_read_aggregated_arbiter_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (interconnect_read_aggregated_rsp_payload_last ), //i
+ .io_output_rsp_payload_fragment_source (interconnect_read_aggregated_rsp_payload_fragment_source ), //i
+ .io_output_rsp_payload_fragment_opcode (interconnect_read_aggregated_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_data (interconnect_read_aggregated_rsp_payload_fragment_data[127:0] ), //i
+ .io_output_rsp_payload_fragment_context (interconnect_read_aggregated_rsp_payload_fragment_context[20:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_BmbArbiter_1 interconnect_write_aggregated_arbiter (
+ .io_inputs_0_cmd_valid (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid ), //i
+ .io_inputs_0_cmd_ready (interconnect_write_aggregated_arbiter_io_inputs_0_cmd_ready ), //o
+ .io_inputs_0_cmd_payload_last (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last ), //i
+ .io_inputs_0_cmd_payload_fragment_opcode (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode ), //i
+ .io_inputs_0_cmd_payload_fragment_address (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address[31:0]), //i
+ .io_inputs_0_cmd_payload_fragment_length (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length[1:0] ), //i
+ .io_inputs_0_cmd_payload_fragment_data (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_data[127:0] ), //i
+ .io_inputs_0_cmd_payload_fragment_mask (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_mask[15:0] ), //i
+ .io_inputs_0_cmd_payload_fragment_context (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context ), //i
+ .io_inputs_0_rsp_valid (interconnect_write_aggregated_arbiter_io_inputs_0_rsp_valid ), //o
+ .io_inputs_0_rsp_ready (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready ), //i
+ .io_inputs_0_rsp_payload_last (interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_last ), //o
+ .io_inputs_0_rsp_payload_fragment_opcode (interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode ), //o
+ .io_inputs_0_rsp_payload_fragment_context (interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context ), //o
+ .io_inputs_1_cmd_valid (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid ), //i
+ .io_inputs_1_cmd_ready (interconnect_write_aggregated_arbiter_io_inputs_1_cmd_ready ), //o
+ .io_inputs_1_cmd_payload_last (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last ), //i
+ .io_inputs_1_cmd_payload_fragment_opcode (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode ), //i
+ .io_inputs_1_cmd_payload_fragment_address (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address[31:0]), //i
+ .io_inputs_1_cmd_payload_fragment_length (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length[11:0] ), //i
+ .io_inputs_1_cmd_payload_fragment_data (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_data[127:0] ), //i
+ .io_inputs_1_cmd_payload_fragment_mask (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_mask[15:0] ), //i
+ .io_inputs_1_cmd_payload_fragment_context (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context[12:0]), //i
+ .io_inputs_1_rsp_valid (interconnect_write_aggregated_arbiter_io_inputs_1_rsp_valid ), //o
+ .io_inputs_1_rsp_ready (interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready ), //i
+ .io_inputs_1_rsp_payload_last (interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_last ), //o
+ .io_inputs_1_rsp_payload_fragment_opcode (interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode ), //o
+ .io_inputs_1_rsp_payload_fragment_context (interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context[12:0] ), //o
+ .io_output_cmd_valid (interconnect_write_aggregated_arbiter_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (interconnect_write_aggregated_cmd_ready ), //i
+ .io_output_cmd_payload_last (interconnect_write_aggregated_arbiter_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_source (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_source ), //o
+ .io_output_cmd_payload_fragment_opcode (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_address[31:0] ), //o
+ .io_output_cmd_payload_fragment_length (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_cmd_payload_fragment_data (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_data[127:0] ), //o
+ .io_output_cmd_payload_fragment_mask (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_mask[15:0] ), //o
+ .io_output_cmd_payload_fragment_context (interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_context[12:0] ), //o
+ .io_output_rsp_valid (interconnect_write_aggregated_rsp_valid ), //i
+ .io_output_rsp_ready (interconnect_write_aggregated_arbiter_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (interconnect_write_aggregated_rsp_payload_last ), //i
+ .io_output_rsp_payload_fragment_source (interconnect_write_aggregated_rsp_payload_fragment_source ), //i
+ .io_output_rsp_payload_fragment_opcode (interconnect_write_aggregated_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_context (interconnect_write_aggregated_rsp_payload_fragment_context[12:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign io_0_descriptorUpdate = core_ll_0_descriptorUpdate;
+ assign io_1_descriptorUpdate = core_ll_1_descriptorUpdate;
+ assign ctrl_PREADY = withCtrlCc_apbCc_io_input_PREADY;
+ assign ctrl_PRDATA = withCtrlCc_apbCc_io_input_PRDATA;
+ assign ctrl_PSLVERROR = withCtrlCc_apbCc_io_input_PSLVERROR;
+ assign ctrl_interrupts = io_interrupts_buffercc_io_dataOut;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid = core_io_read_cmd_valid;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready = core_io_read_rsp_ready;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last = core_io_read_cmd_payload_last;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode = core_io_read_cmd_payload_fragment_opcode;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address = core_io_read_cmd_payload_fragment_address;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length = core_io_read_cmd_payload_fragment_length;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context = core_io_read_cmd_payload_fragment_context;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid = core_io_sgRead_cmd_valid;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready = core_io_sgRead_rsp_ready;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last = core_io_sgRead_cmd_payload_last;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode = core_io_sgRead_cmd_payload_fragment_opcode;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address = core_io_sgRead_cmd_payload_fragment_address;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length = core_io_sgRead_cmd_payload_fragment_length;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context = core_io_sgRead_cmd_payload_fragment_context;
+ assign io_write_cmd_s2mPipe_valid = (core_io_write_cmd_valid || (! io_write_cmd_rValidN));
+ assign io_write_cmd_s2mPipe_payload_last = (io_write_cmd_rValidN ? core_io_write_cmd_payload_last : io_write_cmd_rData_last);
+ assign io_write_cmd_s2mPipe_payload_fragment_opcode = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_opcode : io_write_cmd_rData_fragment_opcode);
+ assign io_write_cmd_s2mPipe_payload_fragment_address = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_address : io_write_cmd_rData_fragment_address);
+ assign io_write_cmd_s2mPipe_payload_fragment_length = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_length : io_write_cmd_rData_fragment_length);
+ assign io_write_cmd_s2mPipe_payload_fragment_data = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_data : io_write_cmd_rData_fragment_data);
+ assign io_write_cmd_s2mPipe_payload_fragment_mask = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_mask : io_write_cmd_rData_fragment_mask);
+ assign io_write_cmd_s2mPipe_payload_fragment_context = (io_write_cmd_rValidN ? core_io_write_cmd_payload_fragment_context : io_write_cmd_rData_fragment_context);
+ always @(*) begin
+ io_write_cmd_s2mPipe_ready = io_write_cmd_s2mPipe_m2sPipe_ready;
+ if(when_Stream_l375) begin
+ io_write_cmd_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! io_write_cmd_s2mPipe_m2sPipe_valid);
+ assign io_write_cmd_s2mPipe_m2sPipe_valid = io_write_cmd_s2mPipe_rValid;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_last = io_write_cmd_s2mPipe_rData_last;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_opcode = io_write_cmd_s2mPipe_rData_fragment_opcode;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_address = io_write_cmd_s2mPipe_rData_fragment_address;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_length = io_write_cmd_s2mPipe_rData_fragment_length;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_data = io_write_cmd_s2mPipe_rData_fragment_data;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_mask = io_write_cmd_s2mPipe_rData_fragment_mask;
+ assign io_write_cmd_s2mPipe_m2sPipe_payload_fragment_context = io_write_cmd_s2mPipe_rData_fragment_context;
+ assign io_write_cmd_s2mPipe_m2sPipe_ready = interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_valid = io_write_cmd_s2mPipe_m2sPipe_valid;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_ready = core_io_write_rsp_ready;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_last = io_write_cmd_s2mPipe_m2sPipe_payload_last;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_opcode = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_opcode;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_address = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_address;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_length = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_length;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_data = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_data;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_mask = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_mask;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_payload_fragment_context = io_write_cmd_s2mPipe_m2sPipe_payload_fragment_context;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_valid = core_io_sgWrite_cmd_valid;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_ready = core_io_sgWrite_rsp_ready;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_last = core_io_sgWrite_cmd_payload_last;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_opcode = core_io_sgWrite_cmd_payload_fragment_opcode;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_address = core_io_sgWrite_cmd_payload_fragment_address;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_length = core_io_sgWrite_cmd_payload_fragment_length;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_data = core_io_sgWrite_cmd_payload_fragment_data;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_mask = core_io_sgWrite_cmd_payload_fragment_mask;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_payload_fragment_context = core_io_sgWrite_cmd_payload_fragment_context;
+ assign interconnect_read_aggregated_cmd_halfPipe_fire = (interconnect_read_aggregated_cmd_halfPipe_valid && interconnect_read_aggregated_cmd_halfPipe_ready);
+ assign interconnect_read_aggregated_cmd_ready = (! interconnect_read_aggregated_cmd_rValid);
+ assign interconnect_read_aggregated_cmd_halfPipe_valid = interconnect_read_aggregated_cmd_rValid;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_last = interconnect_read_aggregated_cmd_rData_last;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_fragment_source = interconnect_read_aggregated_cmd_rData_fragment_source;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_fragment_opcode = interconnect_read_aggregated_cmd_rData_fragment_opcode;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_fragment_address = interconnect_read_aggregated_cmd_rData_fragment_address;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_fragment_length = interconnect_read_aggregated_cmd_rData_fragment_length;
+ assign interconnect_read_aggregated_cmd_halfPipe_payload_fragment_context = interconnect_read_aggregated_cmd_rData_fragment_context;
+ assign readLogic_resized_cmd_valid = interconnect_read_aggregated_cmd_halfPipe_valid;
+ assign interconnect_read_aggregated_cmd_halfPipe_ready = readLogic_resized_cmd_ready;
+ assign readLogic_resized_cmd_payload_last = interconnect_read_aggregated_cmd_halfPipe_payload_last;
+ assign readLogic_resized_cmd_payload_fragment_source = interconnect_read_aggregated_cmd_halfPipe_payload_fragment_source;
+ assign readLogic_resized_cmd_payload_fragment_opcode = interconnect_read_aggregated_cmd_halfPipe_payload_fragment_opcode;
+ assign readLogic_resized_cmd_payload_fragment_address = interconnect_read_aggregated_cmd_halfPipe_payload_fragment_address;
+ assign readLogic_resized_cmd_payload_fragment_length = interconnect_read_aggregated_cmd_halfPipe_payload_fragment_length;
+ assign readLogic_resized_cmd_payload_fragment_context = interconnect_read_aggregated_cmd_halfPipe_payload_fragment_context;
+ assign readLogic_resized_rsp_combStage_valid = readLogic_resized_rsp_valid;
+ assign readLogic_resized_rsp_ready = readLogic_resized_rsp_combStage_ready;
+ assign readLogic_resized_rsp_combStage_payload_last = readLogic_resized_rsp_payload_last;
+ assign readLogic_resized_rsp_combStage_payload_fragment_source = readLogic_resized_rsp_payload_fragment_source;
+ assign readLogic_resized_rsp_combStage_payload_fragment_opcode = readLogic_resized_rsp_payload_fragment_opcode;
+ assign readLogic_resized_rsp_combStage_payload_fragment_data = readLogic_resized_rsp_payload_fragment_data;
+ assign readLogic_resized_rsp_combStage_payload_fragment_context = readLogic_resized_rsp_payload_fragment_context;
+ assign interconnect_read_aggregated_rsp_valid = readLogic_resized_rsp_combStage_valid;
+ assign readLogic_resized_rsp_combStage_ready = interconnect_read_aggregated_rsp_ready;
+ assign interconnect_read_aggregated_rsp_payload_last = readLogic_resized_rsp_combStage_payload_last;
+ assign interconnect_read_aggregated_rsp_payload_fragment_source = readLogic_resized_rsp_combStage_payload_fragment_source;
+ assign interconnect_read_aggregated_rsp_payload_fragment_opcode = readLogic_resized_rsp_combStage_payload_fragment_opcode;
+ assign interconnect_read_aggregated_rsp_payload_fragment_data = readLogic_resized_rsp_combStage_payload_fragment_data;
+ assign interconnect_read_aggregated_rsp_payload_fragment_context = readLogic_resized_rsp_combStage_payload_fragment_context;
+ assign readLogic_resized_cmd_ready = readLogic_sourceRemover_io_input_cmd_ready;
+ assign readLogic_resized_rsp_valid = readLogic_sourceRemover_io_input_rsp_valid;
+ assign readLogic_resized_rsp_payload_last = readLogic_sourceRemover_io_input_rsp_payload_last;
+ assign readLogic_resized_rsp_payload_fragment_source = readLogic_sourceRemover_io_input_rsp_payload_fragment_source;
+ assign readLogic_resized_rsp_payload_fragment_opcode = readLogic_sourceRemover_io_input_rsp_payload_fragment_opcode;
+ assign readLogic_resized_rsp_payload_fragment_data = readLogic_sourceRemover_io_input_rsp_payload_fragment_data;
+ assign readLogic_resized_rsp_payload_fragment_context = readLogic_sourceRemover_io_input_rsp_payload_fragment_context;
+ assign readLogic_adapter_ar_valid = readLogic_bridge_io_output_ar_valid;
+ assign readLogic_adapter_ar_payload_addr = readLogic_bridge_io_output_ar_payload_addr;
+ assign _zz_readLogic_adapter_ar_payload_region[3 : 0] = 4'b0000;
+ assign readLogic_adapter_ar_payload_region = _zz_readLogic_adapter_ar_payload_region;
+ assign readLogic_adapter_ar_payload_len = readLogic_bridge_io_output_ar_payload_len;
+ assign readLogic_adapter_ar_payload_size = readLogic_bridge_io_output_ar_payload_size;
+ assign readLogic_adapter_ar_payload_burst = 2'b01;
+ assign readLogic_adapter_ar_payload_lock = 1'b0;
+ assign readLogic_adapter_ar_payload_cache = readLogic_bridge_io_output_ar_payload_cache;
+ assign readLogic_adapter_ar_payload_qos = 4'b0000;
+ assign readLogic_adapter_ar_payload_prot = readLogic_bridge_io_output_ar_payload_prot;
+ assign readLogic_adapter_r_ready = readLogic_bridge_io_output_r_ready;
+ assign readLogic_adapter_ar_halfPipe_fire = (readLogic_adapter_ar_halfPipe_valid && readLogic_adapter_ar_halfPipe_ready);
+ assign readLogic_adapter_ar_ready = (! readLogic_adapter_ar_rValid);
+ assign readLogic_adapter_ar_halfPipe_valid = readLogic_adapter_ar_rValid;
+ assign readLogic_adapter_ar_halfPipe_payload_addr = readLogic_adapter_ar_rData_addr;
+ assign readLogic_adapter_ar_halfPipe_payload_region = readLogic_adapter_ar_rData_region;
+ assign readLogic_adapter_ar_halfPipe_payload_len = readLogic_adapter_ar_rData_len;
+ assign readLogic_adapter_ar_halfPipe_payload_size = readLogic_adapter_ar_rData_size;
+ assign readLogic_adapter_ar_halfPipe_payload_burst = readLogic_adapter_ar_rData_burst;
+ assign readLogic_adapter_ar_halfPipe_payload_lock = readLogic_adapter_ar_rData_lock;
+ assign readLogic_adapter_ar_halfPipe_payload_cache = readLogic_adapter_ar_rData_cache;
+ assign readLogic_adapter_ar_halfPipe_payload_qos = readLogic_adapter_ar_rData_qos;
+ assign readLogic_adapter_ar_halfPipe_payload_prot = readLogic_adapter_ar_rData_prot;
+ assign read_arvalid = readLogic_adapter_ar_halfPipe_valid;
+ assign readLogic_adapter_ar_halfPipe_ready = read_arready;
+ assign read_araddr = readLogic_adapter_ar_halfPipe_payload_addr;
+ assign read_arregion = readLogic_adapter_ar_halfPipe_payload_region;
+ assign read_arlen = readLogic_adapter_ar_halfPipe_payload_len;
+ assign read_arsize = readLogic_adapter_ar_halfPipe_payload_size;
+ assign read_arburst = readLogic_adapter_ar_halfPipe_payload_burst;
+ assign read_arlock = readLogic_adapter_ar_halfPipe_payload_lock;
+ assign read_arcache = readLogic_adapter_ar_halfPipe_payload_cache;
+ assign read_arqos = readLogic_adapter_ar_halfPipe_payload_qos;
+ assign read_arprot = readLogic_adapter_ar_halfPipe_payload_prot;
+ assign read_rready = read_r_rValidN;
+ assign read_r_s2mPipe_valid = (read_rvalid || (! read_r_rValidN));
+ assign read_r_s2mPipe_payload_data = (read_r_rValidN ? read_rdata : read_r_rData_data);
+ assign read_r_s2mPipe_payload_resp = (read_r_rValidN ? read_rresp : read_r_rData_resp);
+ assign read_r_s2mPipe_payload_last = (read_r_rValidN ? read_rlast : read_r_rData_last);
+ always @(*) begin
+ read_r_s2mPipe_ready = readLogic_beforeQueue_ready;
+ if(when_Stream_l375_1) begin
+ read_r_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_1 = (! readLogic_beforeQueue_valid);
+ assign readLogic_beforeQueue_valid = read_r_s2mPipe_rValid;
+ assign readLogic_beforeQueue_payload_data = read_r_s2mPipe_rData_data;
+ assign readLogic_beforeQueue_payload_resp = read_r_s2mPipe_rData_resp;
+ assign readLogic_beforeQueue_payload_last = read_r_s2mPipe_rData_last;
+ assign readLogic_adapter_r_valid = readLogic_beforeQueue_valid;
+ assign readLogic_beforeQueue_ready = readLogic_adapter_r_ready;
+ assign readLogic_adapter_r_payload_data = readLogic_beforeQueue_payload_data;
+ assign readLogic_adapter_r_payload_resp = readLogic_beforeQueue_payload_resp;
+ assign readLogic_adapter_r_payload_last = readLogic_beforeQueue_payload_last;
+ always @(*) begin
+ interconnect_write_aggregated_cmd_ready = interconnect_write_aggregated_cmd_m2sPipe_ready;
+ if(when_Stream_l375_2) begin
+ interconnect_write_aggregated_cmd_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_2 = (! interconnect_write_aggregated_cmd_m2sPipe_valid);
+ assign interconnect_write_aggregated_cmd_m2sPipe_valid = interconnect_write_aggregated_cmd_rValid;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_last = interconnect_write_aggregated_cmd_rData_last;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_source = interconnect_write_aggregated_cmd_rData_fragment_source;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_opcode = interconnect_write_aggregated_cmd_rData_fragment_opcode;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_address = interconnect_write_aggregated_cmd_rData_fragment_address;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_length = interconnect_write_aggregated_cmd_rData_fragment_length;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_data = interconnect_write_aggregated_cmd_rData_fragment_data;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_mask = interconnect_write_aggregated_cmd_rData_fragment_mask;
+ assign interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_context = interconnect_write_aggregated_cmd_rData_fragment_context;
+ assign writeLogic_resized_cmd_valid = interconnect_write_aggregated_cmd_m2sPipe_valid;
+ assign interconnect_write_aggregated_cmd_m2sPipe_ready = writeLogic_resized_cmd_ready;
+ assign writeLogic_resized_cmd_payload_last = interconnect_write_aggregated_cmd_m2sPipe_payload_last;
+ assign writeLogic_resized_cmd_payload_fragment_source = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_source;
+ assign writeLogic_resized_cmd_payload_fragment_opcode = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_opcode;
+ assign writeLogic_resized_cmd_payload_fragment_address = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_address;
+ assign writeLogic_resized_cmd_payload_fragment_length = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_length;
+ assign writeLogic_resized_cmd_payload_fragment_data = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_data;
+ assign writeLogic_resized_cmd_payload_fragment_mask = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_mask;
+ assign writeLogic_resized_cmd_payload_fragment_context = interconnect_write_aggregated_cmd_m2sPipe_payload_fragment_context;
+ assign writeLogic_resized_rsp_combStage_valid = writeLogic_resized_rsp_valid;
+ assign writeLogic_resized_rsp_ready = writeLogic_resized_rsp_combStage_ready;
+ assign writeLogic_resized_rsp_combStage_payload_last = writeLogic_resized_rsp_payload_last;
+ assign writeLogic_resized_rsp_combStage_payload_fragment_source = writeLogic_resized_rsp_payload_fragment_source;
+ assign writeLogic_resized_rsp_combStage_payload_fragment_opcode = writeLogic_resized_rsp_payload_fragment_opcode;
+ assign writeLogic_resized_rsp_combStage_payload_fragment_context = writeLogic_resized_rsp_payload_fragment_context;
+ assign interconnect_write_aggregated_rsp_valid = writeLogic_resized_rsp_combStage_valid;
+ assign writeLogic_resized_rsp_combStage_ready = interconnect_write_aggregated_rsp_ready;
+ assign interconnect_write_aggregated_rsp_payload_last = writeLogic_resized_rsp_combStage_payload_last;
+ assign interconnect_write_aggregated_rsp_payload_fragment_source = writeLogic_resized_rsp_combStage_payload_fragment_source;
+ assign interconnect_write_aggregated_rsp_payload_fragment_opcode = writeLogic_resized_rsp_combStage_payload_fragment_opcode;
+ assign interconnect_write_aggregated_rsp_payload_fragment_context = writeLogic_resized_rsp_combStage_payload_fragment_context;
+ assign writeLogic_resized_cmd_ready = writeLogic_sourceRemover_io_input_cmd_ready;
+ assign writeLogic_resized_rsp_valid = writeLogic_sourceRemover_io_input_rsp_valid;
+ assign writeLogic_resized_rsp_payload_last = writeLogic_sourceRemover_io_input_rsp_payload_last;
+ assign writeLogic_resized_rsp_payload_fragment_source = writeLogic_sourceRemover_io_input_rsp_payload_fragment_source;
+ assign writeLogic_resized_rsp_payload_fragment_opcode = writeLogic_sourceRemover_io_input_rsp_payload_fragment_opcode;
+ assign writeLogic_resized_rsp_payload_fragment_context = writeLogic_sourceRemover_io_input_rsp_payload_fragment_context;
+ assign writeLogic_adapter_aw_valid = writeLogic_bridge_io_output_aw_valid;
+ assign writeLogic_adapter_aw_payload_addr = writeLogic_bridge_io_output_aw_payload_addr;
+ assign _zz_writeLogic_adapter_aw_payload_region[3 : 0] = 4'b0000;
+ assign writeLogic_adapter_aw_payload_region = _zz_writeLogic_adapter_aw_payload_region;
+ assign writeLogic_adapter_aw_payload_len = writeLogic_bridge_io_output_aw_payload_len;
+ assign writeLogic_adapter_aw_payload_size = writeLogic_bridge_io_output_aw_payload_size;
+ assign writeLogic_adapter_aw_payload_burst = 2'b01;
+ assign writeLogic_adapter_aw_payload_lock = 1'b0;
+ assign writeLogic_adapter_aw_payload_cache = writeLogic_bridge_io_output_aw_payload_cache;
+ assign writeLogic_adapter_aw_payload_qos = 4'b0000;
+ assign writeLogic_adapter_aw_payload_prot = writeLogic_bridge_io_output_aw_payload_prot;
+ assign writeLogic_adapter_w_valid = writeLogic_bridge_io_output_w_valid;
+ assign writeLogic_adapter_w_payload_data = writeLogic_bridge_io_output_w_payload_data;
+ assign writeLogic_adapter_w_payload_strb = writeLogic_bridge_io_output_w_payload_strb;
+ assign writeLogic_adapter_w_payload_last = writeLogic_bridge_io_output_w_payload_last;
+ assign writeLogic_adapter_b_ready = writeLogic_bridge_io_output_b_ready;
+ assign writeLogic_adapter_aw_halfPipe_fire = (writeLogic_adapter_aw_halfPipe_valid && writeLogic_adapter_aw_halfPipe_ready);
+ assign writeLogic_adapter_aw_ready = (! writeLogic_adapter_aw_rValid);
+ assign writeLogic_adapter_aw_halfPipe_valid = writeLogic_adapter_aw_rValid;
+ assign writeLogic_adapter_aw_halfPipe_payload_addr = writeLogic_adapter_aw_rData_addr;
+ assign writeLogic_adapter_aw_halfPipe_payload_region = writeLogic_adapter_aw_rData_region;
+ assign writeLogic_adapter_aw_halfPipe_payload_len = writeLogic_adapter_aw_rData_len;
+ assign writeLogic_adapter_aw_halfPipe_payload_size = writeLogic_adapter_aw_rData_size;
+ assign writeLogic_adapter_aw_halfPipe_payload_burst = writeLogic_adapter_aw_rData_burst;
+ assign writeLogic_adapter_aw_halfPipe_payload_lock = writeLogic_adapter_aw_rData_lock;
+ assign writeLogic_adapter_aw_halfPipe_payload_cache = writeLogic_adapter_aw_rData_cache;
+ assign writeLogic_adapter_aw_halfPipe_payload_qos = writeLogic_adapter_aw_rData_qos;
+ assign writeLogic_adapter_aw_halfPipe_payload_prot = writeLogic_adapter_aw_rData_prot;
+ assign write_awvalid = writeLogic_adapter_aw_halfPipe_valid;
+ assign writeLogic_adapter_aw_halfPipe_ready = write_awready;
+ assign write_awaddr = writeLogic_adapter_aw_halfPipe_payload_addr;
+ assign write_awregion = writeLogic_adapter_aw_halfPipe_payload_region;
+ assign write_awlen = writeLogic_adapter_aw_halfPipe_payload_len;
+ assign write_awsize = writeLogic_adapter_aw_halfPipe_payload_size;
+ assign write_awburst = writeLogic_adapter_aw_halfPipe_payload_burst;
+ assign write_awlock = writeLogic_adapter_aw_halfPipe_payload_lock;
+ assign write_awcache = writeLogic_adapter_aw_halfPipe_payload_cache;
+ assign write_awqos = writeLogic_adapter_aw_halfPipe_payload_qos;
+ assign write_awprot = writeLogic_adapter_aw_halfPipe_payload_prot;
+ assign writeLogic_adapter_w_ready = writeLogic_adapter_w_rValidN;
+ assign writeLogic_adapter_w_s2mPipe_valid = (writeLogic_adapter_w_valid || (! writeLogic_adapter_w_rValidN));
+ assign writeLogic_adapter_w_s2mPipe_payload_data = (writeLogic_adapter_w_rValidN ? writeLogic_adapter_w_payload_data : writeLogic_adapter_w_rData_data);
+ assign writeLogic_adapter_w_s2mPipe_payload_strb = (writeLogic_adapter_w_rValidN ? writeLogic_adapter_w_payload_strb : writeLogic_adapter_w_rData_strb);
+ assign writeLogic_adapter_w_s2mPipe_payload_last = (writeLogic_adapter_w_rValidN ? writeLogic_adapter_w_payload_last : writeLogic_adapter_w_rData_last);
+ always @(*) begin
+ writeLogic_adapter_w_s2mPipe_ready = writeLogic_adapter_w_s2mPipe_m2sPipe_ready;
+ if(when_Stream_l375_3) begin
+ writeLogic_adapter_w_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_3 = (! writeLogic_adapter_w_s2mPipe_m2sPipe_valid);
+ assign writeLogic_adapter_w_s2mPipe_m2sPipe_valid = writeLogic_adapter_w_s2mPipe_rValid;
+ assign writeLogic_adapter_w_s2mPipe_m2sPipe_payload_data = writeLogic_adapter_w_s2mPipe_rData_data;
+ assign writeLogic_adapter_w_s2mPipe_m2sPipe_payload_strb = writeLogic_adapter_w_s2mPipe_rData_strb;
+ assign writeLogic_adapter_w_s2mPipe_m2sPipe_payload_last = writeLogic_adapter_w_s2mPipe_rData_last;
+ assign write_wvalid = writeLogic_adapter_w_s2mPipe_m2sPipe_valid;
+ assign writeLogic_adapter_w_s2mPipe_m2sPipe_ready = write_wready;
+ assign write_wdata = writeLogic_adapter_w_s2mPipe_m2sPipe_payload_data;
+ assign write_wstrb = writeLogic_adapter_w_s2mPipe_m2sPipe_payload_strb;
+ assign write_wlast = writeLogic_adapter_w_s2mPipe_m2sPipe_payload_last;
+ assign write_b_halfPipe_fire = (write_b_halfPipe_valid && write_b_halfPipe_ready);
+ assign write_bready = (! write_b_rValid);
+ assign write_b_halfPipe_valid = write_b_rValid;
+ assign write_b_halfPipe_payload_resp = write_b_rData_resp;
+ assign writeLogic_adapter_b_valid = write_b_halfPipe_valid;
+ assign write_b_halfPipe_ready = writeLogic_adapter_b_ready;
+ assign writeLogic_adapter_b_payload_resp = write_b_halfPipe_payload_resp;
+ assign dat0_i_tready = inputsAdapter_0_upsizer_logic_io_input_ready;
+ assign io_pop_s2mPipe_valid = (inputsAdapter_0_crossclock_fifo_io_pop_valid || (! io_pop_rValidN));
+ assign io_pop_s2mPipe_payload_data = (io_pop_rValidN ? inputsAdapter_0_crossclock_fifo_io_pop_payload_data : io_pop_rData_data);
+ assign io_pop_s2mPipe_payload_mask = (io_pop_rValidN ? inputsAdapter_0_crossclock_fifo_io_pop_payload_mask : io_pop_rData_mask);
+ assign io_pop_s2mPipe_payload_sink = (io_pop_rValidN ? inputsAdapter_0_crossclock_fifo_io_pop_payload_sink : io_pop_rData_sink);
+ assign io_pop_s2mPipe_payload_last = (io_pop_rValidN ? inputsAdapter_0_crossclock_fifo_io_pop_payload_last : io_pop_rData_last);
+ always @(*) begin
+ io_pop_s2mPipe_ready = io_pop_s2mPipe_m2sPipe_ready;
+ if(when_Stream_l375_4) begin
+ io_pop_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_4 = (! io_pop_s2mPipe_m2sPipe_valid);
+ assign io_pop_s2mPipe_m2sPipe_valid = io_pop_s2mPipe_rValid;
+ assign io_pop_s2mPipe_m2sPipe_payload_data = io_pop_s2mPipe_rData_data;
+ assign io_pop_s2mPipe_m2sPipe_payload_mask = io_pop_s2mPipe_rData_mask;
+ assign io_pop_s2mPipe_m2sPipe_payload_sink = io_pop_s2mPipe_rData_sink;
+ assign io_pop_s2mPipe_m2sPipe_payload_last = io_pop_s2mPipe_rData_last;
+ assign io_pop_s2mPipe_m2sPipe_ready = core_io_inputs_0_ready;
+ assign io_outputs_0_s2mPipe_valid = (core_io_outputs_0_valid || (! io_outputs_0_rValidN));
+ assign io_outputs_0_s2mPipe_payload_data = (io_outputs_0_rValidN ? core_io_outputs_0_payload_data : io_outputs_0_rData_data);
+ assign io_outputs_0_s2mPipe_payload_mask = (io_outputs_0_rValidN ? core_io_outputs_0_payload_mask : io_outputs_0_rData_mask);
+ assign io_outputs_0_s2mPipe_payload_sink = (io_outputs_0_rValidN ? core_io_outputs_0_payload_sink : io_outputs_0_rData_sink);
+ assign io_outputs_0_s2mPipe_payload_last = (io_outputs_0_rValidN ? core_io_outputs_0_payload_last : io_outputs_0_rData_last);
+ always @(*) begin
+ io_outputs_0_s2mPipe_ready = outputsAdapter_0_ptr_ready;
+ if(when_Stream_l375_5) begin
+ io_outputs_0_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_5 = (! outputsAdapter_0_ptr_valid);
+ assign outputsAdapter_0_ptr_valid = io_outputs_0_s2mPipe_rValid;
+ assign outputsAdapter_0_ptr_payload_data = io_outputs_0_s2mPipe_rData_data;
+ assign outputsAdapter_0_ptr_payload_mask = io_outputs_0_s2mPipe_rData_mask;
+ assign outputsAdapter_0_ptr_payload_sink = io_outputs_0_s2mPipe_rData_sink;
+ assign outputsAdapter_0_ptr_payload_last = io_outputs_0_s2mPipe_rData_last;
+ assign outputsAdapter_0_ptr_ready = outputsAdapter_0_crossclock_fifo_io_push_ready;
+ assign dat1_o_tvalid = outputsAdapter_0_sparseDownsizer_logic_io_output_valid;
+ assign dat1_o_tdata = outputsAdapter_0_sparseDownsizer_logic_io_output_payload_data;
+ assign dat1_o_tkeep = outputsAdapter_0_sparseDownsizer_logic_io_output_payload_mask;
+ assign dat1_o_tdest = outputsAdapter_0_sparseDownsizer_logic_io_output_payload_sink;
+ assign dat1_o_tlast = outputsAdapter_0_sparseDownsizer_logic_io_output_payload_last;
+ assign interconnect_read_aggregated_cmd_valid = interconnect_read_aggregated_arbiter_io_output_cmd_valid;
+ assign interconnect_read_aggregated_rsp_ready = interconnect_read_aggregated_arbiter_io_output_rsp_ready;
+ assign interconnect_read_aggregated_cmd_payload_last = interconnect_read_aggregated_arbiter_io_output_cmd_payload_last;
+ assign interconnect_read_aggregated_cmd_payload_fragment_source = interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_source;
+ assign interconnect_read_aggregated_cmd_payload_fragment_opcode = interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_opcode;
+ assign interconnect_read_aggregated_cmd_payload_fragment_address = interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_address;
+ assign interconnect_read_aggregated_cmd_payload_fragment_length = interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_length;
+ assign interconnect_read_aggregated_cmd_payload_fragment_context = interconnect_read_aggregated_arbiter_io_output_cmd_payload_fragment_context;
+ assign interconnect_write_aggregated_cmd_valid = interconnect_write_aggregated_arbiter_io_output_cmd_valid;
+ assign interconnect_write_aggregated_rsp_ready = interconnect_write_aggregated_arbiter_io_output_rsp_ready;
+ assign interconnect_write_aggregated_cmd_payload_last = interconnect_write_aggregated_arbiter_io_output_cmd_payload_last;
+ assign interconnect_write_aggregated_cmd_payload_fragment_source = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_source;
+ assign interconnect_write_aggregated_cmd_payload_fragment_opcode = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_opcode;
+ assign interconnect_write_aggregated_cmd_payload_fragment_address = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_address;
+ assign interconnect_write_aggregated_cmd_payload_fragment_length = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_length;
+ assign interconnect_write_aggregated_cmd_payload_fragment_data = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_data;
+ assign interconnect_write_aggregated_cmd_payload_fragment_mask = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_mask;
+ assign interconnect_write_aggregated_cmd_payload_fragment_context = interconnect_write_aggregated_arbiter_io_output_cmd_payload_fragment_context;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready = interconnect_read_aggregated_arbiter_io_inputs_0_cmd_ready;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid = interconnect_read_aggregated_arbiter_io_inputs_0_rsp_valid;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last = interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_last;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode = interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_data = interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_data;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context = interconnect_read_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready = interconnect_read_aggregated_arbiter_io_inputs_1_cmd_ready;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid = interconnect_read_aggregated_arbiter_io_inputs_1_rsp_valid;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last = interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_last;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode = interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_data = interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_data;
+ assign interconnect_read_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context = interconnect_read_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_cmd_ready = interconnect_write_aggregated_arbiter_io_inputs_0_cmd_ready;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_valid = interconnect_write_aggregated_arbiter_io_inputs_0_rsp_valid;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_last = interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_last;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_opcode = interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_opcode;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_0_decoder_rsp_payload_fragment_context = interconnect_write_aggregated_arbiter_io_inputs_0_rsp_payload_fragment_context;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_cmd_ready = interconnect_write_aggregated_arbiter_io_inputs_1_cmd_ready;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_valid = interconnect_write_aggregated_arbiter_io_inputs_1_rsp_valid;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_last = interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_last;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_opcode = interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_opcode;
+ assign interconnect_write_aggregated_slaveModel_arbiterGen_logic_sorted_1_decoder_rsp_payload_fragment_context = interconnect_write_aggregated_arbiter_io_inputs_1_rsp_payload_fragment_context;
+ always @(posedge clk) begin
+ if(reset) begin
+ io_write_cmd_rValidN <= 1'b1;
+ io_write_cmd_s2mPipe_rValid <= 1'b0;
+ interconnect_read_aggregated_cmd_rValid <= 1'b0;
+ readLogic_adapter_ar_rValid <= 1'b0;
+ read_r_rValidN <= 1'b1;
+ read_r_s2mPipe_rValid <= 1'b0;
+ interconnect_write_aggregated_cmd_rValid <= 1'b0;
+ writeLogic_adapter_aw_rValid <= 1'b0;
+ writeLogic_adapter_w_rValidN <= 1'b1;
+ writeLogic_adapter_w_s2mPipe_rValid <= 1'b0;
+ write_b_rValid <= 1'b0;
+ io_pop_rValidN <= 1'b1;
+ io_pop_s2mPipe_rValid <= 1'b0;
+ io_outputs_0_rValidN <= 1'b1;
+ io_outputs_0_s2mPipe_rValid <= 1'b0;
+ end else begin
+ if(core_io_write_cmd_valid) begin
+ io_write_cmd_rValidN <= 1'b0;
+ end
+ if(io_write_cmd_s2mPipe_ready) begin
+ io_write_cmd_rValidN <= 1'b1;
+ end
+ if(io_write_cmd_s2mPipe_ready) begin
+ io_write_cmd_s2mPipe_rValid <= io_write_cmd_s2mPipe_valid;
+ end
+ if(interconnect_read_aggregated_cmd_valid) begin
+ interconnect_read_aggregated_cmd_rValid <= 1'b1;
+ end
+ if(interconnect_read_aggregated_cmd_halfPipe_fire) begin
+ interconnect_read_aggregated_cmd_rValid <= 1'b0;
+ end
+ if(readLogic_adapter_ar_valid) begin
+ readLogic_adapter_ar_rValid <= 1'b1;
+ end
+ if(readLogic_adapter_ar_halfPipe_fire) begin
+ readLogic_adapter_ar_rValid <= 1'b0;
+ end
+ if(read_rvalid) begin
+ read_r_rValidN <= 1'b0;
+ end
+ if(read_r_s2mPipe_ready) begin
+ read_r_rValidN <= 1'b1;
+ end
+ if(read_r_s2mPipe_ready) begin
+ read_r_s2mPipe_rValid <= read_r_s2mPipe_valid;
+ end
+ if(interconnect_write_aggregated_cmd_ready) begin
+ interconnect_write_aggregated_cmd_rValid <= interconnect_write_aggregated_cmd_valid;
+ end
+ if(writeLogic_adapter_aw_valid) begin
+ writeLogic_adapter_aw_rValid <= 1'b1;
+ end
+ if(writeLogic_adapter_aw_halfPipe_fire) begin
+ writeLogic_adapter_aw_rValid <= 1'b0;
+ end
+ if(writeLogic_adapter_w_valid) begin
+ writeLogic_adapter_w_rValidN <= 1'b0;
+ end
+ if(writeLogic_adapter_w_s2mPipe_ready) begin
+ writeLogic_adapter_w_rValidN <= 1'b1;
+ end
+ if(writeLogic_adapter_w_s2mPipe_ready) begin
+ writeLogic_adapter_w_s2mPipe_rValid <= writeLogic_adapter_w_s2mPipe_valid;
+ end
+ if(write_bvalid) begin
+ write_b_rValid <= 1'b1;
+ end
+ if(write_b_halfPipe_fire) begin
+ write_b_rValid <= 1'b0;
+ end
+ if(inputsAdapter_0_crossclock_fifo_io_pop_valid) begin
+ io_pop_rValidN <= 1'b0;
+ end
+ if(io_pop_s2mPipe_ready) begin
+ io_pop_rValidN <= 1'b1;
+ end
+ if(io_pop_s2mPipe_ready) begin
+ io_pop_s2mPipe_rValid <= io_pop_s2mPipe_valid;
+ end
+ if(core_io_outputs_0_valid) begin
+ io_outputs_0_rValidN <= 1'b0;
+ end
+ if(io_outputs_0_s2mPipe_ready) begin
+ io_outputs_0_rValidN <= 1'b1;
+ end
+ if(io_outputs_0_s2mPipe_ready) begin
+ io_outputs_0_s2mPipe_rValid <= io_outputs_0_s2mPipe_valid;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_write_cmd_rValidN) begin
+ io_write_cmd_rData_last <= core_io_write_cmd_payload_last;
+ io_write_cmd_rData_fragment_opcode <= core_io_write_cmd_payload_fragment_opcode;
+ io_write_cmd_rData_fragment_address <= core_io_write_cmd_payload_fragment_address;
+ io_write_cmd_rData_fragment_length <= core_io_write_cmd_payload_fragment_length;
+ io_write_cmd_rData_fragment_data <= core_io_write_cmd_payload_fragment_data;
+ io_write_cmd_rData_fragment_mask <= core_io_write_cmd_payload_fragment_mask;
+ io_write_cmd_rData_fragment_context <= core_io_write_cmd_payload_fragment_context;
+ end
+ if(io_write_cmd_s2mPipe_ready) begin
+ io_write_cmd_s2mPipe_rData_last <= io_write_cmd_s2mPipe_payload_last;
+ io_write_cmd_s2mPipe_rData_fragment_opcode <= io_write_cmd_s2mPipe_payload_fragment_opcode;
+ io_write_cmd_s2mPipe_rData_fragment_address <= io_write_cmd_s2mPipe_payload_fragment_address;
+ io_write_cmd_s2mPipe_rData_fragment_length <= io_write_cmd_s2mPipe_payload_fragment_length;
+ io_write_cmd_s2mPipe_rData_fragment_data <= io_write_cmd_s2mPipe_payload_fragment_data;
+ io_write_cmd_s2mPipe_rData_fragment_mask <= io_write_cmd_s2mPipe_payload_fragment_mask;
+ io_write_cmd_s2mPipe_rData_fragment_context <= io_write_cmd_s2mPipe_payload_fragment_context;
+ end
+ if(interconnect_read_aggregated_cmd_ready) begin
+ interconnect_read_aggregated_cmd_rData_last <= interconnect_read_aggregated_cmd_payload_last;
+ interconnect_read_aggregated_cmd_rData_fragment_source <= interconnect_read_aggregated_cmd_payload_fragment_source;
+ interconnect_read_aggregated_cmd_rData_fragment_opcode <= interconnect_read_aggregated_cmd_payload_fragment_opcode;
+ interconnect_read_aggregated_cmd_rData_fragment_address <= interconnect_read_aggregated_cmd_payload_fragment_address;
+ interconnect_read_aggregated_cmd_rData_fragment_length <= interconnect_read_aggregated_cmd_payload_fragment_length;
+ interconnect_read_aggregated_cmd_rData_fragment_context <= interconnect_read_aggregated_cmd_payload_fragment_context;
+ end
+ if(readLogic_adapter_ar_ready) begin
+ readLogic_adapter_ar_rData_addr <= readLogic_adapter_ar_payload_addr;
+ readLogic_adapter_ar_rData_region <= readLogic_adapter_ar_payload_region;
+ readLogic_adapter_ar_rData_len <= readLogic_adapter_ar_payload_len;
+ readLogic_adapter_ar_rData_size <= readLogic_adapter_ar_payload_size;
+ readLogic_adapter_ar_rData_burst <= readLogic_adapter_ar_payload_burst;
+ readLogic_adapter_ar_rData_lock <= readLogic_adapter_ar_payload_lock;
+ readLogic_adapter_ar_rData_cache <= readLogic_adapter_ar_payload_cache;
+ readLogic_adapter_ar_rData_qos <= readLogic_adapter_ar_payload_qos;
+ readLogic_adapter_ar_rData_prot <= readLogic_adapter_ar_payload_prot;
+ end
+ if(read_rready) begin
+ read_r_rData_data <= read_rdata;
+ read_r_rData_resp <= read_rresp;
+ read_r_rData_last <= read_rlast;
+ end
+ if(read_r_s2mPipe_ready) begin
+ read_r_s2mPipe_rData_data <= read_r_s2mPipe_payload_data;
+ read_r_s2mPipe_rData_resp <= read_r_s2mPipe_payload_resp;
+ read_r_s2mPipe_rData_last <= read_r_s2mPipe_payload_last;
+ end
+ if(interconnect_write_aggregated_cmd_ready) begin
+ interconnect_write_aggregated_cmd_rData_last <= interconnect_write_aggregated_cmd_payload_last;
+ interconnect_write_aggregated_cmd_rData_fragment_source <= interconnect_write_aggregated_cmd_payload_fragment_source;
+ interconnect_write_aggregated_cmd_rData_fragment_opcode <= interconnect_write_aggregated_cmd_payload_fragment_opcode;
+ interconnect_write_aggregated_cmd_rData_fragment_address <= interconnect_write_aggregated_cmd_payload_fragment_address;
+ interconnect_write_aggregated_cmd_rData_fragment_length <= interconnect_write_aggregated_cmd_payload_fragment_length;
+ interconnect_write_aggregated_cmd_rData_fragment_data <= interconnect_write_aggregated_cmd_payload_fragment_data;
+ interconnect_write_aggregated_cmd_rData_fragment_mask <= interconnect_write_aggregated_cmd_payload_fragment_mask;
+ interconnect_write_aggregated_cmd_rData_fragment_context <= interconnect_write_aggregated_cmd_payload_fragment_context;
+ end
+ if(writeLogic_adapter_aw_ready) begin
+ writeLogic_adapter_aw_rData_addr <= writeLogic_adapter_aw_payload_addr;
+ writeLogic_adapter_aw_rData_region <= writeLogic_adapter_aw_payload_region;
+ writeLogic_adapter_aw_rData_len <= writeLogic_adapter_aw_payload_len;
+ writeLogic_adapter_aw_rData_size <= writeLogic_adapter_aw_payload_size;
+ writeLogic_adapter_aw_rData_burst <= writeLogic_adapter_aw_payload_burst;
+ writeLogic_adapter_aw_rData_lock <= writeLogic_adapter_aw_payload_lock;
+ writeLogic_adapter_aw_rData_cache <= writeLogic_adapter_aw_payload_cache;
+ writeLogic_adapter_aw_rData_qos <= writeLogic_adapter_aw_payload_qos;
+ writeLogic_adapter_aw_rData_prot <= writeLogic_adapter_aw_payload_prot;
+ end
+ if(writeLogic_adapter_w_ready) begin
+ writeLogic_adapter_w_rData_data <= writeLogic_adapter_w_payload_data;
+ writeLogic_adapter_w_rData_strb <= writeLogic_adapter_w_payload_strb;
+ writeLogic_adapter_w_rData_last <= writeLogic_adapter_w_payload_last;
+ end
+ if(writeLogic_adapter_w_s2mPipe_ready) begin
+ writeLogic_adapter_w_s2mPipe_rData_data <= writeLogic_adapter_w_s2mPipe_payload_data;
+ writeLogic_adapter_w_s2mPipe_rData_strb <= writeLogic_adapter_w_s2mPipe_payload_strb;
+ writeLogic_adapter_w_s2mPipe_rData_last <= writeLogic_adapter_w_s2mPipe_payload_last;
+ end
+ if(write_bready) begin
+ write_b_rData_resp <= write_bresp;
+ end
+ if(io_pop_rValidN) begin
+ io_pop_rData_data <= inputsAdapter_0_crossclock_fifo_io_pop_payload_data;
+ io_pop_rData_mask <= inputsAdapter_0_crossclock_fifo_io_pop_payload_mask;
+ io_pop_rData_sink <= inputsAdapter_0_crossclock_fifo_io_pop_payload_sink;
+ io_pop_rData_last <= inputsAdapter_0_crossclock_fifo_io_pop_payload_last;
+ end
+ if(io_pop_s2mPipe_ready) begin
+ io_pop_s2mPipe_rData_data <= io_pop_s2mPipe_payload_data;
+ io_pop_s2mPipe_rData_mask <= io_pop_s2mPipe_payload_mask;
+ io_pop_s2mPipe_rData_sink <= io_pop_s2mPipe_payload_sink;
+ io_pop_s2mPipe_rData_last <= io_pop_s2mPipe_payload_last;
+ end
+ if(io_outputs_0_rValidN) begin
+ io_outputs_0_rData_data <= core_io_outputs_0_payload_data;
+ io_outputs_0_rData_mask <= core_io_outputs_0_payload_mask;
+ io_outputs_0_rData_sink <= core_io_outputs_0_payload_sink;
+ io_outputs_0_rData_last <= core_io_outputs_0_payload_last;
+ end
+ if(io_outputs_0_s2mPipe_ready) begin
+ io_outputs_0_s2mPipe_rData_data <= io_outputs_0_s2mPipe_payload_data;
+ io_outputs_0_s2mPipe_rData_mask <= io_outputs_0_s2mPipe_payload_mask;
+ io_outputs_0_s2mPipe_rData_sink <= io_outputs_0_s2mPipe_payload_sink;
+ io_outputs_0_s2mPipe_rData_last <= io_outputs_0_s2mPipe_payload_last;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbArbiter_1 (
+ input wire io_inputs_0_cmd_valid,
+ output wire io_inputs_0_cmd_ready,
+ input wire io_inputs_0_cmd_payload_last,
+ input wire [0:0] io_inputs_0_cmd_payload_fragment_opcode,
+ input wire [31:0] io_inputs_0_cmd_payload_fragment_address,
+ input wire [1:0] io_inputs_0_cmd_payload_fragment_length,
+ input wire [127:0] io_inputs_0_cmd_payload_fragment_data,
+ input wire [15:0] io_inputs_0_cmd_payload_fragment_mask,
+ input wire [0:0] io_inputs_0_cmd_payload_fragment_context,
+ output wire io_inputs_0_rsp_valid,
+ input wire io_inputs_0_rsp_ready,
+ output wire io_inputs_0_rsp_payload_last,
+ output wire [0:0] io_inputs_0_rsp_payload_fragment_opcode,
+ output wire [0:0] io_inputs_0_rsp_payload_fragment_context,
+ input wire io_inputs_1_cmd_valid,
+ output wire io_inputs_1_cmd_ready,
+ input wire io_inputs_1_cmd_payload_last,
+ input wire [0:0] io_inputs_1_cmd_payload_fragment_opcode,
+ input wire [31:0] io_inputs_1_cmd_payload_fragment_address,
+ input wire [11:0] io_inputs_1_cmd_payload_fragment_length,
+ input wire [127:0] io_inputs_1_cmd_payload_fragment_data,
+ input wire [15:0] io_inputs_1_cmd_payload_fragment_mask,
+ input wire [12:0] io_inputs_1_cmd_payload_fragment_context,
+ output wire io_inputs_1_rsp_valid,
+ input wire io_inputs_1_rsp_ready,
+ output wire io_inputs_1_rsp_payload_last,
+ output wire [0:0] io_inputs_1_rsp_payload_fragment_opcode,
+ output wire [12:0] io_inputs_1_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_source,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ output wire [127:0] io_output_cmd_payload_fragment_data,
+ output wire [15:0] io_output_cmd_payload_fragment_mask,
+ output wire [12:0] io_output_cmd_payload_fragment_context,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_source,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [12:0] io_output_rsp_payload_fragment_context,
+ input wire clk,
+ input wire reset
+);
+
+ wire [11:0] memory_arbiter_io_inputs_0_payload_fragment_length;
+ wire [12:0] memory_arbiter_io_inputs_0_payload_fragment_context;
+ wire memory_arbiter_io_inputs_0_ready;
+ wire memory_arbiter_io_inputs_1_ready;
+ wire memory_arbiter_io_output_valid;
+ wire memory_arbiter_io_output_payload_last;
+ wire [0:0] memory_arbiter_io_output_payload_fragment_source;
+ wire [0:0] memory_arbiter_io_output_payload_fragment_opcode;
+ wire [31:0] memory_arbiter_io_output_payload_fragment_address;
+ wire [11:0] memory_arbiter_io_output_payload_fragment_length;
+ wire [127:0] memory_arbiter_io_output_payload_fragment_data;
+ wire [15:0] memory_arbiter_io_output_payload_fragment_mask;
+ wire [12:0] memory_arbiter_io_output_payload_fragment_context;
+ wire [0:0] memory_arbiter_io_chosen;
+ wire [1:0] memory_arbiter_io_chosenOH;
+ wire [1:0] _zz_io_output_cmd_payload_fragment_source;
+ reg _zz_io_output_rsp_ready;
+ wire [0:0] memory_rspSel;
+
+ assign _zz_io_output_cmd_payload_fragment_source = {memory_arbiter_io_output_payload_fragment_source,memory_arbiter_io_chosen};
+ EfxDMA_StreamArbiter_1 memory_arbiter (
+ .io_inputs_0_valid (io_inputs_0_cmd_valid ), //i
+ .io_inputs_0_ready (memory_arbiter_io_inputs_0_ready ), //o
+ .io_inputs_0_payload_last (io_inputs_0_cmd_payload_last ), //i
+ .io_inputs_0_payload_fragment_source (1'b0 ), //i
+ .io_inputs_0_payload_fragment_opcode (io_inputs_0_cmd_payload_fragment_opcode ), //i
+ .io_inputs_0_payload_fragment_address (io_inputs_0_cmd_payload_fragment_address[31:0] ), //i
+ .io_inputs_0_payload_fragment_length (memory_arbiter_io_inputs_0_payload_fragment_length[11:0] ), //i
+ .io_inputs_0_payload_fragment_data (io_inputs_0_cmd_payload_fragment_data[127:0] ), //i
+ .io_inputs_0_payload_fragment_mask (io_inputs_0_cmd_payload_fragment_mask[15:0] ), //i
+ .io_inputs_0_payload_fragment_context (memory_arbiter_io_inputs_0_payload_fragment_context[12:0]), //i
+ .io_inputs_1_valid (io_inputs_1_cmd_valid ), //i
+ .io_inputs_1_ready (memory_arbiter_io_inputs_1_ready ), //o
+ .io_inputs_1_payload_last (io_inputs_1_cmd_payload_last ), //i
+ .io_inputs_1_payload_fragment_source (1'b0 ), //i
+ .io_inputs_1_payload_fragment_opcode (io_inputs_1_cmd_payload_fragment_opcode ), //i
+ .io_inputs_1_payload_fragment_address (io_inputs_1_cmd_payload_fragment_address[31:0] ), //i
+ .io_inputs_1_payload_fragment_length (io_inputs_1_cmd_payload_fragment_length[11:0] ), //i
+ .io_inputs_1_payload_fragment_data (io_inputs_1_cmd_payload_fragment_data[127:0] ), //i
+ .io_inputs_1_payload_fragment_mask (io_inputs_1_cmd_payload_fragment_mask[15:0] ), //i
+ .io_inputs_1_payload_fragment_context (io_inputs_1_cmd_payload_fragment_context[12:0] ), //i
+ .io_output_valid (memory_arbiter_io_output_valid ), //o
+ .io_output_ready (io_output_cmd_ready ), //i
+ .io_output_payload_last (memory_arbiter_io_output_payload_last ), //o
+ .io_output_payload_fragment_source (memory_arbiter_io_output_payload_fragment_source ), //o
+ .io_output_payload_fragment_opcode (memory_arbiter_io_output_payload_fragment_opcode ), //o
+ .io_output_payload_fragment_address (memory_arbiter_io_output_payload_fragment_address[31:0] ), //o
+ .io_output_payload_fragment_length (memory_arbiter_io_output_payload_fragment_length[11:0] ), //o
+ .io_output_payload_fragment_data (memory_arbiter_io_output_payload_fragment_data[127:0] ), //o
+ .io_output_payload_fragment_mask (memory_arbiter_io_output_payload_fragment_mask[15:0] ), //o
+ .io_output_payload_fragment_context (memory_arbiter_io_output_payload_fragment_context[12:0] ), //o
+ .io_chosen (memory_arbiter_io_chosen ), //o
+ .io_chosenOH (memory_arbiter_io_chosenOH[1:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ case(memory_rspSel)
+ 1'b0 : _zz_io_output_rsp_ready = io_inputs_0_rsp_ready;
+ default : _zz_io_output_rsp_ready = io_inputs_1_rsp_ready;
+ endcase
+ end
+
+ assign io_inputs_0_cmd_ready = memory_arbiter_io_inputs_0_ready;
+ assign memory_arbiter_io_inputs_0_payload_fragment_length = {10'd0, io_inputs_0_cmd_payload_fragment_length};
+ assign memory_arbiter_io_inputs_0_payload_fragment_context = {12'd0, io_inputs_0_cmd_payload_fragment_context};
+ assign io_inputs_1_cmd_ready = memory_arbiter_io_inputs_1_ready;
+ assign io_output_cmd_valid = memory_arbiter_io_output_valid;
+ assign io_output_cmd_payload_last = memory_arbiter_io_output_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = memory_arbiter_io_output_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = memory_arbiter_io_output_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = memory_arbiter_io_output_payload_fragment_length;
+ assign io_output_cmd_payload_fragment_data = memory_arbiter_io_output_payload_fragment_data;
+ assign io_output_cmd_payload_fragment_mask = memory_arbiter_io_output_payload_fragment_mask;
+ assign io_output_cmd_payload_fragment_context = memory_arbiter_io_output_payload_fragment_context;
+ assign io_output_cmd_payload_fragment_source = _zz_io_output_cmd_payload_fragment_source[0:0];
+ assign memory_rspSel = io_output_rsp_payload_fragment_source[0 : 0];
+ assign io_inputs_0_rsp_valid = (io_output_rsp_valid && (memory_rspSel == 1'b0));
+ assign io_inputs_0_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_inputs_0_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_inputs_0_rsp_payload_fragment_context = io_output_rsp_payload_fragment_context[0:0];
+ assign io_inputs_1_rsp_valid = (io_output_rsp_valid && (memory_rspSel == 1'b1));
+ assign io_inputs_1_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_inputs_1_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_inputs_1_rsp_payload_fragment_context = io_output_rsp_payload_fragment_context;
+ assign io_output_rsp_ready = _zz_io_output_rsp_ready;
+
+endmodule
+
+module EfxDMA_BmbArbiter (
+ input wire io_inputs_0_cmd_valid,
+ output wire io_inputs_0_cmd_ready,
+ input wire io_inputs_0_cmd_payload_last,
+ input wire [0:0] io_inputs_0_cmd_payload_fragment_opcode,
+ input wire [31:0] io_inputs_0_cmd_payload_fragment_address,
+ input wire [4:0] io_inputs_0_cmd_payload_fragment_length,
+ input wire [0:0] io_inputs_0_cmd_payload_fragment_context,
+ output wire io_inputs_0_rsp_valid,
+ input wire io_inputs_0_rsp_ready,
+ output wire io_inputs_0_rsp_payload_last,
+ output wire [0:0] io_inputs_0_rsp_payload_fragment_opcode,
+ output wire [127:0] io_inputs_0_rsp_payload_fragment_data,
+ output wire [0:0] io_inputs_0_rsp_payload_fragment_context,
+ input wire io_inputs_1_cmd_valid,
+ output wire io_inputs_1_cmd_ready,
+ input wire io_inputs_1_cmd_payload_last,
+ input wire [0:0] io_inputs_1_cmd_payload_fragment_opcode,
+ input wire [31:0] io_inputs_1_cmd_payload_fragment_address,
+ input wire [11:0] io_inputs_1_cmd_payload_fragment_length,
+ input wire [20:0] io_inputs_1_cmd_payload_fragment_context,
+ output wire io_inputs_1_rsp_valid,
+ input wire io_inputs_1_rsp_ready,
+ output wire io_inputs_1_rsp_payload_last,
+ output wire [0:0] io_inputs_1_rsp_payload_fragment_opcode,
+ output wire [127:0] io_inputs_1_rsp_payload_fragment_data,
+ output wire [20:0] io_inputs_1_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_source,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ output wire [20:0] io_output_cmd_payload_fragment_context,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_source,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [127:0] io_output_rsp_payload_fragment_data,
+ input wire [20:0] io_output_rsp_payload_fragment_context,
+ input wire clk,
+ input wire reset
+);
+
+ wire [11:0] memory_arbiter_io_inputs_0_payload_fragment_length;
+ wire [20:0] memory_arbiter_io_inputs_0_payload_fragment_context;
+ wire memory_arbiter_io_inputs_0_ready;
+ wire memory_arbiter_io_inputs_1_ready;
+ wire memory_arbiter_io_output_valid;
+ wire memory_arbiter_io_output_payload_last;
+ wire [0:0] memory_arbiter_io_output_payload_fragment_source;
+ wire [0:0] memory_arbiter_io_output_payload_fragment_opcode;
+ wire [31:0] memory_arbiter_io_output_payload_fragment_address;
+ wire [11:0] memory_arbiter_io_output_payload_fragment_length;
+ wire [20:0] memory_arbiter_io_output_payload_fragment_context;
+ wire [0:0] memory_arbiter_io_chosen;
+ wire [1:0] memory_arbiter_io_chosenOH;
+ wire [1:0] _zz_io_output_cmd_payload_fragment_source;
+ reg _zz_io_output_rsp_ready;
+ wire [0:0] memory_rspSel;
+
+ assign _zz_io_output_cmd_payload_fragment_source = {memory_arbiter_io_output_payload_fragment_source,memory_arbiter_io_chosen};
+ EfxDMA_StreamArbiter memory_arbiter (
+ .io_inputs_0_valid (io_inputs_0_cmd_valid ), //i
+ .io_inputs_0_ready (memory_arbiter_io_inputs_0_ready ), //o
+ .io_inputs_0_payload_last (io_inputs_0_cmd_payload_last ), //i
+ .io_inputs_0_payload_fragment_source (1'b0 ), //i
+ .io_inputs_0_payload_fragment_opcode (io_inputs_0_cmd_payload_fragment_opcode ), //i
+ .io_inputs_0_payload_fragment_address (io_inputs_0_cmd_payload_fragment_address[31:0] ), //i
+ .io_inputs_0_payload_fragment_length (memory_arbiter_io_inputs_0_payload_fragment_length[11:0] ), //i
+ .io_inputs_0_payload_fragment_context (memory_arbiter_io_inputs_0_payload_fragment_context[20:0]), //i
+ .io_inputs_1_valid (io_inputs_1_cmd_valid ), //i
+ .io_inputs_1_ready (memory_arbiter_io_inputs_1_ready ), //o
+ .io_inputs_1_payload_last (io_inputs_1_cmd_payload_last ), //i
+ .io_inputs_1_payload_fragment_source (1'b0 ), //i
+ .io_inputs_1_payload_fragment_opcode (io_inputs_1_cmd_payload_fragment_opcode ), //i
+ .io_inputs_1_payload_fragment_address (io_inputs_1_cmd_payload_fragment_address[31:0] ), //i
+ .io_inputs_1_payload_fragment_length (io_inputs_1_cmd_payload_fragment_length[11:0] ), //i
+ .io_inputs_1_payload_fragment_context (io_inputs_1_cmd_payload_fragment_context[20:0] ), //i
+ .io_output_valid (memory_arbiter_io_output_valid ), //o
+ .io_output_ready (io_output_cmd_ready ), //i
+ .io_output_payload_last (memory_arbiter_io_output_payload_last ), //o
+ .io_output_payload_fragment_source (memory_arbiter_io_output_payload_fragment_source ), //o
+ .io_output_payload_fragment_opcode (memory_arbiter_io_output_payload_fragment_opcode ), //o
+ .io_output_payload_fragment_address (memory_arbiter_io_output_payload_fragment_address[31:0] ), //o
+ .io_output_payload_fragment_length (memory_arbiter_io_output_payload_fragment_length[11:0] ), //o
+ .io_output_payload_fragment_context (memory_arbiter_io_output_payload_fragment_context[20:0] ), //o
+ .io_chosen (memory_arbiter_io_chosen ), //o
+ .io_chosenOH (memory_arbiter_io_chosenOH[1:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ case(memory_rspSel)
+ 1'b0 : _zz_io_output_rsp_ready = io_inputs_0_rsp_ready;
+ default : _zz_io_output_rsp_ready = io_inputs_1_rsp_ready;
+ endcase
+ end
+
+ assign io_inputs_0_cmd_ready = memory_arbiter_io_inputs_0_ready;
+ assign memory_arbiter_io_inputs_0_payload_fragment_length = {7'd0, io_inputs_0_cmd_payload_fragment_length};
+ assign memory_arbiter_io_inputs_0_payload_fragment_context = {20'd0, io_inputs_0_cmd_payload_fragment_context};
+ assign io_inputs_1_cmd_ready = memory_arbiter_io_inputs_1_ready;
+ assign io_output_cmd_valid = memory_arbiter_io_output_valid;
+ assign io_output_cmd_payload_last = memory_arbiter_io_output_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = memory_arbiter_io_output_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = memory_arbiter_io_output_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = memory_arbiter_io_output_payload_fragment_length;
+ assign io_output_cmd_payload_fragment_context = memory_arbiter_io_output_payload_fragment_context;
+ assign io_output_cmd_payload_fragment_source = _zz_io_output_cmd_payload_fragment_source[0:0];
+ assign memory_rspSel = io_output_rsp_payload_fragment_source[0 : 0];
+ assign io_inputs_0_rsp_valid = (io_output_rsp_valid && (memory_rspSel == 1'b0));
+ assign io_inputs_0_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_inputs_0_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_inputs_0_rsp_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ assign io_inputs_0_rsp_payload_fragment_context = io_output_rsp_payload_fragment_context[0:0];
+ assign io_inputs_1_rsp_valid = (io_output_rsp_valid && (memory_rspSel == 1'b1));
+ assign io_inputs_1_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_inputs_1_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_inputs_1_rsp_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ assign io_inputs_1_rsp_payload_fragment_context = io_output_rsp_payload_fragment_context;
+ assign io_output_rsp_ready = _zz_io_output_rsp_ready;
+
+endmodule
+
+module EfxDMA_BsbDownSizerSparse (
+ input wire io_input_valid,
+ output wire io_input_ready,
+ input wire [63:0] io_input_payload_data,
+ input wire [7:0] io_input_payload_mask,
+ input wire [3:0] io_input_payload_sink,
+ input wire io_input_payload_last,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire [7:0] io_output_payload_data,
+ output wire [0:0] io_output_payload_mask,
+ output wire [3:0] io_output_payload_sink,
+ output wire io_output_payload_last,
+ input wire dat1_o_clk,
+ input wire dat1_o_reset
+);
+
+ reg [7:0] _zz_io_output_payload_data;
+ reg [0:0] _zz_io_output_payload_mask;
+ reg [2:0] counter;
+ wire end_1;
+ wire io_output_fire;
+
+ always @(*) begin
+ case(counter)
+ 3'b000 : begin
+ _zz_io_output_payload_data = io_input_payload_data[7 : 0];
+ _zz_io_output_payload_mask = io_input_payload_mask[0 : 0];
+ end
+ 3'b001 : begin
+ _zz_io_output_payload_data = io_input_payload_data[15 : 8];
+ _zz_io_output_payload_mask = io_input_payload_mask[1 : 1];
+ end
+ 3'b010 : begin
+ _zz_io_output_payload_data = io_input_payload_data[23 : 16];
+ _zz_io_output_payload_mask = io_input_payload_mask[2 : 2];
+ end
+ 3'b011 : begin
+ _zz_io_output_payload_data = io_input_payload_data[31 : 24];
+ _zz_io_output_payload_mask = io_input_payload_mask[3 : 3];
+ end
+ 3'b100 : begin
+ _zz_io_output_payload_data = io_input_payload_data[39 : 32];
+ _zz_io_output_payload_mask = io_input_payload_mask[4 : 4];
+ end
+ 3'b101 : begin
+ _zz_io_output_payload_data = io_input_payload_data[47 : 40];
+ _zz_io_output_payload_mask = io_input_payload_mask[5 : 5];
+ end
+ 3'b110 : begin
+ _zz_io_output_payload_data = io_input_payload_data[55 : 48];
+ _zz_io_output_payload_mask = io_input_payload_mask[6 : 6];
+ end
+ default : begin
+ _zz_io_output_payload_data = io_input_payload_data[63 : 56];
+ _zz_io_output_payload_mask = io_input_payload_mask[7 : 7];
+ end
+ endcase
+ end
+
+ assign end_1 = (counter == 3'b111);
+ assign io_output_fire = (io_output_valid && io_output_ready);
+ assign io_input_ready = (io_output_ready && end_1);
+ assign io_output_valid = io_input_valid;
+ assign io_output_payload_data = _zz_io_output_payload_data;
+ assign io_output_payload_mask = _zz_io_output_payload_mask;
+ assign io_output_payload_sink = io_input_payload_sink;
+ assign io_output_payload_last = (io_input_payload_last && end_1);
+ always @(posedge dat1_o_clk) begin
+ if(dat1_o_reset) begin
+ counter <= 3'b000;
+ end else begin
+ if(io_output_fire) begin
+ counter <= (counter + 3'b001);
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamFifoCC_1 (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [63:0] io_push_payload_data,
+ input wire [7:0] io_push_payload_mask,
+ input wire [3:0] io_push_payload_sink,
+ input wire io_push_payload_last,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [63:0] io_pop_payload_data,
+ output wire [7:0] io_pop_payload_mask,
+ output wire [3:0] io_pop_payload_sink,
+ output wire io_pop_payload_last,
+ output wire [4:0] io_pushOccupancy,
+ output wire [4:0] io_popOccupancy,
+ input wire clk,
+ input wire reset,
+ input wire dat1_o_clk,
+ input wire dat1_o_reset
+);
+
+ reg [76:0] ram_spinal_port1;
+ wire [4:0] popToPushGray_buffercc_io_dataOut;
+ wire [4:0] pushToPopGray_buffercc_io_dataOut;
+ wire [4:0] _zz_pushCC_pushPtrGray;
+ wire [3:0] _zz_ram_port;
+ wire [76:0] _zz_ram_port_1;
+ wire [4:0] _zz_popCC_popPtrGray;
+ reg _zz_1;
+ wire [4:0] popToPushGray;
+ wire [4:0] pushToPopGray;
+ reg [4:0] pushCC_pushPtr;
+ wire [4:0] pushCC_pushPtrPlus;
+ wire io_push_fire;
+ reg [4:0] pushCC_pushPtrGray;
+ wire [4:0] pushCC_popPtrGray;
+ wire pushCC_full;
+ wire _zz_io_pushOccupancy;
+ wire _zz_io_pushOccupancy_1;
+ wire _zz_io_pushOccupancy_2;
+ wire _zz_io_pushOccupancy_3;
+ reg [4:0] popCC_popPtr;
+ (* keep , syn_keep *) wire [4:0] popCC_popPtrPlus /* synthesis syn_keep = 1 */ ;
+ wire [4:0] popCC_popPtrGray;
+ wire [4:0] popCC_pushPtrGray;
+ wire popCC_addressGen_valid;
+ reg popCC_addressGen_ready;
+ wire [3:0] popCC_addressGen_payload;
+ wire popCC_empty;
+ wire popCC_addressGen_fire;
+ wire popCC_readArbitation_valid;
+ wire popCC_readArbitation_ready;
+ wire [3:0] popCC_readArbitation_payload;
+ reg popCC_addressGen_rValid;
+ reg [3:0] popCC_addressGen_rData;
+ wire when_Stream_l375;
+ wire popCC_readPort_cmd_valid;
+ wire [3:0] popCC_readPort_cmd_payload;
+ wire [63:0] popCC_readPort_rsp_data;
+ wire [7:0] popCC_readPort_rsp_mask;
+ wire [3:0] popCC_readPort_rsp_sink;
+ wire popCC_readPort_rsp_last;
+ wire [76:0] _zz_popCC_readPort_rsp_data;
+ wire popCC_readArbitation_translated_valid;
+ wire popCC_readArbitation_translated_ready;
+ wire [63:0] popCC_readArbitation_translated_payload_data;
+ wire [7:0] popCC_readArbitation_translated_payload_mask;
+ wire [3:0] popCC_readArbitation_translated_payload_sink;
+ wire popCC_readArbitation_translated_payload_last;
+ wire popCC_readArbitation_fire;
+ reg [4:0] popCC_ptrToPush;
+ reg [4:0] popCC_ptrToOccupancy;
+ wire _zz_io_popOccupancy;
+ wire _zz_io_popOccupancy_1;
+ wire _zz_io_popOccupancy_2;
+ wire _zz_io_popOccupancy_3;
+ reg [76:0] ram [0:15];
+
+ assign _zz_pushCC_pushPtrGray = (pushCC_pushPtrPlus >>> 1'b1);
+ assign _zz_ram_port = pushCC_pushPtr[3:0];
+ assign _zz_popCC_popPtrGray = (popCC_popPtr >>> 1'b1);
+ assign _zz_ram_port_1 = {io_push_payload_last,{io_push_payload_sink,{io_push_payload_mask,io_push_payload_data}}};
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ ram[_zz_ram_port] <= _zz_ram_port_1;
+ end
+ end
+
+ always @(posedge dat1_o_clk) begin
+ if(popCC_readPort_cmd_valid) begin
+ ram_spinal_port1 <= ram[popCC_readPort_cmd_payload];
+ end
+ end
+
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_3 popToPushGray_buffercc (
+ .io_dataIn (popToPushGray[4:0] ), //i
+ .io_dataOut (popToPushGray_buffercc_io_dataOut[4:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_5 pushToPopGray_buffercc (
+ .io_dataIn (pushToPopGray[4:0] ), //i
+ .io_dataOut (pushToPopGray_buffercc_io_dataOut[4:0]), //o
+ .dat1_o_clk (dat1_o_clk ), //i
+ .dat1_o_reset (dat1_o_reset ) //i
+ );
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(io_push_fire) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign pushCC_pushPtrPlus = (pushCC_pushPtr + 5'h01);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign pushCC_popPtrGray = popToPushGray_buffercc_io_dataOut;
+ assign pushCC_full = ((pushCC_pushPtrGray[4 : 3] == (~ pushCC_popPtrGray[4 : 3])) && (pushCC_pushPtrGray[2 : 0] == pushCC_popPtrGray[2 : 0]));
+ assign io_push_ready = (! pushCC_full);
+ assign _zz_io_pushOccupancy = (pushCC_popPtrGray[1] ^ _zz_io_pushOccupancy_1);
+ assign _zz_io_pushOccupancy_1 = (pushCC_popPtrGray[2] ^ _zz_io_pushOccupancy_2);
+ assign _zz_io_pushOccupancy_2 = (pushCC_popPtrGray[3] ^ _zz_io_pushOccupancy_3);
+ assign _zz_io_pushOccupancy_3 = pushCC_popPtrGray[4];
+ assign io_pushOccupancy = (pushCC_pushPtr - {_zz_io_pushOccupancy_3,{_zz_io_pushOccupancy_2,{_zz_io_pushOccupancy_1,{_zz_io_pushOccupancy,(pushCC_popPtrGray[0] ^ _zz_io_pushOccupancy)}}}});
+ assign popCC_popPtrPlus = (popCC_popPtr + 5'h01);
+ assign popCC_popPtrGray = (_zz_popCC_popPtrGray ^ popCC_popPtr);
+ assign popCC_pushPtrGray = pushToPopGray_buffercc_io_dataOut;
+ assign popCC_empty = (popCC_popPtrGray == popCC_pushPtrGray);
+ assign popCC_addressGen_valid = (! popCC_empty);
+ assign popCC_addressGen_payload = popCC_popPtr[3:0];
+ assign popCC_addressGen_fire = (popCC_addressGen_valid && popCC_addressGen_ready);
+ always @(*) begin
+ popCC_addressGen_ready = popCC_readArbitation_ready;
+ if(when_Stream_l375) begin
+ popCC_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! popCC_readArbitation_valid);
+ assign popCC_readArbitation_valid = popCC_addressGen_rValid;
+ assign popCC_readArbitation_payload = popCC_addressGen_rData;
+ assign _zz_popCC_readPort_rsp_data = ram_spinal_port1;
+ assign popCC_readPort_rsp_data = _zz_popCC_readPort_rsp_data[63 : 0];
+ assign popCC_readPort_rsp_mask = _zz_popCC_readPort_rsp_data[71 : 64];
+ assign popCC_readPort_rsp_sink = _zz_popCC_readPort_rsp_data[75 : 72];
+ assign popCC_readPort_rsp_last = _zz_popCC_readPort_rsp_data[76];
+ assign popCC_readPort_cmd_valid = popCC_addressGen_fire;
+ assign popCC_readPort_cmd_payload = popCC_addressGen_payload;
+ assign popCC_readArbitation_translated_valid = popCC_readArbitation_valid;
+ assign popCC_readArbitation_ready = popCC_readArbitation_translated_ready;
+ assign popCC_readArbitation_translated_payload_data = popCC_readPort_rsp_data;
+ assign popCC_readArbitation_translated_payload_mask = popCC_readPort_rsp_mask;
+ assign popCC_readArbitation_translated_payload_sink = popCC_readPort_rsp_sink;
+ assign popCC_readArbitation_translated_payload_last = popCC_readPort_rsp_last;
+ assign io_pop_valid = popCC_readArbitation_translated_valid;
+ assign popCC_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_data = popCC_readArbitation_translated_payload_data;
+ assign io_pop_payload_mask = popCC_readArbitation_translated_payload_mask;
+ assign io_pop_payload_sink = popCC_readArbitation_translated_payload_sink;
+ assign io_pop_payload_last = popCC_readArbitation_translated_payload_last;
+ assign popCC_readArbitation_fire = (popCC_readArbitation_valid && popCC_readArbitation_ready);
+ assign _zz_io_popOccupancy = (popCC_pushPtrGray[1] ^ _zz_io_popOccupancy_1);
+ assign _zz_io_popOccupancy_1 = (popCC_pushPtrGray[2] ^ _zz_io_popOccupancy_2);
+ assign _zz_io_popOccupancy_2 = (popCC_pushPtrGray[3] ^ _zz_io_popOccupancy_3);
+ assign _zz_io_popOccupancy_3 = popCC_pushPtrGray[4];
+ assign io_popOccupancy = ({_zz_io_popOccupancy_3,{_zz_io_popOccupancy_2,{_zz_io_popOccupancy_1,{_zz_io_popOccupancy,(popCC_pushPtrGray[0] ^ _zz_io_popOccupancy)}}}} - popCC_ptrToOccupancy);
+ assign pushToPopGray = pushCC_pushPtrGray;
+ assign popToPushGray = popCC_ptrToPush;
+ always @(posedge clk) begin
+ if(reset) begin
+ pushCC_pushPtr <= 5'h0;
+ pushCC_pushPtrGray <= 5'h0;
+ end else begin
+ if(io_push_fire) begin
+ pushCC_pushPtrGray <= (_zz_pushCC_pushPtrGray ^ pushCC_pushPtrPlus);
+ end
+ if(io_push_fire) begin
+ pushCC_pushPtr <= pushCC_pushPtrPlus;
+ end
+ end
+ end
+
+ always @(posedge dat1_o_clk) begin
+ if(dat1_o_reset) begin
+ popCC_popPtr <= 5'h0;
+ popCC_addressGen_rValid <= 1'b0;
+ popCC_ptrToPush <= 5'h0;
+ popCC_ptrToOccupancy <= 5'h0;
+ end else begin
+ if(popCC_addressGen_fire) begin
+ popCC_popPtr <= popCC_popPtrPlus;
+ end
+ if(popCC_addressGen_ready) begin
+ popCC_addressGen_rValid <= popCC_addressGen_valid;
+ end
+ if(popCC_readArbitation_fire) begin
+ popCC_ptrToPush <= popCC_popPtrGray;
+ end
+ if(popCC_readArbitation_fire) begin
+ popCC_ptrToOccupancy <= popCC_popPtr;
+ end
+ end
+ end
+
+ always @(posedge dat1_o_clk) begin
+ if(popCC_addressGen_ready) begin
+ popCC_addressGen_rData <= popCC_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamFifoCC (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [63:0] io_push_payload_data,
+ input wire [7:0] io_push_payload_mask,
+ input wire [3:0] io_push_payload_sink,
+ input wire io_push_payload_last,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [63:0] io_pop_payload_data,
+ output wire [7:0] io_pop_payload_mask,
+ output wire [3:0] io_pop_payload_sink,
+ output wire io_pop_payload_last,
+ output wire [4:0] io_pushOccupancy,
+ output wire [4:0] io_popOccupancy,
+ input wire dat0_i_clk,
+ input wire dat0_i_reset,
+ input wire clk,
+ input wire reset
+);
+
+ reg [76:0] ram_spinal_port1;
+ wire [4:0] popToPushGray_buffercc_io_dataOut;
+ wire [4:0] pushToPopGray_buffercc_io_dataOut;
+ wire [4:0] _zz_pushCC_pushPtrGray;
+ wire [3:0] _zz_ram_port;
+ wire [76:0] _zz_ram_port_1;
+ wire [4:0] _zz_popCC_popPtrGray;
+ reg _zz_1;
+ wire [4:0] popToPushGray;
+ wire [4:0] pushToPopGray;
+ reg [4:0] pushCC_pushPtr;
+ wire [4:0] pushCC_pushPtrPlus;
+ wire io_push_fire;
+ reg [4:0] pushCC_pushPtrGray;
+ wire [4:0] pushCC_popPtrGray;
+ wire pushCC_full;
+ wire _zz_io_pushOccupancy;
+ wire _zz_io_pushOccupancy_1;
+ wire _zz_io_pushOccupancy_2;
+ wire _zz_io_pushOccupancy_3;
+ reg [4:0] popCC_popPtr;
+ (* keep , syn_keep *) wire [4:0] popCC_popPtrPlus /* synthesis syn_keep = 1 */ ;
+ wire [4:0] popCC_popPtrGray;
+ wire [4:0] popCC_pushPtrGray;
+ wire popCC_addressGen_valid;
+ reg popCC_addressGen_ready;
+ wire [3:0] popCC_addressGen_payload;
+ wire popCC_empty;
+ wire popCC_addressGen_fire;
+ wire popCC_readArbitation_valid;
+ wire popCC_readArbitation_ready;
+ wire [3:0] popCC_readArbitation_payload;
+ reg popCC_addressGen_rValid;
+ reg [3:0] popCC_addressGen_rData;
+ wire when_Stream_l375;
+ wire popCC_readPort_cmd_valid;
+ wire [3:0] popCC_readPort_cmd_payload;
+ wire [63:0] popCC_readPort_rsp_data;
+ wire [7:0] popCC_readPort_rsp_mask;
+ wire [3:0] popCC_readPort_rsp_sink;
+ wire popCC_readPort_rsp_last;
+ wire [76:0] _zz_popCC_readPort_rsp_data;
+ wire popCC_readArbitation_translated_valid;
+ wire popCC_readArbitation_translated_ready;
+ wire [63:0] popCC_readArbitation_translated_payload_data;
+ wire [7:0] popCC_readArbitation_translated_payload_mask;
+ wire [3:0] popCC_readArbitation_translated_payload_sink;
+ wire popCC_readArbitation_translated_payload_last;
+ wire popCC_readArbitation_fire;
+ reg [4:0] popCC_ptrToPush;
+ reg [4:0] popCC_ptrToOccupancy;
+ wire _zz_io_popOccupancy;
+ wire _zz_io_popOccupancy_1;
+ wire _zz_io_popOccupancy_2;
+ wire _zz_io_popOccupancy_3;
+ reg [76:0] ram [0:15];
+
+ assign _zz_pushCC_pushPtrGray = (pushCC_pushPtrPlus >>> 1'b1);
+ assign _zz_ram_port = pushCC_pushPtr[3:0];
+ assign _zz_popCC_popPtrGray = (popCC_popPtr >>> 1'b1);
+ assign _zz_ram_port_1 = {io_push_payload_last,{io_push_payload_sink,{io_push_payload_mask,io_push_payload_data}}};
+ always @(posedge dat0_i_clk) begin
+ if(_zz_1) begin
+ ram[_zz_ram_port] <= _zz_ram_port_1;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(popCC_readPort_cmd_valid) begin
+ ram_spinal_port1 <= ram[popCC_readPort_cmd_payload];
+ end
+ end
+
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_2 popToPushGray_buffercc (
+ .io_dataIn (popToPushGray[4:0] ), //i
+ .io_dataOut (popToPushGray_buffercc_io_dataOut[4:0]), //o
+ .dat0_i_clk (dat0_i_clk ), //i
+ .dat0_i_reset (dat0_i_reset ) //i
+ );
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_3 pushToPopGray_buffercc (
+ .io_dataIn (pushToPopGray[4:0] ), //i
+ .io_dataOut (pushToPopGray_buffercc_io_dataOut[4:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(io_push_fire) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign pushCC_pushPtrPlus = (pushCC_pushPtr + 5'h01);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign pushCC_popPtrGray = popToPushGray_buffercc_io_dataOut;
+ assign pushCC_full = ((pushCC_pushPtrGray[4 : 3] == (~ pushCC_popPtrGray[4 : 3])) && (pushCC_pushPtrGray[2 : 0] == pushCC_popPtrGray[2 : 0]));
+ assign io_push_ready = (! pushCC_full);
+ assign _zz_io_pushOccupancy = (pushCC_popPtrGray[1] ^ _zz_io_pushOccupancy_1);
+ assign _zz_io_pushOccupancy_1 = (pushCC_popPtrGray[2] ^ _zz_io_pushOccupancy_2);
+ assign _zz_io_pushOccupancy_2 = (pushCC_popPtrGray[3] ^ _zz_io_pushOccupancy_3);
+ assign _zz_io_pushOccupancy_3 = pushCC_popPtrGray[4];
+ assign io_pushOccupancy = (pushCC_pushPtr - {_zz_io_pushOccupancy_3,{_zz_io_pushOccupancy_2,{_zz_io_pushOccupancy_1,{_zz_io_pushOccupancy,(pushCC_popPtrGray[0] ^ _zz_io_pushOccupancy)}}}});
+ assign popCC_popPtrPlus = (popCC_popPtr + 5'h01);
+ assign popCC_popPtrGray = (_zz_popCC_popPtrGray ^ popCC_popPtr);
+ assign popCC_pushPtrGray = pushToPopGray_buffercc_io_dataOut;
+ assign popCC_empty = (popCC_popPtrGray == popCC_pushPtrGray);
+ assign popCC_addressGen_valid = (! popCC_empty);
+ assign popCC_addressGen_payload = popCC_popPtr[3:0];
+ assign popCC_addressGen_fire = (popCC_addressGen_valid && popCC_addressGen_ready);
+ always @(*) begin
+ popCC_addressGen_ready = popCC_readArbitation_ready;
+ if(when_Stream_l375) begin
+ popCC_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! popCC_readArbitation_valid);
+ assign popCC_readArbitation_valid = popCC_addressGen_rValid;
+ assign popCC_readArbitation_payload = popCC_addressGen_rData;
+ assign _zz_popCC_readPort_rsp_data = ram_spinal_port1;
+ assign popCC_readPort_rsp_data = _zz_popCC_readPort_rsp_data[63 : 0];
+ assign popCC_readPort_rsp_mask = _zz_popCC_readPort_rsp_data[71 : 64];
+ assign popCC_readPort_rsp_sink = _zz_popCC_readPort_rsp_data[75 : 72];
+ assign popCC_readPort_rsp_last = _zz_popCC_readPort_rsp_data[76];
+ assign popCC_readPort_cmd_valid = popCC_addressGen_fire;
+ assign popCC_readPort_cmd_payload = popCC_addressGen_payload;
+ assign popCC_readArbitation_translated_valid = popCC_readArbitation_valid;
+ assign popCC_readArbitation_ready = popCC_readArbitation_translated_ready;
+ assign popCC_readArbitation_translated_payload_data = popCC_readPort_rsp_data;
+ assign popCC_readArbitation_translated_payload_mask = popCC_readPort_rsp_mask;
+ assign popCC_readArbitation_translated_payload_sink = popCC_readPort_rsp_sink;
+ assign popCC_readArbitation_translated_payload_last = popCC_readPort_rsp_last;
+ assign io_pop_valid = popCC_readArbitation_translated_valid;
+ assign popCC_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_data = popCC_readArbitation_translated_payload_data;
+ assign io_pop_payload_mask = popCC_readArbitation_translated_payload_mask;
+ assign io_pop_payload_sink = popCC_readArbitation_translated_payload_sink;
+ assign io_pop_payload_last = popCC_readArbitation_translated_payload_last;
+ assign popCC_readArbitation_fire = (popCC_readArbitation_valid && popCC_readArbitation_ready);
+ assign _zz_io_popOccupancy = (popCC_pushPtrGray[1] ^ _zz_io_popOccupancy_1);
+ assign _zz_io_popOccupancy_1 = (popCC_pushPtrGray[2] ^ _zz_io_popOccupancy_2);
+ assign _zz_io_popOccupancy_2 = (popCC_pushPtrGray[3] ^ _zz_io_popOccupancy_3);
+ assign _zz_io_popOccupancy_3 = popCC_pushPtrGray[4];
+ assign io_popOccupancy = ({_zz_io_popOccupancy_3,{_zz_io_popOccupancy_2,{_zz_io_popOccupancy_1,{_zz_io_popOccupancy,(popCC_pushPtrGray[0] ^ _zz_io_popOccupancy)}}}} - popCC_ptrToOccupancy);
+ assign pushToPopGray = pushCC_pushPtrGray;
+ assign popToPushGray = popCC_ptrToPush;
+ always @(posedge dat0_i_clk) begin
+ if(dat0_i_reset) begin
+ pushCC_pushPtr <= 5'h0;
+ pushCC_pushPtrGray <= 5'h0;
+ end else begin
+ if(io_push_fire) begin
+ pushCC_pushPtrGray <= (_zz_pushCC_pushPtrGray ^ pushCC_pushPtrPlus);
+ end
+ if(io_push_fire) begin
+ pushCC_pushPtr <= pushCC_pushPtrPlus;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ popCC_popPtr <= 5'h0;
+ popCC_addressGen_rValid <= 1'b0;
+ popCC_ptrToPush <= 5'h0;
+ popCC_ptrToOccupancy <= 5'h0;
+ end else begin
+ if(popCC_addressGen_fire) begin
+ popCC_popPtr <= popCC_popPtrPlus;
+ end
+ if(popCC_addressGen_ready) begin
+ popCC_addressGen_rValid <= popCC_addressGen_valid;
+ end
+ if(popCC_readArbitation_fire) begin
+ popCC_ptrToPush <= popCC_popPtrGray;
+ end
+ if(popCC_readArbitation_fire) begin
+ popCC_ptrToOccupancy <= popCC_popPtr;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(popCC_addressGen_ready) begin
+ popCC_addressGen_rData <= popCC_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BsbUpSizerDense (
+ input wire io_input_valid,
+ output wire io_input_ready,
+ input wire [7:0] io_input_payload_data,
+ input wire [0:0] io_input_payload_mask,
+ input wire [3:0] io_input_payload_sink,
+ input wire io_input_payload_last,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire [63:0] io_output_payload_data,
+ output wire [7:0] io_output_payload_mask,
+ output wire [3:0] io_output_payload_sink,
+ output wire io_output_payload_last,
+ input wire dat0_i_clk,
+ input wire dat0_i_reset
+);
+
+ reg valid;
+ reg [2:0] counter;
+ reg [63:0] buffer_data;
+ reg [7:0] buffer_mask;
+ reg [3:0] buffer_sink;
+ reg buffer_last;
+ wire full;
+ wire canAggregate;
+ wire onOutput;
+ wire [2:0] counterSample;
+ wire io_output_fire;
+ wire io_input_fire;
+ wire [7:0] _zz_1;
+ wire [7:0] _zz_2;
+
+ assign full = ((counter == 3'b000) || buffer_last);
+ assign canAggregate = ((((valid && (! buffer_last)) && (! full)) && 1'b1) && (buffer_sink == io_input_payload_sink));
+ assign counterSample = (canAggregate ? counter : 3'b000);
+ assign io_output_fire = (io_output_valid && io_output_ready);
+ assign io_input_fire = (io_input_valid && io_input_ready);
+ assign _zz_1 = ({7'd0,1'b1} <<< counterSample);
+ assign _zz_2 = ({7'd0,1'b1} <<< counterSample);
+ assign io_output_valid = (valid && ((valid && full) || (io_input_valid && (! canAggregate))));
+ assign io_output_payload_data = buffer_data;
+ assign io_output_payload_mask = buffer_mask;
+ assign io_output_payload_sink = buffer_sink;
+ assign io_output_payload_last = buffer_last;
+ assign io_input_ready = (((! valid) || canAggregate) || io_output_ready);
+ always @(posedge dat0_i_clk) begin
+ if(dat0_i_reset) begin
+ valid <= 1'b0;
+ counter <= 3'b000;
+ buffer_last <= 1'b0;
+ buffer_mask <= 8'h0;
+ end else begin
+ if(io_output_fire) begin
+ valid <= 1'b0;
+ buffer_mask <= 8'h0;
+ end
+ if(io_input_fire) begin
+ valid <= 1'b1;
+ if(_zz_2[0]) begin
+ buffer_mask[0 : 0] <= io_input_payload_mask;
+ end
+ if(_zz_2[1]) begin
+ buffer_mask[1 : 1] <= io_input_payload_mask;
+ end
+ if(_zz_2[2]) begin
+ buffer_mask[2 : 2] <= io_input_payload_mask;
+ end
+ if(_zz_2[3]) begin
+ buffer_mask[3 : 3] <= io_input_payload_mask;
+ end
+ if(_zz_2[4]) begin
+ buffer_mask[4 : 4] <= io_input_payload_mask;
+ end
+ if(_zz_2[5]) begin
+ buffer_mask[5 : 5] <= io_input_payload_mask;
+ end
+ if(_zz_2[6]) begin
+ buffer_mask[6 : 6] <= io_input_payload_mask;
+ end
+ if(_zz_2[7]) begin
+ buffer_mask[7 : 7] <= io_input_payload_mask;
+ end
+ buffer_last <= io_input_payload_last;
+ counter <= (counterSample + 3'b001);
+ end
+ end
+ end
+
+ always @(posedge dat0_i_clk) begin
+ if(io_input_fire) begin
+ buffer_sink <= io_input_payload_sink;
+ if(_zz_1[0]) begin
+ buffer_data[7 : 0] <= io_input_payload_data;
+ end
+ if(_zz_1[1]) begin
+ buffer_data[15 : 8] <= io_input_payload_data;
+ end
+ if(_zz_1[2]) begin
+ buffer_data[23 : 16] <= io_input_payload_data;
+ end
+ if(_zz_1[3]) begin
+ buffer_data[31 : 24] <= io_input_payload_data;
+ end
+ if(_zz_1[4]) begin
+ buffer_data[39 : 32] <= io_input_payload_data;
+ end
+ if(_zz_1[5]) begin
+ buffer_data[47 : 40] <= io_input_payload_data;
+ end
+ if(_zz_1[6]) begin
+ buffer_data[55 : 48] <= io_input_payload_data;
+ end
+ if(_zz_1[7]) begin
+ buffer_data[63 : 56] <= io_input_payload_data;
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbToAxi4WriteOnlyBridge (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [127:0] io_input_cmd_payload_fragment_data,
+ input wire [15:0] io_input_cmd_payload_fragment_mask,
+ input wire [13:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [13:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_aw_valid,
+ input wire io_output_aw_ready,
+ output wire [31:0] io_output_aw_payload_addr,
+ output wire [7:0] io_output_aw_payload_len,
+ output wire [2:0] io_output_aw_payload_size,
+ output wire [3:0] io_output_aw_payload_cache,
+ output wire [2:0] io_output_aw_payload_prot,
+ output wire io_output_w_valid,
+ input wire io_output_w_ready,
+ output wire [127:0] io_output_w_payload_data,
+ output wire [15:0] io_output_w_payload_strb,
+ output wire io_output_w_payload_last,
+ input wire io_output_b_valid,
+ output wire io_output_b_ready,
+ input wire [1:0] io_output_b_payload_resp,
+ input wire clk,
+ input wire reset
+);
+
+ reg contextRemover_io_output_cmd_ready;
+ reg [0:0] contextRemover_io_output_rsp_payload_fragment_opcode;
+ wire contextRemover_io_input_cmd_ready;
+ wire contextRemover_io_input_rsp_valid;
+ wire contextRemover_io_input_rsp_payload_last;
+ wire [0:0] contextRemover_io_input_rsp_payload_fragment_opcode;
+ wire [13:0] contextRemover_io_input_rsp_payload_fragment_context;
+ wire contextRemover_io_output_cmd_valid;
+ wire contextRemover_io_output_cmd_payload_last;
+ wire [0:0] contextRemover_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] contextRemover_io_output_cmd_payload_fragment_address;
+ wire [11:0] contextRemover_io_output_cmd_payload_fragment_length;
+ wire [127:0] contextRemover_io_output_cmd_payload_fragment_data;
+ wire [15:0] contextRemover_io_output_cmd_payload_fragment_mask;
+ wire contextRemover_io_output_rsp_ready;
+ wire [8:0] _zz_io_output_aw_payload_len;
+ wire [12:0] _zz_io_output_aw_payload_len_1;
+ wire [12:0] _zz_io_output_aw_payload_len_2;
+ wire [3:0] _zz_io_output_aw_payload_len_3;
+ wire cmdFork_valid;
+ reg cmdFork_ready;
+ wire cmdFork_payload_last;
+ wire [0:0] cmdFork_payload_fragment_opcode;
+ wire [31:0] cmdFork_payload_fragment_address;
+ wire [11:0] cmdFork_payload_fragment_length;
+ wire [127:0] cmdFork_payload_fragment_data;
+ wire [15:0] cmdFork_payload_fragment_mask;
+ wire dataFork_valid;
+ wire dataFork_ready;
+ wire dataFork_payload_last;
+ wire [0:0] dataFork_payload_fragment_opcode;
+ wire [31:0] dataFork_payload_fragment_address;
+ wire [11:0] dataFork_payload_fragment_length;
+ wire [127:0] dataFork_payload_fragment_data;
+ wire [15:0] dataFork_payload_fragment_mask;
+ reg contextRemover_io_output_cmd_fork2_logic_linkEnable_0;
+ reg contextRemover_io_output_cmd_fork2_logic_linkEnable_1;
+ wire when_Stream_l1063;
+ wire when_Stream_l1063_1;
+ wire cmdFork_fire;
+ wire dataFork_fire;
+ wire contextRemover_io_output_cmd_fire;
+ reg contextRemover_io_output_cmd_payload_first;
+ wire when_Stream_l445;
+ reg cmdStage_valid;
+ wire cmdStage_ready;
+ wire cmdStage_payload_last;
+ wire [0:0] cmdStage_payload_fragment_opcode;
+ wire [31:0] cmdStage_payload_fragment_address;
+ wire [11:0] cmdStage_payload_fragment_length;
+ wire [127:0] cmdStage_payload_fragment_data;
+ wire [15:0] cmdStage_payload_fragment_mask;
+ wire when_BmbToAxi4Bridge_l297;
+
+ assign _zz_io_output_aw_payload_len = _zz_io_output_aw_payload_len_1[12 : 4];
+ assign _zz_io_output_aw_payload_len_1 = ({1'b0,cmdStage_payload_fragment_length} + _zz_io_output_aw_payload_len_2);
+ assign _zz_io_output_aw_payload_len_3 = cmdStage_payload_fragment_address[3 : 0];
+ assign _zz_io_output_aw_payload_len_2 = {9'd0, _zz_io_output_aw_payload_len_3};
+ EfxDMA_BmbContextRemover_1 contextRemover (
+ .io_input_cmd_valid (io_input_cmd_valid ), //i
+ .io_input_cmd_ready (contextRemover_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (io_input_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (io_input_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (io_input_cmd_payload_fragment_address[31:0] ), //i
+ .io_input_cmd_payload_fragment_length (io_input_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_data (io_input_cmd_payload_fragment_data[127:0] ), //i
+ .io_input_cmd_payload_fragment_mask (io_input_cmd_payload_fragment_mask[15:0] ), //i
+ .io_input_cmd_payload_fragment_context (io_input_cmd_payload_fragment_context[13:0] ), //i
+ .io_input_rsp_valid (contextRemover_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (io_input_rsp_ready ), //i
+ .io_input_rsp_payload_last (contextRemover_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (contextRemover_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_context (contextRemover_io_input_rsp_payload_fragment_context[13:0] ), //o
+ .io_output_cmd_valid (contextRemover_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (contextRemover_io_output_cmd_ready ), //i
+ .io_output_cmd_payload_last (contextRemover_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_opcode (contextRemover_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (contextRemover_io_output_cmd_payload_fragment_address[31:0]), //o
+ .io_output_cmd_payload_fragment_length (contextRemover_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_cmd_payload_fragment_data (contextRemover_io_output_cmd_payload_fragment_data[127:0] ), //o
+ .io_output_cmd_payload_fragment_mask (contextRemover_io_output_cmd_payload_fragment_mask[15:0] ), //o
+ .io_output_rsp_valid (io_output_b_valid ), //i
+ .io_output_rsp_ready (contextRemover_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (1'b1 ), //i
+ .io_output_rsp_payload_fragment_opcode (contextRemover_io_output_rsp_payload_fragment_opcode ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign io_input_cmd_ready = contextRemover_io_input_cmd_ready;
+ assign io_input_rsp_valid = contextRemover_io_input_rsp_valid;
+ assign io_input_rsp_payload_last = contextRemover_io_input_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = contextRemover_io_input_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_context = contextRemover_io_input_rsp_payload_fragment_context;
+ always @(*) begin
+ contextRemover_io_output_cmd_ready = 1'b1;
+ if(when_Stream_l1063) begin
+ contextRemover_io_output_cmd_ready = 1'b0;
+ end
+ if(when_Stream_l1063_1) begin
+ contextRemover_io_output_cmd_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l1063 = ((! cmdFork_ready) && contextRemover_io_output_cmd_fork2_logic_linkEnable_0);
+ assign when_Stream_l1063_1 = ((! dataFork_ready) && contextRemover_io_output_cmd_fork2_logic_linkEnable_1);
+ assign cmdFork_valid = (contextRemover_io_output_cmd_valid && contextRemover_io_output_cmd_fork2_logic_linkEnable_0);
+ assign cmdFork_payload_last = contextRemover_io_output_cmd_payload_last;
+ assign cmdFork_payload_fragment_opcode = contextRemover_io_output_cmd_payload_fragment_opcode;
+ assign cmdFork_payload_fragment_address = contextRemover_io_output_cmd_payload_fragment_address;
+ assign cmdFork_payload_fragment_length = contextRemover_io_output_cmd_payload_fragment_length;
+ assign cmdFork_payload_fragment_data = contextRemover_io_output_cmd_payload_fragment_data;
+ assign cmdFork_payload_fragment_mask = contextRemover_io_output_cmd_payload_fragment_mask;
+ assign cmdFork_fire = (cmdFork_valid && cmdFork_ready);
+ assign dataFork_valid = (contextRemover_io_output_cmd_valid && contextRemover_io_output_cmd_fork2_logic_linkEnable_1);
+ assign dataFork_payload_last = contextRemover_io_output_cmd_payload_last;
+ assign dataFork_payload_fragment_opcode = contextRemover_io_output_cmd_payload_fragment_opcode;
+ assign dataFork_payload_fragment_address = contextRemover_io_output_cmd_payload_fragment_address;
+ assign dataFork_payload_fragment_length = contextRemover_io_output_cmd_payload_fragment_length;
+ assign dataFork_payload_fragment_data = contextRemover_io_output_cmd_payload_fragment_data;
+ assign dataFork_payload_fragment_mask = contextRemover_io_output_cmd_payload_fragment_mask;
+ assign dataFork_fire = (dataFork_valid && dataFork_ready);
+ assign contextRemover_io_output_cmd_fire = (contextRemover_io_output_cmd_valid && contextRemover_io_output_cmd_ready);
+ assign when_Stream_l445 = (! contextRemover_io_output_cmd_payload_first);
+ always @(*) begin
+ cmdStage_valid = cmdFork_valid;
+ if(when_Stream_l445) begin
+ cmdStage_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ cmdFork_ready = cmdStage_ready;
+ if(when_Stream_l445) begin
+ cmdFork_ready = 1'b1;
+ end
+ end
+
+ assign cmdStage_payload_last = cmdFork_payload_last;
+ assign cmdStage_payload_fragment_opcode = cmdFork_payload_fragment_opcode;
+ assign cmdStage_payload_fragment_address = cmdFork_payload_fragment_address;
+ assign cmdStage_payload_fragment_length = cmdFork_payload_fragment_length;
+ assign cmdStage_payload_fragment_data = cmdFork_payload_fragment_data;
+ assign cmdStage_payload_fragment_mask = cmdFork_payload_fragment_mask;
+ assign io_output_aw_valid = cmdStage_valid;
+ assign cmdStage_ready = io_output_aw_ready;
+ assign io_output_aw_payload_addr = cmdStage_payload_fragment_address;
+ assign io_output_aw_payload_len = _zz_io_output_aw_payload_len[7:0];
+ assign io_output_aw_payload_size = 3'b100;
+ assign io_output_aw_payload_prot = 3'b010;
+ assign io_output_aw_payload_cache = 4'b1111;
+ assign io_output_w_valid = dataFork_valid;
+ assign dataFork_ready = io_output_w_ready;
+ assign io_output_w_payload_data = dataFork_payload_fragment_data;
+ assign io_output_w_payload_strb = dataFork_payload_fragment_mask;
+ assign io_output_w_payload_last = dataFork_payload_last;
+ assign io_output_b_ready = contextRemover_io_output_rsp_ready;
+ assign when_BmbToAxi4Bridge_l297 = (io_output_b_payload_resp == 2'b00);
+ always @(*) begin
+ if(when_BmbToAxi4Bridge_l297) begin
+ contextRemover_io_output_rsp_payload_fragment_opcode = 1'b0;
+ end else begin
+ contextRemover_io_output_rsp_payload_fragment_opcode = 1'b1;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ contextRemover_io_output_cmd_payload_first <= 1'b1;
+ end else begin
+ if(cmdFork_fire) begin
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(dataFork_fire) begin
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(contextRemover_io_output_cmd_ready) begin
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ contextRemover_io_output_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(contextRemover_io_output_cmd_fire) begin
+ contextRemover_io_output_cmd_payload_first <= contextRemover_io_output_cmd_payload_last;
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbSourceRemover_1 (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_source,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [127:0] io_input_cmd_payload_fragment_data,
+ input wire [15:0] io_input_cmd_payload_fragment_mask,
+ input wire [12:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_source,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [12:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ output wire [127:0] io_output_cmd_payload_fragment_data,
+ output wire [15:0] io_output_cmd_payload_fragment_mask,
+ output wire [13:0] io_output_cmd_payload_fragment_context,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [13:0] io_output_rsp_payload_fragment_context
+);
+
+ wire [0:0] cmdContext_source;
+ wire [12:0] cmdContext_context;
+ wire [0:0] rspContext_source;
+ wire [12:0] rspContext_context;
+ wire [13:0] _zz_rspContext_source;
+
+ assign cmdContext_source = io_input_cmd_payload_fragment_source;
+ assign cmdContext_context = io_input_cmd_payload_fragment_context;
+ assign io_output_cmd_valid = io_input_cmd_valid;
+ assign io_input_cmd_ready = io_output_cmd_ready;
+ assign io_output_cmd_payload_last = io_input_cmd_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign io_output_cmd_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign io_output_cmd_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign io_output_cmd_payload_fragment_context = {cmdContext_context,cmdContext_source};
+ assign _zz_rspContext_source = io_output_rsp_payload_fragment_context;
+ assign rspContext_source = _zz_rspContext_source[0 : 0];
+ assign rspContext_context = _zz_rspContext_source[13 : 1];
+ assign io_input_rsp_valid = io_output_rsp_valid;
+ assign io_output_rsp_ready = io_input_rsp_ready;
+ assign io_input_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_source = rspContext_source;
+ assign io_input_rsp_payload_fragment_context = rspContext_context;
+
+endmodule
+
+module EfxDMA_BmbToAxi4ReadOnlyBridge (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [21:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [127:0] io_input_rsp_payload_fragment_data,
+ output wire [21:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_ar_valid,
+ input wire io_output_ar_ready,
+ output wire [31:0] io_output_ar_payload_addr,
+ output wire [7:0] io_output_ar_payload_len,
+ output wire [2:0] io_output_ar_payload_size,
+ output wire [3:0] io_output_ar_payload_cache,
+ output wire [2:0] io_output_ar_payload_prot,
+ input wire io_output_r_valid,
+ output wire io_output_r_ready,
+ input wire [127:0] io_output_r_payload_data,
+ input wire [1:0] io_output_r_payload_resp,
+ input wire io_output_r_payload_last,
+ input wire clk,
+ input wire reset
+);
+
+ reg [0:0] contextRemover_io_output_rsp_payload_fragment_opcode;
+ wire contextRemover_io_input_cmd_ready;
+ wire contextRemover_io_input_rsp_valid;
+ wire contextRemover_io_input_rsp_payload_last;
+ wire [0:0] contextRemover_io_input_rsp_payload_fragment_opcode;
+ wire [127:0] contextRemover_io_input_rsp_payload_fragment_data;
+ wire [21:0] contextRemover_io_input_rsp_payload_fragment_context;
+ wire contextRemover_io_output_cmd_valid;
+ wire contextRemover_io_output_cmd_payload_last;
+ wire [0:0] contextRemover_io_output_cmd_payload_fragment_opcode;
+ wire [31:0] contextRemover_io_output_cmd_payload_fragment_address;
+ wire [11:0] contextRemover_io_output_cmd_payload_fragment_length;
+ wire contextRemover_io_output_rsp_ready;
+ wire [8:0] _zz_io_output_ar_payload_len;
+ wire [12:0] _zz_io_output_ar_payload_len_1;
+ wire [12:0] _zz_io_output_ar_payload_len_2;
+ wire [3:0] _zz_io_output_ar_payload_len_3;
+ wire when_BmbToAxi4Bridge_l243;
+
+ assign _zz_io_output_ar_payload_len = _zz_io_output_ar_payload_len_1[12 : 4];
+ assign _zz_io_output_ar_payload_len_1 = ({1'b0,contextRemover_io_output_cmd_payload_fragment_length} + _zz_io_output_ar_payload_len_2);
+ assign _zz_io_output_ar_payload_len_3 = contextRemover_io_output_cmd_payload_fragment_address[3 : 0];
+ assign _zz_io_output_ar_payload_len_2 = {9'd0, _zz_io_output_ar_payload_len_3};
+ EfxDMA_BmbContextRemover contextRemover (
+ .io_input_cmd_valid (io_input_cmd_valid ), //i
+ .io_input_cmd_ready (contextRemover_io_input_cmd_ready ), //o
+ .io_input_cmd_payload_last (io_input_cmd_payload_last ), //i
+ .io_input_cmd_payload_fragment_opcode (io_input_cmd_payload_fragment_opcode ), //i
+ .io_input_cmd_payload_fragment_address (io_input_cmd_payload_fragment_address[31:0] ), //i
+ .io_input_cmd_payload_fragment_length (io_input_cmd_payload_fragment_length[11:0] ), //i
+ .io_input_cmd_payload_fragment_context (io_input_cmd_payload_fragment_context[21:0] ), //i
+ .io_input_rsp_valid (contextRemover_io_input_rsp_valid ), //o
+ .io_input_rsp_ready (io_input_rsp_ready ), //i
+ .io_input_rsp_payload_last (contextRemover_io_input_rsp_payload_last ), //o
+ .io_input_rsp_payload_fragment_opcode (contextRemover_io_input_rsp_payload_fragment_opcode ), //o
+ .io_input_rsp_payload_fragment_data (contextRemover_io_input_rsp_payload_fragment_data[127:0] ), //o
+ .io_input_rsp_payload_fragment_context (contextRemover_io_input_rsp_payload_fragment_context[21:0] ), //o
+ .io_output_cmd_valid (contextRemover_io_output_cmd_valid ), //o
+ .io_output_cmd_ready (io_output_ar_ready ), //i
+ .io_output_cmd_payload_last (contextRemover_io_output_cmd_payload_last ), //o
+ .io_output_cmd_payload_fragment_opcode (contextRemover_io_output_cmd_payload_fragment_opcode ), //o
+ .io_output_cmd_payload_fragment_address (contextRemover_io_output_cmd_payload_fragment_address[31:0]), //o
+ .io_output_cmd_payload_fragment_length (contextRemover_io_output_cmd_payload_fragment_length[11:0] ), //o
+ .io_output_rsp_valid (io_output_r_valid ), //i
+ .io_output_rsp_ready (contextRemover_io_output_rsp_ready ), //o
+ .io_output_rsp_payload_last (io_output_r_payload_last ), //i
+ .io_output_rsp_payload_fragment_opcode (contextRemover_io_output_rsp_payload_fragment_opcode ), //i
+ .io_output_rsp_payload_fragment_data (io_output_r_payload_data[127:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign io_input_cmd_ready = contextRemover_io_input_cmd_ready;
+ assign io_input_rsp_valid = contextRemover_io_input_rsp_valid;
+ assign io_input_rsp_payload_last = contextRemover_io_input_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = contextRemover_io_input_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_data = contextRemover_io_input_rsp_payload_fragment_data;
+ assign io_input_rsp_payload_fragment_context = contextRemover_io_input_rsp_payload_fragment_context;
+ assign io_output_ar_valid = contextRemover_io_output_cmd_valid;
+ assign io_output_ar_payload_addr = contextRemover_io_output_cmd_payload_fragment_address;
+ assign io_output_ar_payload_len = _zz_io_output_ar_payload_len[7:0];
+ assign io_output_ar_payload_size = 3'b100;
+ assign io_output_ar_payload_prot = 3'b010;
+ assign io_output_ar_payload_cache = 4'b1111;
+ assign io_output_r_ready = contextRemover_io_output_rsp_ready;
+ assign when_BmbToAxi4Bridge_l243 = (io_output_r_payload_resp == 2'b00);
+ always @(*) begin
+ if(when_BmbToAxi4Bridge_l243) begin
+ contextRemover_io_output_rsp_payload_fragment_opcode = 1'b0;
+ end else begin
+ contextRemover_io_output_rsp_payload_fragment_opcode = 1'b1;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbSourceRemover (
+ input wire io_input_cmd_valid,
+ output wire io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_source,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [20:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_source,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [127:0] io_input_rsp_payload_fragment_data,
+ output wire [20:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ output wire [21:0] io_output_cmd_payload_fragment_context,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [127:0] io_output_rsp_payload_fragment_data,
+ input wire [21:0] io_output_rsp_payload_fragment_context
+);
+
+ wire [0:0] cmdContext_source;
+ wire [20:0] cmdContext_context;
+ wire [0:0] rspContext_source;
+ wire [20:0] rspContext_context;
+ wire [21:0] _zz_rspContext_source;
+
+ assign cmdContext_source = io_input_cmd_payload_fragment_source;
+ assign cmdContext_context = io_input_cmd_payload_fragment_context;
+ assign io_output_cmd_valid = io_input_cmd_valid;
+ assign io_input_cmd_ready = io_output_cmd_ready;
+ assign io_output_cmd_payload_last = io_input_cmd_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign io_output_cmd_payload_fragment_context = {cmdContext_context,cmdContext_source};
+ assign _zz_rspContext_source = io_output_rsp_payload_fragment_context;
+ assign rspContext_source = _zz_rspContext_source[0 : 0];
+ assign rspContext_context = _zz_rspContext_source[21 : 1];
+ assign io_input_rsp_valid = io_output_rsp_valid;
+ assign io_output_rsp_ready = io_input_rsp_ready;
+ assign io_input_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ assign io_input_rsp_payload_fragment_source = rspContext_source;
+ assign io_input_rsp_payload_fragment_context = rspContext_context;
+
+endmodule
+
+module EfxDMA_BufferCC_6 (
+ input wire [1:0] io_dataIn,
+ output wire [1:0] io_dataOut,
+ input wire ctrl_clk,
+ input wire ctrl_reset
+);
+
+ (* async_reg = "true" *) reg [1:0] buffers_0;
+ (* async_reg = "true" *) reg [1:0] buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge ctrl_clk) begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+
+
+endmodule
+
+module EfxDMA_Apb3CC (
+ input wire [13:0] io_input_PADDR,
+ input wire [0:0] io_input_PSEL,
+ input wire io_input_PENABLE,
+ output wire io_input_PREADY,
+ input wire io_input_PWRITE,
+ input wire [31:0] io_input_PWDATA,
+ output wire [31:0] io_input_PRDATA,
+ output wire io_input_PSLVERROR,
+ output wire [13:0] io_output_PADDR,
+ output reg [0:0] io_output_PSEL,
+ output reg io_output_PENABLE,
+ input wire io_output_PREADY,
+ output wire io_output_PWRITE,
+ output wire [31:0] io_output_PWDATA,
+ input wire [31:0] io_output_PRDATA,
+ input wire io_output_PSLVERROR,
+ input wire ctrl_clk,
+ input wire ctrl_reset,
+ input wire clk,
+ input wire reset
+);
+
+ wire flowCCUnsafeByToggle_io_output_valid;
+ wire [13:0] flowCCUnsafeByToggle_io_output_payload_PADDR;
+ wire flowCCUnsafeByToggle_io_output_payload_PWRITE;
+ wire [31:0] flowCCUnsafeByToggle_io_output_payload_PWDATA;
+ wire flowCCUnsafeByToggle_1_io_output_valid;
+ wire [31:0] flowCCUnsafeByToggle_1_io_output_payload_PRDATA;
+ wire flowCCUnsafeByToggle_1_io_output_payload_PSLVERROR;
+ wire inputLogic_inputCmd_valid;
+ wire [13:0] inputLogic_inputCmd_payload_PADDR;
+ wire inputLogic_inputCmd_payload_PWRITE;
+ wire [31:0] inputLogic_inputCmd_payload_PWDATA;
+ wire inputLogic_inputRsp_valid;
+ wire [31:0] inputLogic_inputRsp_payload_PRDATA;
+ wire inputLogic_inputRsp_payload_PSLVERROR;
+ reg inputLogic_state;
+ wire flowCCUnsafeByToggle_io_output_toStream_valid;
+ reg flowCCUnsafeByToggle_io_output_toStream_ready;
+ wire [13:0] flowCCUnsafeByToggle_io_output_toStream_payload_PADDR;
+ wire flowCCUnsafeByToggle_io_output_toStream_payload_PWRITE;
+ wire [31:0] flowCCUnsafeByToggle_io_output_toStream_payload_PWDATA;
+ wire outputLogic_outputCmd_valid;
+ reg outputLogic_outputCmd_ready;
+ wire [13:0] outputLogic_outputCmd_payload_PADDR;
+ wire outputLogic_outputCmd_payload_PWRITE;
+ wire [31:0] outputLogic_outputCmd_payload_PWDATA;
+ reg flowCCUnsafeByToggle_io_output_toStream_rValid;
+ wire flowCCUnsafeByToggle_io_output_toStream_fire;
+ (* async_reg = "true" *) reg [13:0] flowCCUnsafeByToggle_io_output_toStream_rData_PADDR;
+ (* async_reg = "true" *) reg flowCCUnsafeByToggle_io_output_toStream_rData_PWRITE;
+ (* async_reg = "true" *) reg [31:0] flowCCUnsafeByToggle_io_output_toStream_rData_PWDATA;
+ wire when_Stream_l375;
+ reg outputLogic_state;
+ wire when_Apb3CCToggle_l81;
+ wire outputLogic_outputRsp_valid;
+ wire [31:0] outputLogic_outputRsp_payload_PRDATA;
+ wire outputLogic_outputRsp_payload_PSLVERROR;
+ wire outputLogic_outputCmd_fire;
+
+ EfxDMA_FlowCCUnsafeByToggle flowCCUnsafeByToggle (
+ .io_input_valid (inputLogic_inputCmd_valid ), //i
+ .io_input_payload_PADDR (inputLogic_inputCmd_payload_PADDR[13:0] ), //i
+ .io_input_payload_PWRITE (inputLogic_inputCmd_payload_PWRITE ), //i
+ .io_input_payload_PWDATA (inputLogic_inputCmd_payload_PWDATA[31:0] ), //i
+ .io_output_valid (flowCCUnsafeByToggle_io_output_valid ), //o
+ .io_output_payload_PADDR (flowCCUnsafeByToggle_io_output_payload_PADDR[13:0] ), //o
+ .io_output_payload_PWRITE (flowCCUnsafeByToggle_io_output_payload_PWRITE ), //o
+ .io_output_payload_PWDATA (flowCCUnsafeByToggle_io_output_payload_PWDATA[31:0]), //o
+ .ctrl_clk (ctrl_clk ), //i
+ .ctrl_reset (ctrl_reset ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_FlowCCUnsafeByToggle_1 flowCCUnsafeByToggle_1 (
+ .io_input_valid (outputLogic_outputRsp_valid ), //i
+ .io_input_payload_PRDATA (outputLogic_outputRsp_payload_PRDATA[31:0] ), //i
+ .io_input_payload_PSLVERROR (outputLogic_outputRsp_payload_PSLVERROR ), //i
+ .io_output_valid (flowCCUnsafeByToggle_1_io_output_valid ), //o
+ .io_output_payload_PRDATA (flowCCUnsafeByToggle_1_io_output_payload_PRDATA[31:0]), //o
+ .io_output_payload_PSLVERROR (flowCCUnsafeByToggle_1_io_output_payload_PSLVERROR ), //o
+ .clk (clk ), //i
+ .reset (reset ), //i
+ .ctrl_clk (ctrl_clk ), //i
+ .ctrl_reset (ctrl_reset ) //i
+ );
+ assign inputLogic_inputCmd_valid = ((io_input_PSEL[0] && io_input_PENABLE) && (! inputLogic_state));
+ assign inputLogic_inputCmd_payload_PADDR = io_input_PADDR;
+ assign inputLogic_inputCmd_payload_PWRITE = io_input_PWRITE;
+ assign inputLogic_inputCmd_payload_PWDATA = io_input_PWDATA;
+ assign io_input_PREADY = inputLogic_inputRsp_valid;
+ assign io_input_PRDATA = inputLogic_inputRsp_payload_PRDATA;
+ assign io_input_PSLVERROR = inputLogic_inputRsp_payload_PSLVERROR;
+ assign flowCCUnsafeByToggle_io_output_toStream_valid = flowCCUnsafeByToggle_io_output_valid;
+ assign flowCCUnsafeByToggle_io_output_toStream_payload_PADDR = flowCCUnsafeByToggle_io_output_payload_PADDR;
+ assign flowCCUnsafeByToggle_io_output_toStream_payload_PWRITE = flowCCUnsafeByToggle_io_output_payload_PWRITE;
+ assign flowCCUnsafeByToggle_io_output_toStream_payload_PWDATA = flowCCUnsafeByToggle_io_output_payload_PWDATA;
+ assign flowCCUnsafeByToggle_io_output_toStream_fire = (flowCCUnsafeByToggle_io_output_toStream_valid && flowCCUnsafeByToggle_io_output_toStream_ready);
+ always @(*) begin
+ flowCCUnsafeByToggle_io_output_toStream_ready = outputLogic_outputCmd_ready;
+ if(when_Stream_l375) begin
+ flowCCUnsafeByToggle_io_output_toStream_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! outputLogic_outputCmd_valid);
+ assign outputLogic_outputCmd_valid = flowCCUnsafeByToggle_io_output_toStream_rValid;
+ assign outputLogic_outputCmd_payload_PADDR = flowCCUnsafeByToggle_io_output_toStream_rData_PADDR;
+ assign outputLogic_outputCmd_payload_PWRITE = flowCCUnsafeByToggle_io_output_toStream_rData_PWRITE;
+ assign outputLogic_outputCmd_payload_PWDATA = flowCCUnsafeByToggle_io_output_toStream_rData_PWDATA;
+ always @(*) begin
+ io_output_PENABLE = 1'b0;
+ if(outputLogic_outputCmd_valid) begin
+ if(when_Apb3CCToggle_l81) begin
+ io_output_PENABLE = 1'b0;
+ end else begin
+ io_output_PENABLE = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ io_output_PSEL = 1'b0;
+ if(outputLogic_outputCmd_valid) begin
+ io_output_PSEL = 1'b1;
+ end
+ end
+
+ assign io_output_PADDR = outputLogic_outputCmd_payload_PADDR;
+ assign io_output_PWDATA = outputLogic_outputCmd_payload_PWDATA;
+ assign io_output_PWRITE = outputLogic_outputCmd_payload_PWRITE;
+ always @(*) begin
+ outputLogic_outputCmd_ready = 1'b0;
+ if(outputLogic_outputCmd_valid) begin
+ if(!when_Apb3CCToggle_l81) begin
+ if(io_output_PREADY) begin
+ outputLogic_outputCmd_ready = 1'b1;
+ end
+ end
+ end
+ end
+
+ assign when_Apb3CCToggle_l81 = (! outputLogic_state);
+ assign outputLogic_outputCmd_fire = (outputLogic_outputCmd_valid && outputLogic_outputCmd_ready);
+ assign outputLogic_outputRsp_valid = outputLogic_outputCmd_fire;
+ assign outputLogic_outputRsp_payload_PRDATA = io_output_PRDATA;
+ assign outputLogic_outputRsp_payload_PSLVERROR = io_output_PSLVERROR;
+ assign inputLogic_inputRsp_valid = flowCCUnsafeByToggle_1_io_output_valid;
+ assign inputLogic_inputRsp_payload_PRDATA = flowCCUnsafeByToggle_1_io_output_payload_PRDATA;
+ assign inputLogic_inputRsp_payload_PSLVERROR = flowCCUnsafeByToggle_1_io_output_payload_PSLVERROR;
+ always @(posedge ctrl_clk) begin
+ if(ctrl_reset) begin
+ inputLogic_state <= 1'b0;
+ end else begin
+ if(inputLogic_inputCmd_valid) begin
+ inputLogic_state <= 1'b1;
+ end
+ if(inputLogic_inputRsp_valid) begin
+ inputLogic_state <= 1'b0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ flowCCUnsafeByToggle_io_output_toStream_rValid <= 1'b0;
+ outputLogic_state <= 1'b0;
+ end else begin
+ if(flowCCUnsafeByToggle_io_output_toStream_ready) begin
+ flowCCUnsafeByToggle_io_output_toStream_rValid <= flowCCUnsafeByToggle_io_output_toStream_valid;
+ end
+ if(outputLogic_outputCmd_valid) begin
+ if(when_Apb3CCToggle_l81) begin
+ outputLogic_state <= 1'b1;
+ end else begin
+ if(io_output_PREADY) begin
+ outputLogic_state <= 1'b0;
+ end
+ end
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(flowCCUnsafeByToggle_io_output_toStream_fire) begin
+ flowCCUnsafeByToggle_io_output_toStream_rData_PADDR <= flowCCUnsafeByToggle_io_output_toStream_payload_PADDR;
+ flowCCUnsafeByToggle_io_output_toStream_rData_PWRITE <= flowCCUnsafeByToggle_io_output_toStream_payload_PWRITE;
+ flowCCUnsafeByToggle_io_output_toStream_rData_PWDATA <= flowCCUnsafeByToggle_io_output_toStream_payload_PWDATA;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_Core (
+ output wire io_sgRead_cmd_valid,
+ input wire io_sgRead_cmd_ready,
+ output wire io_sgRead_cmd_payload_last,
+ output wire [0:0] io_sgRead_cmd_payload_fragment_opcode,
+ output wire [31:0] io_sgRead_cmd_payload_fragment_address,
+ output wire [4:0] io_sgRead_cmd_payload_fragment_length,
+ output wire [0:0] io_sgRead_cmd_payload_fragment_context,
+ input wire io_sgRead_rsp_valid,
+ output wire io_sgRead_rsp_ready,
+ input wire io_sgRead_rsp_payload_last,
+ input wire [0:0] io_sgRead_rsp_payload_fragment_opcode,
+ input wire [127:0] io_sgRead_rsp_payload_fragment_data,
+ input wire [0:0] io_sgRead_rsp_payload_fragment_context,
+ output wire io_sgWrite_cmd_valid,
+ input wire io_sgWrite_cmd_ready,
+ output wire io_sgWrite_cmd_payload_last,
+ output wire [0:0] io_sgWrite_cmd_payload_fragment_opcode,
+ output wire [31:0] io_sgWrite_cmd_payload_fragment_address,
+ output wire [1:0] io_sgWrite_cmd_payload_fragment_length,
+ output reg [127:0] io_sgWrite_cmd_payload_fragment_data,
+ output reg [15:0] io_sgWrite_cmd_payload_fragment_mask,
+ output wire [0:0] io_sgWrite_cmd_payload_fragment_context,
+ input wire io_sgWrite_rsp_valid,
+ output wire io_sgWrite_rsp_ready,
+ input wire io_sgWrite_rsp_payload_last,
+ input wire [0:0] io_sgWrite_rsp_payload_fragment_opcode,
+ input wire [0:0] io_sgWrite_rsp_payload_fragment_context,
+ output reg io_read_cmd_valid,
+ input wire io_read_cmd_ready,
+ output wire io_read_cmd_payload_last,
+ output wire [0:0] io_read_cmd_payload_fragment_opcode,
+ output wire [31:0] io_read_cmd_payload_fragment_address,
+ output wire [11:0] io_read_cmd_payload_fragment_length,
+ output wire [20:0] io_read_cmd_payload_fragment_context,
+ input wire io_read_rsp_valid,
+ output wire io_read_rsp_ready,
+ input wire io_read_rsp_payload_last,
+ input wire [0:0] io_read_rsp_payload_fragment_opcode,
+ input wire [127:0] io_read_rsp_payload_fragment_data,
+ input wire [20:0] io_read_rsp_payload_fragment_context,
+ output wire io_write_cmd_valid,
+ input wire io_write_cmd_ready,
+ output wire io_write_cmd_payload_last,
+ output wire [0:0] io_write_cmd_payload_fragment_opcode,
+ output wire [31:0] io_write_cmd_payload_fragment_address,
+ output wire [11:0] io_write_cmd_payload_fragment_length,
+ output wire [127:0] io_write_cmd_payload_fragment_data,
+ output wire [15:0] io_write_cmd_payload_fragment_mask,
+ output wire [12:0] io_write_cmd_payload_fragment_context,
+ input wire io_write_rsp_valid,
+ output wire io_write_rsp_ready,
+ input wire io_write_rsp_payload_last,
+ input wire [0:0] io_write_rsp_payload_fragment_opcode,
+ input wire [12:0] io_write_rsp_payload_fragment_context,
+ output wire io_outputs_0_valid,
+ input wire io_outputs_0_ready,
+ output wire [63:0] io_outputs_0_payload_data,
+ output wire [7:0] io_outputs_0_payload_mask,
+ output wire [3:0] io_outputs_0_payload_sink,
+ output wire io_outputs_0_payload_last,
+ input wire io_inputs_0_valid,
+ output reg io_inputs_0_ready,
+ input wire [63:0] io_inputs_0_payload_data,
+ input wire [7:0] io_inputs_0_payload_mask,
+ input wire [3:0] io_inputs_0_payload_sink,
+ input wire io_inputs_0_payload_last,
+ output reg [1:0] io_interrupts,
+ input wire [13:0] io_ctrl_PADDR,
+ input wire [0:0] io_ctrl_PSEL,
+ input wire io_ctrl_PENABLE,
+ output wire io_ctrl_PREADY,
+ input wire io_ctrl_PWRITE,
+ input wire [31:0] io_ctrl_PWDATA,
+ output reg [31:0] io_ctrl_PRDATA,
+ output wire io_ctrl_PSLVERROR,
+ output wire ll_0_descriptorUpdate,
+ output wire ll_1_descriptorUpdate,
+ input wire clk,
+ input wire reset
+);
+
+ wire [9:0] memory_core_io_writes_0_cmd_payload_address;
+ wire [6:0] memory_core_io_writes_0_cmd_payload_context;
+ wire [9:0] memory_core_io_writes_1_cmd_payload_address;
+ reg [15:0] memory_core_io_writes_1_cmd_payload_mask;
+ wire [6:0] memory_core_io_writes_1_cmd_payload_context;
+ wire memory_core_io_reads_0_cmd_valid;
+ wire [9:0] memory_core_io_reads_0_cmd_payload_address;
+ wire [2:0] memory_core_io_reads_0_cmd_payload_context;
+ wire [9:0] memory_core_io_reads_1_cmd_payload_address;
+ wire [11:0] memory_core_io_reads_1_cmd_payload_context;
+ wire [15:0] b2m_fsm_aggregate_engine_io_input_payload_mask;
+ wire b2m_fsm_aggregate_engine_io_flush;
+ wire [3:0] b2m_fsm_aggregate_engine_io_offset;
+ wire memory_core_io_writes_0_cmd_ready;
+ wire memory_core_io_writes_0_rsp_valid;
+ wire [6:0] memory_core_io_writes_0_rsp_payload_context;
+ wire memory_core_io_writes_1_cmd_ready;
+ wire memory_core_io_writes_1_rsp_valid;
+ wire [6:0] memory_core_io_writes_1_rsp_payload_context;
+ wire memory_core_io_reads_0_cmd_ready;
+ wire memory_core_io_reads_0_rsp_valid;
+ wire [63:0] memory_core_io_reads_0_rsp_payload_data;
+ wire [7:0] memory_core_io_reads_0_rsp_payload_mask;
+ wire [2:0] memory_core_io_reads_0_rsp_payload_context;
+ wire memory_core_io_reads_1_cmd_ready;
+ wire memory_core_io_reads_1_rsp_valid;
+ wire [127:0] memory_core_io_reads_1_rsp_payload_data;
+ wire [15:0] memory_core_io_reads_1_rsp_payload_mask;
+ wire [11:0] memory_core_io_reads_1_rsp_payload_context;
+ wire b2m_fsm_aggregate_engine_io_input_ready;
+ wire [127:0] b2m_fsm_aggregate_engine_io_output_data;
+ wire [15:0] b2m_fsm_aggregate_engine_io_output_mask;
+ wire b2m_fsm_aggregate_engine_io_output_consumed;
+ wire [3:0] b2m_fsm_aggregate_engine_io_output_usedUntil;
+ wire [26:0] _zz_channels_0_bytesProbe_value;
+ wire [26:0] _zz_channels_0_bytesProbe_value_1;
+ wire [13:0] _zz_channels_0_fifo_pop_withOverride_backupNext;
+ wire [13:0] _zz_channels_0_fifo_pop_withOverride_exposed;
+ wire [26:0] _zz_channels_0_pop_b2m_selfFlush;
+ wire [13:0] _zz_channels_0_pop_b2m_request;
+ wire [10:0] _zz_channels_0_pop_b2m_request_1;
+ wire [9:0] _zz_channels_0_pop_b2m_request_2;
+ wire [3:0] _zz_channels_0_pop_b2m_memPending;
+ wire [3:0] _zz_channels_0_pop_b2m_memPending_1;
+ wire [0:0] _zz_channels_0_pop_b2m_memPending_2;
+ wire [3:0] _zz_channels_0_pop_b2m_memPending_3;
+ wire [0:0] _zz_channels_0_pop_b2m_memPending_4;
+ wire [10:0] _zz_channels_0_fifo_push_available;
+ wire [26:0] _zz_channels_1_bytesProbe_value;
+ wire [26:0] _zz_channels_1_bytesProbe_value_1;
+ wire [13:0] _zz_channels_1_fifo_pop_withoutOverride_exposed;
+ wire [3:0] _zz_channels_1_push_m2b_memPending;
+ wire [3:0] _zz_channels_1_push_m2b_memPending_1;
+ wire [0:0] _zz_channels_1_push_m2b_memPending_2;
+ wire [3:0] _zz_channels_1_push_m2b_memPending_3;
+ wire [0:0] _zz_channels_1_push_m2b_memPending_4;
+ wire [10:0] _zz_channels_1_push_m2b_loadRequest;
+ wire [8:0] _zz_channels_1_push_m2b_loadRequest_1;
+ wire [25:0] _zz_when_DmaSg_l486;
+ wire [10:0] _zz_channels_1_fifo_push_available;
+ wire [0:0] _zz_s2b_0_cmd_firsts;
+ wire [4:0] _zz_s2b_0_cmd_firsts_1;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_8;
+ reg [3:0] _zz_s2b_0_cmd_byteCount_9;
+ wire [2:0] _zz_s2b_0_cmd_byteCount_10;
+ reg [3:0] _zz_s2b_0_cmd_byteCount_11;
+ wire [2:0] _zz_s2b_0_cmd_byteCount_12;
+ reg [3:0] _zz_s2b_0_cmd_byteCount_13;
+ wire [2:0] _zz_s2b_0_cmd_byteCount_14;
+ wire [1:0] _zz_s2b_0_cmd_byteCount_15;
+ wire [1:0] _zz__zz_m2b_cmd_s0_priority_chosenOh_2;
+ wire [1:0] _zz__zz_m2b_cmd_s0_priority_chosenOh_2_1;
+ wire [0:0] _zz__zz_m2b_cmd_s0_priority_chosenOh_2_2;
+ reg [0:0] _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3;
+ wire [25:0] _zz_m2b_cmd_s0_length;
+ wire [25:0] _zz_m2b_cmd_s0_length_1;
+ wire [25:0] _zz_m2b_cmd_s0_length_2;
+ wire [25:0] _zz_m2b_cmd_s0_lastBurst;
+ wire [31:0] _zz_m2b_cmd_s1_context_stop;
+ wire [31:0] _zz_m2b_cmd_s1_context_stop_1;
+ wire [31:0] _zz_m2b_cmd_s1_addressNext;
+ wire [31:0] _zz_m2b_cmd_s1_addressNext_1;
+ wire [25:0] _zz_m2b_cmd_s1_byteLeftNext;
+ wire [25:0] _zz_m2b_cmd_s1_byteLeftNext_1;
+ wire [12:0] _zz_m2b_cmd_s1_fifoPushDecr;
+ wire [11:0] _zz_m2b_cmd_s1_fifoPushDecr_1;
+ wire [11:0] _zz_m2b_cmd_s1_fifoPushDecr_2;
+ wire [3:0] _zz_m2b_cmd_s1_fifoPushDecr_3;
+ wire [12:0] _zz_m2b_cmd_s1_fifoPushDecr_4;
+ wire [1:0] _zz_m2b_cmd_s1_fifoPushDecr_5;
+ wire [1:0] _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2;
+ wire [1:0] _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_1;
+ wire [0:0] _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_2;
+ reg [0:0] _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3;
+ wire [0:0] _zz_when;
+ wire [12:0] _zz_b2m_fsm_bytesInBurstP1;
+ wire [1:0] _zz_b2m_fsm_bytesInBurstP1_1;
+ wire [31:0] _zz_b2m_fsm_addressNext;
+ wire [26:0] _zz_b2m_fsm_bytesLeftNext;
+ wire [13:0] _zz_b2m_fsm_bytesLeftNext_1;
+ wire [25:0] _zz__zz_b2m_fsm_sel_bytesInBurst_1;
+ wire [25:0] _zz__zz_b2m_fsm_sel_bytesInBurst_1_1;
+ wire [11:0] _zz__zz_b2m_fsm_sel_bytesInBurst_2;
+ wire [25:0] _zz_b2m_fsm_sel_bytesInBurst_3;
+ wire [25:0] _zz_b2m_fsm_sel_bytesInBurst_4;
+ wire [25:0] _zz_b2m_fsm_sel_bytesInBurst_5;
+ wire [13:0] _zz_b2m_fsm_fifoCompletion;
+ wire [13:0] _zz_b2m_fsm_fifoCompletion_1;
+ wire [11:0] _zz_b2m_fsm_beatCounter;
+ wire [11:0] _zz_b2m_fsm_beatCounter_1;
+ wire [3:0] _zz_b2m_fsm_beatCounter_2;
+ wire [10:0] _zz_b2m_fsm_sel_ptr;
+ wire [3:0] _zz_b2m_fsm_aggregate_bytesToSkipMask;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_1;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_2;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_3;
+ wire [0:0] _zz_b2m_fsm_aggregate_bytesToSkipMask_4;
+ wire [9:0] _zz_b2m_fsm_aggregate_bytesToSkipMask_5;
+ wire [3:0] _zz_b2m_fsm_aggregate_bytesToSkipMask_6;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_7;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_8;
+ wire _zz_b2m_fsm_aggregate_bytesToSkipMask_9;
+ wire [0:0] _zz_b2m_fsm_aggregate_bytesToSkipMask_10;
+ wire [3:0] _zz_b2m_fsm_aggregate_bytesToSkipMask_11;
+ wire [3:0] _zz_b2m_fsm_cmd_maskLastTriggerComb;
+ wire [3:0] _zz_b2m_fsm_cmd_maskLast;
+ wire _zz_b2m_fsm_cmd_maskLast_1;
+ wire [0:0] _zz_b2m_fsm_cmd_maskLast_2;
+ wire [7:0] _zz_b2m_fsm_cmd_maskLast_3;
+ wire [3:0] _zz_b2m_fsm_cmd_maskLast_4;
+ wire [3:0] _zz_b2m_fsm_cmd_maskLast_5;
+ wire [3:0] _zz_b2m_fsm_cmd_maskFirst;
+ wire _zz_b2m_fsm_cmd_maskFirst_1;
+ wire [0:0] _zz_b2m_fsm_cmd_maskFirst_2;
+ wire [7:0] _zz_b2m_fsm_cmd_maskFirst_3;
+ wire [3:0] _zz_b2m_fsm_cmd_maskFirst_4;
+ wire [3:0] _zz_b2m_fsm_cmd_maskFirst_5;
+ wire [0:0] _zz_when_1;
+ wire [0:0] _zz_when_2;
+ wire [1:0] _zz__zz_ll_arbiter_head_1;
+ wire [1:0] _zz__zz_ll_arbiter_head_1_1;
+ wire [1:0] _zz_ll_arbiter_head_2;
+ wire [1:0] _zz_ll_arbiter_isJustASink;
+ wire [1:0] _zz_ll_arbiter_doDescriptorStall;
+ wire [1:0] _zz_ll_arbiter_onSgStream;
+ wire [1:0] _zz_ll_cmd_ptr;
+ wire [1:0] _zz_ll_cmd_ptrNext;
+ wire [1:0] _zz_ll_cmd_endOfPacket;
+ wire [0:0] _zz_channels_0_channelStart;
+ wire [0:0] _zz_channels_0_ctrl_kick;
+ wire [0:0] _zz_channels_0_channelStart_1;
+ wire [0:0] _zz_channels_0_ll_sgStart;
+ wire [0:0] _zz_channels_0_interrupts_completion_valid;
+ wire [0:0] _zz_channels_0_interrupts_onChannelCompletion_valid;
+ wire [0:0] _zz_channels_0_interrupts_onLinkedListUpdate_valid;
+ wire [0:0] _zz_channels_0_interrupts_s2mPacket_valid;
+ wire [0:0] _zz_channels_1_channelStart;
+ wire [0:0] _zz_channels_1_ctrl_kick;
+ wire [0:0] _zz_channels_1_channelStart_1;
+ wire [0:0] _zz_channels_1_ll_sgStart;
+ wire [0:0] _zz_channels_1_interrupts_completion_valid;
+ wire [0:0] _zz_channels_1_interrupts_onChannelCompletion_valid;
+ wire [0:0] _zz_channels_1_interrupts_onLinkedListUpdate_valid;
+ wire [31:0] _zz_io_ctrl_PRDATA;
+ wire [31:0] _zz_io_ctrl_PRDATA_1;
+ wire [10:0] _zz_channels_0_fifo_push_ptrIncr_value;
+ wire [0:0] _zz_channels_0_fifo_push_ptrIncr_value_1;
+ wire [13:0] _zz_channels_0_fifo_pop_bytesIncr_value_1;
+ wire [3:0] _zz_channels_0_fifo_pop_bytesIncr_value_2;
+ wire [10:0] _zz_channels_0_fifo_pop_ptrIncr_value;
+ wire [1:0] _zz_channels_0_fifo_pop_ptrIncr_value_1;
+ wire [10:0] _zz_channels_1_fifo_push_ptrIncr_value_1;
+ wire [1:0] _zz_channels_1_fifo_push_ptrIncr_value_2;
+ wire [13:0] _zz_channels_1_fifo_pop_bytesIncr_value_1;
+ wire [4:0] _zz_channels_1_fifo_pop_bytesIncr_value_2;
+ wire [4:0] _zz_channels_1_fifo_pop_bytesIncr_value_3;
+ wire [10:0] _zz_channels_1_fifo_pop_ptrIncr_value;
+ wire [0:0] _zz_channels_1_fifo_pop_ptrIncr_value_1;
+ wire ctrl_readErrorFlag;
+ wire ctrl_writeErrorFlag;
+ wire ctrl_askWrite;
+ wire ctrl_askRead;
+ wire ctrl_doWrite;
+ wire ctrl_doRead;
+ reg channels_0_channelStart;
+ reg channels_0_channelStop;
+ reg channels_0_channelCompletion;
+ reg channels_0_channelValid;
+ reg channels_0_descriptorStart;
+ reg channels_0_descriptorCompletion;
+ reg channels_0_descriptorValid;
+ reg [25:0] channels_0_bytes;
+ reg [1:0] channels_0_priority;
+ reg [1:0] channels_0_weight;
+ reg channels_0_readyToStop;
+ reg [26:0] channels_0_bytesProbe_value;
+ reg channels_0_bytesProbe_incr_valid;
+ reg [11:0] channels_0_bytesProbe_incr_payload;
+ reg channels_0_ctrl_kick;
+ reg channels_0_ll_sgStart;
+ reg channels_0_ll_valid;
+ reg channels_0_ll_onSgStream;
+ reg channels_0_ll_head;
+ reg channels_0_ll_justASync;
+ reg channels_0_ll_waitDone;
+ reg channels_0_ll_readDone;
+ reg channels_0_ll_writeDone;
+ reg channels_0_ll_gotDescriptorStall;
+ reg channels_0_ll_controlNoCompletion;
+ reg channels_0_ll_packet;
+ reg channels_0_ll_requireSync;
+ reg [31:0] channels_0_ll_ptr;
+ reg [31:0] channels_0_ll_ptrNext;
+ wire channels_0_ll_requestLl;
+ reg channels_0_ll_descriptorUpdated;
+ wire when_DmaSg_l318;
+ wire when_DmaSg_l320;
+ wire when_DmaSg_l322;
+ wire when_DmaSg_l328;
+ wire [10:0] channels_0_fifo_base;
+ wire [10:0] channels_0_fifo_words;
+ reg [10:0] channels_0_fifo_push_available;
+ wire [10:0] channels_0_fifo_push_availableDecr;
+ reg [10:0] channels_0_fifo_push_ptr;
+ wire [10:0] channels_0_fifo_push_ptrWithBase;
+ wire [10:0] channels_0_fifo_push_ptrIncr_value;
+ reg [10:0] channels_0_fifo_pop_ptr;
+ wire [13:0] channels_0_fifo_pop_bytes;
+ wire [10:0] channels_0_fifo_pop_ptrWithBase;
+ wire [13:0] channels_0_fifo_pop_bytesIncr_value;
+ wire [13:0] channels_0_fifo_pop_bytesDecr_value;
+ wire channels_0_fifo_pop_empty;
+ wire [10:0] channels_0_fifo_pop_ptrIncr_value;
+ reg [13:0] channels_0_fifo_pop_withOverride_backup;
+ wire [13:0] channels_0_fifo_pop_withOverride_backupNext;
+ reg channels_0_fifo_pop_withOverride_load;
+ reg channels_0_fifo_pop_withOverride_unload;
+ reg [13:0] channels_0_fifo_pop_withOverride_exposed;
+ reg channels_0_fifo_pop_withOverride_valid;
+ wire when_DmaSg_l409;
+ wire channels_0_fifo_empty;
+ reg channels_0_push_memory;
+ reg channels_0_push_s2b_completionOnLast;
+ reg channels_0_push_s2b_packetEvent;
+ reg channels_0_push_s2b_packetLock;
+ reg channels_0_push_s2b_waitFirst;
+ wire when_DmaSg_l457;
+ reg channels_0_pop_memory;
+ wire [11:0] channels_0_pop_b2m_bytePerBurst;
+ reg channels_0_pop_b2m_fire;
+ reg channels_0_pop_b2m_waitFinalRsp;
+ reg channels_0_pop_b2m_flush;
+ reg channels_0_pop_b2m_packetSync;
+ reg channels_0_pop_b2m_packet;
+ wire when_DmaSg_l505;
+ reg channels_0_pop_b2m_memRsp;
+ reg [3:0] channels_0_pop_b2m_memPending;
+ reg [31:0] channels_0_pop_b2m_address;
+ reg [26:0] channels_0_pop_b2m_bytesLeft;
+ wire channels_0_pop_b2m_selfFlush;
+ wire channels_0_pop_b2m_request;
+ reg [3:0] channels_0_pop_b2m_bytesToSkip;
+ reg [13:0] channels_0_pop_b2m_decrBytes;
+ reg channels_0_pop_b2m_memPendingInc;
+ wire when_DmaSg_l523;
+ wire when_DmaSg_l532;
+ wire when_DmaSg_l536;
+ wire when_DmaSg_l547;
+ wire when_DmaSg_l563;
+ wire channels_0_readyForChannelCompletion;
+ wire when_DmaSg_l575;
+ reg _zz_when_DmaSg_l593;
+ wire when_DmaSg_l593;
+ wire channels_0_s2b_full;
+ reg [10:0] channels_0_fifo_pop_ptrIncr_value_regNext;
+ wire when_DmaSg_l255;
+ reg channels_0_interrupts_completion_enable;
+ reg channels_0_interrupts_completion_valid;
+ wire when_DmaSg_l255_1;
+ wire when_DmaSg_l255_2;
+ reg channels_0_interrupts_onChannelCompletion_enable;
+ reg channels_0_interrupts_onChannelCompletion_valid;
+ wire when_DmaSg_l255_3;
+ reg channels_0_interrupts_onLinkedListUpdate_enable;
+ reg channels_0_interrupts_onLinkedListUpdate_valid;
+ wire when_DmaSg_l255_4;
+ reg channels_0_interrupts_s2mPacket_enable;
+ reg channels_0_interrupts_s2mPacket_valid;
+ wire when_DmaSg_l255_5;
+ wire when_DmaSg_l625;
+ reg channels_1_channelStart;
+ reg channels_1_channelStop;
+ reg channels_1_channelCompletion;
+ reg channels_1_channelValid;
+ reg channels_1_descriptorStart;
+ reg channels_1_descriptorCompletion;
+ reg channels_1_descriptorValid;
+ reg [25:0] channels_1_bytes;
+ reg [1:0] channels_1_priority;
+ reg [1:0] channels_1_weight;
+ reg channels_1_readyToStop;
+ reg [26:0] channels_1_bytesProbe_value;
+ reg channels_1_bytesProbe_incr_valid;
+ reg [11:0] channels_1_bytesProbe_incr_payload;
+ reg channels_1_ctrl_kick;
+ reg channels_1_ll_sgStart;
+ reg channels_1_ll_valid;
+ reg channels_1_ll_onSgStream;
+ reg channels_1_ll_head;
+ reg channels_1_ll_justASync;
+ reg channels_1_ll_waitDone;
+ reg channels_1_ll_readDone;
+ reg channels_1_ll_writeDone;
+ reg channels_1_ll_gotDescriptorStall;
+ reg channels_1_ll_controlNoCompletion;
+ reg channels_1_ll_packet;
+ reg channels_1_ll_requireSync;
+ reg [31:0] channels_1_ll_ptr;
+ reg [31:0] channels_1_ll_ptrNext;
+ wire channels_1_ll_requestLl;
+ reg channels_1_ll_descriptorUpdated;
+ wire when_DmaSg_l318_1;
+ wire when_DmaSg_l320_1;
+ wire when_DmaSg_l322_1;
+ wire when_DmaSg_l328_1;
+ wire [10:0] channels_1_fifo_base;
+ wire [10:0] channels_1_fifo_words;
+ reg [10:0] channels_1_fifo_push_available;
+ reg [10:0] channels_1_fifo_push_availableDecr;
+ reg [10:0] channels_1_fifo_push_ptr;
+ wire [10:0] channels_1_fifo_push_ptrWithBase;
+ wire [10:0] channels_1_fifo_push_ptrIncr_value;
+ reg [10:0] channels_1_fifo_pop_ptr;
+ wire [13:0] channels_1_fifo_pop_bytes;
+ wire [10:0] channels_1_fifo_pop_ptrWithBase;
+ wire [13:0] channels_1_fifo_pop_bytesIncr_value;
+ wire [13:0] channels_1_fifo_pop_bytesDecr_value;
+ wire channels_1_fifo_pop_empty;
+ wire [10:0] channels_1_fifo_pop_ptrIncr_value;
+ reg [13:0] channels_1_fifo_pop_withoutOverride_exposed;
+ wire channels_1_fifo_empty;
+ reg channels_1_push_memory;
+ reg [31:0] channels_1_push_m2b_address;
+ wire [11:0] channels_1_push_m2b_bytePerBurst;
+ reg channels_1_push_m2b_loadDone;
+ reg [25:0] channels_1_push_m2b_bytesLeft;
+ reg [3:0] channels_1_push_m2b_memPending;
+ reg channels_1_push_m2b_memPendingIncr;
+ reg channels_1_push_m2b_memPendingDecr;
+ reg channels_1_push_m2b_loadRequest;
+ reg channels_1_pop_memory;
+ reg channels_1_pop_b2s_last;
+ reg [3:0] channels_1_pop_b2s_sinkId;
+ reg channels_1_pop_b2s_veryLastTrigger;
+ reg channels_1_pop_b2s_veryLastValid;
+ wire when_DmaSg_l474;
+ reg [10:0] channels_1_pop_b2s_veryLastPtr;
+ reg channels_1_pop_b2s_veryLastEndPacket;
+ wire when_DmaSg_l483;
+ wire when_DmaSg_l486;
+ wire when_DmaSg_l562;
+ reg channels_1_readyForChannelCompletion;
+ wire when_DmaSg_l566;
+ wire when_DmaSg_l575_1;
+ reg _zz_when_DmaSg_l593_1;
+ wire when_DmaSg_l593_1;
+ wire channels_1_s2b_full;
+ reg [10:0] channels_1_fifo_pop_ptrIncr_value_regNext;
+ wire when_DmaSg_l255_6;
+ reg channels_1_interrupts_completion_enable;
+ reg channels_1_interrupts_completion_valid;
+ wire when_DmaSg_l255_7;
+ wire when_DmaSg_l255_8;
+ reg channels_1_interrupts_onChannelCompletion_enable;
+ reg channels_1_interrupts_onChannelCompletion_valid;
+ wire when_DmaSg_l255_9;
+ reg channels_1_interrupts_onLinkedListUpdate_enable;
+ reg channels_1_interrupts_onLinkedListUpdate_valid;
+ wire when_DmaSg_l255_10;
+ wire when_DmaSg_l625_1;
+ wire io_inputs_0_fire;
+ wire when_package_l12;
+ reg io_inputs_0_payload_last_regNextWhen;
+ wire when_package_l12_1;
+ reg io_inputs_0_payload_last_regNextWhen_1;
+ wire when_package_l12_2;
+ reg io_inputs_0_payload_last_regNextWhen_2;
+ wire when_package_l12_3;
+ reg io_inputs_0_payload_last_regNextWhen_3;
+ wire when_package_l12_4;
+ reg io_inputs_0_payload_last_regNextWhen_4;
+ wire when_package_l12_5;
+ reg io_inputs_0_payload_last_regNextWhen_5;
+ wire when_package_l12_6;
+ reg io_inputs_0_payload_last_regNextWhen_6;
+ wire when_package_l12_7;
+ reg io_inputs_0_payload_last_regNextWhen_7;
+ wire when_package_l12_8;
+ reg io_inputs_0_payload_last_regNextWhen_8;
+ wire when_package_l12_9;
+ reg io_inputs_0_payload_last_regNextWhen_9;
+ wire when_package_l12_10;
+ reg io_inputs_0_payload_last_regNextWhen_10;
+ wire when_package_l12_11;
+ reg io_inputs_0_payload_last_regNextWhen_11;
+ wire when_package_l12_12;
+ reg io_inputs_0_payload_last_regNextWhen_12;
+ wire when_package_l12_13;
+ reg io_inputs_0_payload_last_regNextWhen_13;
+ wire when_package_l12_14;
+ reg io_inputs_0_payload_last_regNextWhen_14;
+ wire when_package_l12_15;
+ reg io_inputs_0_payload_last_regNextWhen_15;
+ wire [15:0] s2b_0_cmd_firsts;
+ wire s2b_0_cmd_first;
+ wire [0:0] s2b_0_cmd_channelsOh;
+ wire s2b_0_cmd_noHit;
+ wire [0:0] s2b_0_cmd_channelsFull;
+ reg io_inputs_0_thrown_valid;
+ wire io_inputs_0_thrown_ready;
+ wire [63:0] io_inputs_0_thrown_payload_data;
+ wire [7:0] io_inputs_0_thrown_payload_mask;
+ wire [3:0] io_inputs_0_thrown_payload_sink;
+ wire io_inputs_0_thrown_payload_last;
+ wire _zz_io_inputs_0_thrown_ready;
+ wire s2b_0_cmd_sinkHalted_valid;
+ wire s2b_0_cmd_sinkHalted_ready;
+ wire [63:0] s2b_0_cmd_sinkHalted_payload_data;
+ wire [7:0] s2b_0_cmd_sinkHalted_payload_mask;
+ wire [3:0] s2b_0_cmd_sinkHalted_payload_sink;
+ wire s2b_0_cmd_sinkHalted_payload_last;
+ wire [3:0] _zz_s2b_0_cmd_byteCount;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_1;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_2;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_3;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_4;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_5;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_6;
+ wire [3:0] _zz_s2b_0_cmd_byteCount_7;
+ wire [3:0] s2b_0_cmd_byteCount;
+ wire [0:0] s2b_0_cmd_context_channel;
+ wire [3:0] s2b_0_cmd_context_bytes;
+ wire s2b_0_cmd_context_flush;
+ wire s2b_0_cmd_context_packet;
+ wire memory_core_io_writes_0_cmd_fire;
+ wire when_DmaSg_l665;
+ wire [0:0] s2b_0_rsp_context_channel;
+ wire [3:0] s2b_0_rsp_context_bytes;
+ wire s2b_0_rsp_context_flush;
+ wire s2b_0_rsp_context_packet;
+ wire [6:0] _zz_s2b_0_rsp_context_channel;
+ wire _zz_channels_0_fifo_pop_bytesIncr_value;
+ wire when_DmaSg_l679;
+ wire when_DmaSg_l681;
+ wire when_DmaSg_l682;
+ wire [0:0] b2s_0_cmd_channelsOh;
+ wire [0:0] b2s_0_cmd_context_channel;
+ wire b2s_0_cmd_context_veryLast;
+ wire b2s_0_cmd_context_endPacket;
+ wire [10:0] b2s_0_cmd_veryLastPtr;
+ wire [10:0] b2s_0_cmd_address;
+ wire [0:0] b2s_0_rsp_context_channel;
+ wire b2s_0_rsp_context_veryLast;
+ wire b2s_0_rsp_context_endPacket;
+ wire [2:0] _zz_b2s_0_rsp_context_channel;
+ wire io_outputs_0_fire;
+ wire when_DmaSg_l725;
+ wire when_DmaSg_l726;
+ reg m2b_cmd_s0_valid;
+ wire [1:0] _zz_m2b_cmd_s0_priority_masked;
+ wire [0:0] m2b_cmd_s0_priority_masked;
+ reg [0:0] m2b_cmd_s0_priority_roundRobins_0;
+ reg [0:0] m2b_cmd_s0_priority_roundRobins_1;
+ reg [0:0] m2b_cmd_s0_priority_roundRobins_2;
+ reg [0:0] m2b_cmd_s0_priority_roundRobins_3;
+ reg [1:0] m2b_cmd_s0_priority_counter;
+ wire [0:0] _zz_m2b_cmd_s0_priority_chosenOh;
+ wire [1:0] _zz_m2b_cmd_s0_priority_chosenOh_1;
+ wire [1:0] _zz_m2b_cmd_s0_priority_chosenOh_2;
+ wire [0:0] m2b_cmd_s0_priority_chosenOh;
+ wire m2b_cmd_s0_priority_weightLast;
+ wire [0:0] m2b_cmd_s0_priority_contextNext;
+ wire when_DmaSg_l758;
+ wire when_DmaSg_l760;
+ wire when_DmaSg_l763;
+ wire when_DmaSg_l763_1;
+ wire when_DmaSg_l763_2;
+ wire when_DmaSg_l763_3;
+ wire when_DmaSg_l773;
+ wire [31:0] m2b_cmd_s0_address;
+ wire [25:0] m2b_cmd_s0_bytesLeft;
+ wire [11:0] m2b_cmd_s0_readAddressBurstRange;
+ wire [11:0] m2b_cmd_s0_lengthHead;
+ wire [11:0] m2b_cmd_s0_length;
+ wire m2b_cmd_s0_lastBurst;
+ reg m2b_cmd_s1_valid;
+ reg [31:0] m2b_cmd_s1_address;
+ reg [11:0] m2b_cmd_s1_length;
+ reg m2b_cmd_s1_lastBurst;
+ reg [25:0] m2b_cmd_s1_bytesLeft;
+ wire [3:0] m2b_cmd_s1_context_start;
+ wire [3:0] m2b_cmd_s1_context_stop;
+ wire [11:0] m2b_cmd_s1_context_length;
+ wire m2b_cmd_s1_context_last;
+ wire [31:0] m2b_cmd_s1_addressNext;
+ wire [25:0] m2b_cmd_s1_byteLeftNext;
+ wire [9:0] m2b_cmd_s1_fifoPushDecr;
+ wire when_DmaSg_l828;
+ wire [3:0] m2b_rsp_context_start;
+ wire [3:0] m2b_rsp_context_stop;
+ wire [11:0] m2b_rsp_context_length;
+ wire m2b_rsp_context_last;
+ wire [20:0] _zz_m2b_rsp_context_start;
+ wire m2b_rsp_veryLast;
+ wire io_read_rsp_fire;
+ wire when_DmaSg_l847;
+ wire when_DmaSg_l848;
+ reg m2b_rsp_first;
+ wire m2b_rsp_writeContext_last;
+ wire m2b_rsp_writeContext_lastOfBurst;
+ wire [4:0] m2b_rsp_writeContext_loadByteInNextBeat;
+ wire memory_core_io_writes_1_cmd_fire;
+ wire _zz_channels_1_fifo_push_ptrIncr_value;
+ wire when_DmaSg_l874;
+ wire m2b_writeRsp_context_last;
+ wire m2b_writeRsp_context_lastOfBurst;
+ wire [4:0] m2b_writeRsp_context_loadByteInNextBeat;
+ wire [6:0] _zz_m2b_writeRsp_context_last;
+ wire _zz_channels_1_fifo_pop_bytesIncr_value;
+ wire when_DmaSg_l893;
+ reg b2m_fsm_sel_valid;
+ reg b2m_fsm_sel_ready;
+ reg [11:0] b2m_fsm_sel_bytePerBurst;
+ reg [11:0] b2m_fsm_sel_bytesInBurst;
+ reg [13:0] b2m_fsm_sel_bytesInFifo;
+ reg [31:0] b2m_fsm_sel_address;
+ reg [10:0] b2m_fsm_sel_ptr;
+ reg [10:0] b2m_fsm_sel_ptrMask;
+ reg b2m_fsm_sel_flush;
+ reg b2m_fsm_sel_packet;
+ reg [25:0] b2m_fsm_sel_bytesLeft;
+ reg b2m_fsm_arbiter_logic_valid;
+ wire [1:0] _zz_b2m_fsm_arbiter_logic_priority_masked;
+ wire [0:0] b2m_fsm_arbiter_logic_priority_masked;
+ reg [0:0] b2m_fsm_arbiter_logic_priority_roundRobins_0;
+ reg [0:0] b2m_fsm_arbiter_logic_priority_roundRobins_1;
+ reg [0:0] b2m_fsm_arbiter_logic_priority_roundRobins_2;
+ reg [0:0] b2m_fsm_arbiter_logic_priority_roundRobins_3;
+ reg [1:0] b2m_fsm_arbiter_logic_priority_counter;
+ wire [0:0] _zz_b2m_fsm_arbiter_logic_priority_chosenOh;
+ wire [1:0] _zz_b2m_fsm_arbiter_logic_priority_chosenOh_1;
+ wire [1:0] _zz_b2m_fsm_arbiter_logic_priority_chosenOh_2;
+ wire [0:0] b2m_fsm_arbiter_logic_priority_chosenOh;
+ wire b2m_fsm_arbiter_logic_priority_weightLast;
+ wire [0:0] b2m_fsm_arbiter_logic_priority_contextNext;
+ wire when_DmaSg_l758_1;
+ wire when_DmaSg_l760_1;
+ wire when_DmaSg_l763_4;
+ wire when_DmaSg_l763_5;
+ wire when_DmaSg_l763_6;
+ wire when_DmaSg_l763_7;
+ wire when_DmaSg_l773_1;
+ wire when_DmaSg_l935;
+ wire [12:0] b2m_fsm_bytesInBurstP1;
+ wire [31:0] b2m_fsm_addressNext;
+ wire [26:0] b2m_fsm_bytesLeftNext;
+ wire b2m_fsm_isFinalCmd;
+ reg [7:0] b2m_fsm_beatCounter;
+ reg b2m_fsm_sel_valid_regNext;
+ wire b2m_fsm_s0;
+ reg b2m_fsm_s1;
+ reg b2m_fsm_s2;
+ wire when_DmaSg_l986;
+ wire [13:0] _zz_b2m_fsm_sel_bytesInBurst;
+ wire [25:0] _zz_b2m_fsm_sel_bytesInBurst_1;
+ wire [11:0] _zz_b2m_fsm_sel_bytesInBurst_2;
+ wire b2m_fsm_fifoCompletion;
+ wire when_DmaSg_l996;
+ wire when_DmaSg_l1001;
+ reg b2m_fsm_toggle;
+ wire when_DmaSg_l1013;
+ wire [10:0] b2m_fsm_fetch_context_ptr;
+ wire b2m_fsm_fetch_context_toggle;
+ wire when_DmaSg_l1033;
+ wire [10:0] b2m_fsm_aggregate_context_ptr;
+ wire b2m_fsm_aggregate_context_toggle;
+ wire [11:0] _zz_b2m_fsm_aggregate_context_ptr;
+ wire memory_core_io_reads_1_rsp_s2mPipe_valid;
+ reg memory_core_io_reads_1_rsp_s2mPipe_ready;
+ wire [127:0] memory_core_io_reads_1_rsp_s2mPipe_payload_data;
+ wire [15:0] memory_core_io_reads_1_rsp_s2mPipe_payload_mask;
+ wire [11:0] memory_core_io_reads_1_rsp_s2mPipe_payload_context;
+ reg memory_core_io_reads_1_rsp_rValidN;
+ reg [127:0] memory_core_io_reads_1_rsp_rData_data;
+ reg [15:0] memory_core_io_reads_1_rsp_rData_mask;
+ reg [11:0] memory_core_io_reads_1_rsp_rData_context;
+ wire when_Stream_l445;
+ reg b2m_fsm_aggregate_memoryPort_valid;
+ wire b2m_fsm_aggregate_memoryPort_ready;
+ wire [127:0] b2m_fsm_aggregate_memoryPort_payload_data;
+ wire [15:0] b2m_fsm_aggregate_memoryPort_payload_mask;
+ wire [11:0] b2m_fsm_aggregate_memoryPort_payload_context;
+ reg b2m_fsm_aggregate_first;
+ wire b2m_fsm_aggregate_memoryPort_fire;
+ wire when_DmaSg_l1050;
+ wire [3:0] b2m_fsm_aggregate_bytesToSkip;
+ wire [15:0] b2m_fsm_aggregate_bytesToSkipMask;
+ reg _zz_io_flush;
+ wire [3:0] b2m_fsm_cmd_maskFirstTrigger;
+ wire [3:0] b2m_fsm_cmd_maskLastTriggerComb;
+ reg [3:0] b2m_fsm_cmd_maskLastTriggerReg;
+ reg [15:0] b2m_fsm_cmd_maskLast;
+ wire [15:0] b2m_fsm_cmd_maskFirst;
+ wire b2m_fsm_cmd_enoughAggregation;
+ wire io_write_cmd_fire;
+ reg io_write_cmd_payload_first;
+ wire b2m_fsm_cmd_doPtrIncr;
+ wire [11:0] b2m_fsm_cmd_context_length;
+ wire b2m_fsm_cmd_context_doPacketSync;
+ wire when_DmaSg_l1102;
+ wire [11:0] b2m_rsp_context_length;
+ wire b2m_rsp_context_doPacketSync;
+ wire [12:0] _zz_b2m_rsp_context_length;
+ wire io_write_rsp_fire;
+ wire when_DmaSg_l1116;
+ wire [1:0] _zz_ll_arbiter_head;
+ wire _zz_ll_arbiter_head_1;
+ wire ll_arbiter_head;
+ wire ll_arbiter_isJustASink;
+ wire ll_arbiter_doDescriptorStall;
+ wire ll_arbiter_onSgStream;
+ reg ll_cmd_valid;
+ wire when_DmaSg_l1149;
+ reg ll_cmd_oh_0;
+ reg ll_cmd_oh_1;
+ wire when_DmaSg_l1148;
+ reg [31:0] ll_cmd_ptr;
+ wire when_DmaSg_l1148_1;
+ reg [31:0] ll_cmd_ptrNext;
+ wire when_DmaSg_l1148_2;
+ reg [26:0] ll_cmd_bytesDone;
+ wire when_DmaSg_l1148_3;
+ reg ll_cmd_endOfPacket;
+ wire when_DmaSg_l1154;
+ reg ll_cmd_isJustASink;
+ wire when_DmaSg_l1155;
+ reg ll_cmd_doDescriptorStall;
+ wire when_DmaSg_l1156;
+ reg ll_cmd_onSgStream;
+ reg ll_cmd_readFired;
+ reg ll_cmd_writeFired;
+ wire when_DmaSg_l1160;
+ wire when_DmaSg_l1161;
+ wire when_DmaSg_l1169;
+ wire when_DmaSg_l1169_1;
+ wire when_DmaSg_l1177;
+ wire [0:0] ll_cmd_context_channel;
+ wire [3:0] ll_cmd_writeMaskSplit_0;
+ wire [3:0] ll_cmd_writeMaskSplit_1;
+ wire [3:0] ll_cmd_writeMaskSplit_2;
+ wire [3:0] ll_cmd_writeMaskSplit_3;
+ wire [31:0] ll_cmd_writeDataSplit_0;
+ wire [31:0] ll_cmd_writeDataSplit_1;
+ wire [31:0] ll_cmd_writeDataSplit_2;
+ wire [31:0] ll_cmd_writeDataSplit_3;
+ wire io_sgRead_cmd_fire;
+ wire io_sgWrite_cmd_fire;
+ wire [0:0] ll_readRsp_context_channel;
+ wire [1:0] _zz_ll_readRsp_oh_0;
+ wire ll_readRsp_oh_0;
+ wire ll_readRsp_oh_1;
+ reg [0:0] ll_readRsp_beatCounter;
+ reg ll_readRsp_completed;
+ wire io_sgRead_rsp_fire;
+ wire when_DmaSg_l1248;
+ wire when_DmaSg_l1248_1;
+ wire when_DmaSg_l1248_2;
+ wire when_DmaSg_l1248_3;
+ wire when_DmaSg_l1248_4;
+ wire when_DmaSg_l1248_5;
+ wire when_DmaSg_l1248_6;
+ wire when_DmaSg_l1271;
+ wire [0:0] ll_writeRsp_context_channel;
+ wire [1:0] _zz_ll_writeRsp_oh_0;
+ wire ll_writeRsp_oh_0;
+ wire ll_writeRsp_oh_1;
+ wire io_sgWrite_rsp_fire;
+ reg when_BusSlaveFactory_l377;
+ wire when_BusSlaveFactory_l379;
+ reg when_BusSlaveFactory_l377_1;
+ wire when_BusSlaveFactory_l379_1;
+ reg when_BusSlaveFactory_l377_2;
+ wire when_BusSlaveFactory_l379_2;
+ reg when_BusSlaveFactory_l377_3;
+ wire when_BusSlaveFactory_l379_3;
+ reg when_BusSlaveFactory_l341;
+ wire when_BusSlaveFactory_l347;
+ reg when_BusSlaveFactory_l341_1;
+ wire when_BusSlaveFactory_l347_1;
+ reg when_BusSlaveFactory_l341_2;
+ wire when_BusSlaveFactory_l347_2;
+ reg when_BusSlaveFactory_l341_3;
+ wire when_BusSlaveFactory_l347_3;
+ reg when_BusSlaveFactory_l377_4;
+ wire when_BusSlaveFactory_l379_4;
+ reg when_BusSlaveFactory_l377_5;
+ wire when_BusSlaveFactory_l379_5;
+ reg when_BusSlaveFactory_l377_6;
+ wire when_BusSlaveFactory_l379_6;
+ reg when_BusSlaveFactory_l377_7;
+ wire when_BusSlaveFactory_l379_7;
+ reg when_BusSlaveFactory_l341_4;
+ wire when_BusSlaveFactory_l347_4;
+ reg when_BusSlaveFactory_l341_5;
+ wire when_BusSlaveFactory_l347_5;
+ reg when_BusSlaveFactory_l341_6;
+ wire when_BusSlaveFactory_l347_6;
+ wire when_Apb3SlaveFactory_l81;
+ wire when_Apb3SlaveFactory_l81_1;
+ wire when_Apb3SlaveFactory_l81_2;
+ wire when_Apb3SlaveFactory_l81_3;
+ function [15:0] zz_io_sgWrite_cmd_payload_fragment_mask(input dummy);
+ begin
+ zz_io_sgWrite_cmd_payload_fragment_mask[7 : 4] = 4'b0000;
+ zz_io_sgWrite_cmd_payload_fragment_mask[11 : 8] = 4'b0000;
+ zz_io_sgWrite_cmd_payload_fragment_mask[15 : 12] = 4'b0000;
+ zz_io_sgWrite_cmd_payload_fragment_mask[3 : 0] = 4'b1111;
+ end
+ endfunction
+ wire [15:0] _zz_1;
+
+ assign _zz_channels_0_bytesProbe_value = (channels_0_bytesProbe_value + _zz_channels_0_bytesProbe_value_1);
+ assign _zz_channels_0_bytesProbe_value_1 = {15'd0, channels_0_bytesProbe_incr_payload};
+ assign _zz_channels_0_fifo_pop_withOverride_backupNext = (channels_0_fifo_pop_withOverride_backup + channels_0_fifo_pop_bytesIncr_value);
+ assign _zz_channels_0_fifo_pop_withOverride_exposed = (channels_0_fifo_pop_withOverride_exposed - channels_0_fifo_pop_bytesDecr_value);
+ assign _zz_channels_0_pop_b2m_selfFlush = {13'd0, channels_0_fifo_pop_bytes};
+ assign _zz_channels_0_pop_b2m_request = {2'd0, channels_0_pop_b2m_bytePerBurst};
+ assign _zz_channels_0_pop_b2m_request_2 = (channels_0_fifo_words >>> 1'd1);
+ assign _zz_channels_0_pop_b2m_request_1 = {1'd0, _zz_channels_0_pop_b2m_request_2};
+ assign _zz_channels_0_pop_b2m_memPending = (channels_0_pop_b2m_memPending + _zz_channels_0_pop_b2m_memPending_1);
+ assign _zz_channels_0_pop_b2m_memPending_2 = channels_0_pop_b2m_memPendingInc;
+ assign _zz_channels_0_pop_b2m_memPending_1 = {3'd0, _zz_channels_0_pop_b2m_memPending_2};
+ assign _zz_channels_0_pop_b2m_memPending_4 = channels_0_pop_b2m_memRsp;
+ assign _zz_channels_0_pop_b2m_memPending_3 = {3'd0, _zz_channels_0_pop_b2m_memPending_4};
+ assign _zz_channels_0_fifo_push_available = (channels_0_fifo_push_available + channels_0_fifo_pop_ptrIncr_value_regNext);
+ assign _zz_channels_1_bytesProbe_value = (channels_1_bytesProbe_value + _zz_channels_1_bytesProbe_value_1);
+ assign _zz_channels_1_bytesProbe_value_1 = {15'd0, channels_1_bytesProbe_incr_payload};
+ assign _zz_channels_1_fifo_pop_withoutOverride_exposed = (channels_1_fifo_pop_withoutOverride_exposed + channels_1_fifo_pop_bytesIncr_value);
+ assign _zz_channels_1_push_m2b_memPending = (channels_1_push_m2b_memPending + _zz_channels_1_push_m2b_memPending_1);
+ assign _zz_channels_1_push_m2b_memPending_2 = channels_1_push_m2b_memPendingIncr;
+ assign _zz_channels_1_push_m2b_memPending_1 = {3'd0, _zz_channels_1_push_m2b_memPending_2};
+ assign _zz_channels_1_push_m2b_memPending_4 = channels_1_push_m2b_memPendingDecr;
+ assign _zz_channels_1_push_m2b_memPending_3 = {3'd0, _zz_channels_1_push_m2b_memPending_4};
+ assign _zz_channels_1_push_m2b_loadRequest_1 = (channels_1_push_m2b_bytePerBurst >>> 2'd3);
+ assign _zz_channels_1_push_m2b_loadRequest = {2'd0, _zz_channels_1_push_m2b_loadRequest_1};
+ assign _zz_when_DmaSg_l486 = {14'd0, channels_1_push_m2b_bytePerBurst};
+ assign _zz_channels_1_fifo_push_available = (channels_1_fifo_push_available + channels_1_fifo_pop_ptrIncr_value_regNext);
+ assign _zz_s2b_0_cmd_byteCount_8 = (_zz_s2b_0_cmd_byteCount_9 + _zz_s2b_0_cmd_byteCount_11);
+ assign _zz_s2b_0_cmd_byteCount_15 = {s2b_0_cmd_sinkHalted_payload_mask[7],s2b_0_cmd_sinkHalted_payload_mask[6]};
+ assign _zz_s2b_0_cmd_byteCount_14 = {1'd0, _zz_s2b_0_cmd_byteCount_15};
+ assign _zz__zz_m2b_cmd_s0_priority_chosenOh_2 = (_zz_m2b_cmd_s0_priority_chosenOh_1 - _zz__zz_m2b_cmd_s0_priority_chosenOh_2_1);
+ assign _zz__zz_m2b_cmd_s0_priority_chosenOh_2_2 = _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3;
+ assign _zz__zz_m2b_cmd_s0_priority_chosenOh_2_1 = {1'd0, _zz__zz_m2b_cmd_s0_priority_chosenOh_2_2};
+ assign _zz_m2b_cmd_s0_length = ((_zz_m2b_cmd_s0_length_1 < m2b_cmd_s0_bytesLeft) ? _zz_m2b_cmd_s0_length_2 : m2b_cmd_s0_bytesLeft);
+ assign _zz_m2b_cmd_s0_length_1 = {14'd0, m2b_cmd_s0_lengthHead};
+ assign _zz_m2b_cmd_s0_length_2 = {14'd0, m2b_cmd_s0_lengthHead};
+ assign _zz_m2b_cmd_s0_lastBurst = {14'd0, m2b_cmd_s0_length};
+ assign _zz_m2b_cmd_s1_context_stop = (m2b_cmd_s1_address + _zz_m2b_cmd_s1_context_stop_1);
+ assign _zz_m2b_cmd_s1_context_stop_1 = {20'd0, m2b_cmd_s1_length};
+ assign _zz_m2b_cmd_s1_addressNext = (m2b_cmd_s1_address + _zz_m2b_cmd_s1_addressNext_1);
+ assign _zz_m2b_cmd_s1_addressNext_1 = {20'd0, m2b_cmd_s1_length};
+ assign _zz_m2b_cmd_s1_byteLeftNext = (m2b_cmd_s1_bytesLeft - _zz_m2b_cmd_s1_byteLeftNext_1);
+ assign _zz_m2b_cmd_s1_byteLeftNext_1 = {14'd0, m2b_cmd_s1_length};
+ assign _zz_m2b_cmd_s1_fifoPushDecr = ({1'b0,(_zz_m2b_cmd_s1_fifoPushDecr_1 | 12'h00f)} + _zz_m2b_cmd_s1_fifoPushDecr_4);
+ assign _zz_m2b_cmd_s1_fifoPushDecr_1 = (_zz_m2b_cmd_s1_fifoPushDecr_2 + io_read_cmd_payload_fragment_length);
+ assign _zz_m2b_cmd_s1_fifoPushDecr_3 = m2b_cmd_s1_address[3 : 0];
+ assign _zz_m2b_cmd_s1_fifoPushDecr_2 = {8'd0, _zz_m2b_cmd_s1_fifoPushDecr_3};
+ assign _zz_m2b_cmd_s1_fifoPushDecr_5 = {1'b0,1'b1};
+ assign _zz_m2b_cmd_s1_fifoPushDecr_4 = {11'd0, _zz_m2b_cmd_s1_fifoPushDecr_5};
+ assign _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2 = (_zz_b2m_fsm_arbiter_logic_priority_chosenOh_1 - _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_1);
+ assign _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_2 = _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3;
+ assign _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_1 = {1'd0, _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_2};
+ assign _zz_when = 1'b1;
+ assign _zz_b2m_fsm_bytesInBurstP1_1 = {1'b0,1'b1};
+ assign _zz_b2m_fsm_bytesInBurstP1 = {11'd0, _zz_b2m_fsm_bytesInBurstP1_1};
+ assign _zz_b2m_fsm_addressNext = {19'd0, b2m_fsm_bytesInBurstP1};
+ assign _zz_b2m_fsm_bytesLeftNext_1 = {1'b0,b2m_fsm_bytesInBurstP1};
+ assign _zz_b2m_fsm_bytesLeftNext = {13'd0, _zz_b2m_fsm_bytesLeftNext_1};
+ assign _zz__zz_b2m_fsm_sel_bytesInBurst_1 = {12'd0, _zz_b2m_fsm_sel_bytesInBurst};
+ assign _zz__zz_b2m_fsm_sel_bytesInBurst_1_1 = {12'd0, _zz_b2m_fsm_sel_bytesInBurst};
+ assign _zz__zz_b2m_fsm_sel_bytesInBurst_2 = b2m_fsm_sel_address[11:0];
+ assign _zz_b2m_fsm_sel_bytesInBurst_3 = ((_zz_b2m_fsm_sel_bytesInBurst_1 < _zz_b2m_fsm_sel_bytesInBurst_4) ? _zz_b2m_fsm_sel_bytesInBurst_1 : _zz_b2m_fsm_sel_bytesInBurst_5);
+ assign _zz_b2m_fsm_sel_bytesInBurst_4 = {14'd0, _zz_b2m_fsm_sel_bytesInBurst_2};
+ assign _zz_b2m_fsm_sel_bytesInBurst_5 = {14'd0, _zz_b2m_fsm_sel_bytesInBurst_2};
+ assign _zz_b2m_fsm_fifoCompletion = {2'd0, b2m_fsm_sel_bytesInBurst};
+ assign _zz_b2m_fsm_fifoCompletion_1 = (b2m_fsm_sel_bytesInFifo - 14'h0001);
+ assign _zz_b2m_fsm_beatCounter = (_zz_b2m_fsm_beatCounter_1 + b2m_fsm_sel_bytesInBurst);
+ assign _zz_b2m_fsm_beatCounter_2 = b2m_fsm_sel_address[3 : 0];
+ assign _zz_b2m_fsm_beatCounter_1 = {8'd0, _zz_b2m_fsm_beatCounter_2};
+ assign _zz_b2m_fsm_sel_ptr = (b2m_fsm_sel_ptr + 11'h002);
+ assign _zz_b2m_fsm_cmd_maskLastTriggerComb = b2m_fsm_sel_bytesInBurst[3:0];
+ assign _zz_when_1 = 1'b1;
+ assign _zz_when_2 = 1'b1;
+ assign _zz__zz_ll_arbiter_head_1 = (_zz_ll_arbiter_head & (~ _zz__zz_ll_arbiter_head_1_1));
+ assign _zz__zz_ll_arbiter_head_1_1 = (_zz_ll_arbiter_head - 2'b01);
+ assign _zz_ll_arbiter_head_2 = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_arbiter_isJustASink = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_arbiter_doDescriptorStall = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_arbiter_onSgStream = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_cmd_ptr = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_cmd_ptrNext = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_ll_cmd_endOfPacket = {_zz_ll_arbiter_head_1,channels_0_ll_requestLl};
+ assign _zz_channels_0_channelStart = 1'b1;
+ assign _zz_channels_0_ctrl_kick = 1'b1;
+ assign _zz_channels_0_channelStart_1 = 1'b1;
+ assign _zz_channels_0_ll_sgStart = 1'b1;
+ assign _zz_channels_0_interrupts_completion_valid = 1'b0;
+ assign _zz_channels_0_interrupts_onChannelCompletion_valid = 1'b0;
+ assign _zz_channels_0_interrupts_onLinkedListUpdate_valid = 1'b0;
+ assign _zz_channels_0_interrupts_s2mPacket_valid = 1'b0;
+ assign _zz_channels_1_channelStart = 1'b1;
+ assign _zz_channels_1_ctrl_kick = 1'b1;
+ assign _zz_channels_1_channelStart_1 = 1'b1;
+ assign _zz_channels_1_ll_sgStart = 1'b1;
+ assign _zz_channels_1_interrupts_completion_valid = 1'b0;
+ assign _zz_channels_1_interrupts_onChannelCompletion_valid = 1'b0;
+ assign _zz_channels_1_interrupts_onLinkedListUpdate_valid = 1'b0;
+ assign _zz_io_ctrl_PRDATA = channels_0_ll_ptr;
+ assign _zz_io_ctrl_PRDATA_1 = channels_1_ll_ptr;
+ assign _zz_channels_0_fifo_push_ptrIncr_value_1 = ((when_DmaSg_l665 && (|s2b_0_cmd_sinkHalted_payload_mask)) ? 1'b1 : 1'b0);
+ assign _zz_channels_0_fifo_push_ptrIncr_value = {10'd0, _zz_channels_0_fifo_push_ptrIncr_value_1};
+ assign _zz_channels_0_fifo_pop_bytesIncr_value_2 = (_zz_channels_0_fifo_pop_bytesIncr_value ? s2b_0_rsp_context_bytes : 4'b0000);
+ assign _zz_channels_0_fifo_pop_bytesIncr_value_1 = {10'd0, _zz_channels_0_fifo_pop_bytesIncr_value_2};
+ assign _zz_channels_0_fifo_pop_ptrIncr_value_1 = ((b2m_fsm_cmd_doPtrIncr && 1'b1) ? 2'b10 : 2'b00);
+ assign _zz_channels_0_fifo_pop_ptrIncr_value = {9'd0, _zz_channels_0_fifo_pop_ptrIncr_value_1};
+ assign _zz_channels_1_fifo_push_ptrIncr_value_2 = (_zz_channels_1_fifo_push_ptrIncr_value ? 2'b10 : 2'b00);
+ assign _zz_channels_1_fifo_push_ptrIncr_value_1 = {9'd0, _zz_channels_1_fifo_push_ptrIncr_value_2};
+ assign _zz_channels_1_fifo_pop_bytesIncr_value_2 = (_zz_channels_1_fifo_pop_bytesIncr_value ? _zz_channels_1_fifo_pop_bytesIncr_value_3 : 5'h0);
+ assign _zz_channels_1_fifo_pop_bytesIncr_value_1 = {9'd0, _zz_channels_1_fifo_pop_bytesIncr_value_2};
+ assign _zz_channels_1_fifo_pop_bytesIncr_value_3 = (m2b_writeRsp_context_loadByteInNextBeat + 5'h01);
+ assign _zz_channels_1_fifo_pop_ptrIncr_value_1 = ((b2s_0_cmd_channelsOh[0] && memory_core_io_reads_0_cmd_ready) ? 1'b1 : 1'b0);
+ assign _zz_channels_1_fifo_pop_ptrIncr_value = {10'd0, _zz_channels_1_fifo_pop_ptrIncr_value_1};
+ assign _zz_s2b_0_cmd_byteCount_10 = {s2b_0_cmd_sinkHalted_payload_mask[2],{s2b_0_cmd_sinkHalted_payload_mask[1],s2b_0_cmd_sinkHalted_payload_mask[0]}};
+ assign _zz_s2b_0_cmd_byteCount_12 = {s2b_0_cmd_sinkHalted_payload_mask[5],{s2b_0_cmd_sinkHalted_payload_mask[4],s2b_0_cmd_sinkHalted_payload_mask[3]}};
+ assign _zz_s2b_0_cmd_firsts = io_inputs_0_payload_last_regNextWhen_5;
+ assign _zz_s2b_0_cmd_firsts_1 = {io_inputs_0_payload_last_regNextWhen_4,{io_inputs_0_payload_last_regNextWhen_3,{io_inputs_0_payload_last_regNextWhen_2,{io_inputs_0_payload_last_regNextWhen_1,io_inputs_0_payload_last_regNextWhen}}}};
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask = 4'b1101;
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_1 = (! b2m_fsm_aggregate_first);
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_2 = (b2m_fsm_aggregate_bytesToSkip <= 4'b1100);
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_3 = ((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1011));
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_4 = ((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1010));
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_5 = {((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1001)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1000)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= _zz_b2m_fsm_aggregate_bytesToSkipMask_6)),{(_zz_b2m_fsm_aggregate_bytesToSkipMask_7 || _zz_b2m_fsm_aggregate_bytesToSkipMask_8),{_zz_b2m_fsm_aggregate_bytesToSkipMask_9,{_zz_b2m_fsm_aggregate_bytesToSkipMask_10,_zz_b2m_fsm_aggregate_bytesToSkipMask_11}}}}}};
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_6 = 4'b0111;
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_7 = (! b2m_fsm_aggregate_first);
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_8 = (b2m_fsm_aggregate_bytesToSkip <= 4'b0110);
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_9 = ((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0101));
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_10 = ((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0100));
+ assign _zz_b2m_fsm_aggregate_bytesToSkipMask_11 = {((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0011)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0010)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0001)),((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b0000))}}};
+ assign _zz_b2m_fsm_cmd_maskLast = 4'b1010;
+ assign _zz_b2m_fsm_cmd_maskLast_1 = (4'b1001 <= b2m_fsm_cmd_maskLastTriggerComb);
+ assign _zz_b2m_fsm_cmd_maskLast_2 = (4'b1000 <= b2m_fsm_cmd_maskLastTriggerComb);
+ assign _zz_b2m_fsm_cmd_maskLast_3 = {(4'b0111 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b0110 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b0101 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b0100 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b0011 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b0010 <= b2m_fsm_cmd_maskLastTriggerComb),{(_zz_b2m_fsm_cmd_maskLast_4 <= b2m_fsm_cmd_maskLastTriggerComb),(_zz_b2m_fsm_cmd_maskLast_5 <= b2m_fsm_cmd_maskLastTriggerComb)}}}}}}};
+ assign _zz_b2m_fsm_cmd_maskLast_4 = 4'b0001;
+ assign _zz_b2m_fsm_cmd_maskLast_5 = 4'b0000;
+ assign _zz_b2m_fsm_cmd_maskFirst = 4'b1010;
+ assign _zz_b2m_fsm_cmd_maskFirst_1 = (b2m_fsm_cmd_maskFirstTrigger <= 4'b1001);
+ assign _zz_b2m_fsm_cmd_maskFirst_2 = (b2m_fsm_cmd_maskFirstTrigger <= 4'b1000);
+ assign _zz_b2m_fsm_cmd_maskFirst_3 = {(b2m_fsm_cmd_maskFirstTrigger <= 4'b0111),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b0110),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b0101),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b0100),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b0011),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b0010),{(b2m_fsm_cmd_maskFirstTrigger <= _zz_b2m_fsm_cmd_maskFirst_4),(b2m_fsm_cmd_maskFirstTrigger <= _zz_b2m_fsm_cmd_maskFirst_5)}}}}}}};
+ assign _zz_b2m_fsm_cmd_maskFirst_4 = 4'b0001;
+ assign _zz_b2m_fsm_cmd_maskFirst_5 = 4'b0000;
+ EfxDMA_DmaMemoryCore memory_core (
+ .io_writes_0_cmd_valid (s2b_0_cmd_sinkHalted_valid ), //i
+ .io_writes_0_cmd_ready (memory_core_io_writes_0_cmd_ready ), //o
+ .io_writes_0_cmd_payload_address (memory_core_io_writes_0_cmd_payload_address[9:0]), //i
+ .io_writes_0_cmd_payload_data (s2b_0_cmd_sinkHalted_payload_data[63:0] ), //i
+ .io_writes_0_cmd_payload_mask (s2b_0_cmd_sinkHalted_payload_mask[7:0] ), //i
+ .io_writes_0_cmd_payload_priority (channels_0_priority[1:0] ), //i
+ .io_writes_0_cmd_payload_context (memory_core_io_writes_0_cmd_payload_context[6:0]), //i
+ .io_writes_0_rsp_valid (memory_core_io_writes_0_rsp_valid ), //o
+ .io_writes_0_rsp_payload_context (memory_core_io_writes_0_rsp_payload_context[6:0]), //o
+ .io_writes_1_cmd_valid (io_read_rsp_valid ), //i
+ .io_writes_1_cmd_ready (memory_core_io_writes_1_cmd_ready ), //o
+ .io_writes_1_cmd_payload_address (memory_core_io_writes_1_cmd_payload_address[9:0]), //i
+ .io_writes_1_cmd_payload_data (io_read_rsp_payload_fragment_data[127:0] ), //i
+ .io_writes_1_cmd_payload_mask (memory_core_io_writes_1_cmd_payload_mask[15:0] ), //i
+ .io_writes_1_cmd_payload_context (memory_core_io_writes_1_cmd_payload_context[6:0]), //i
+ .io_writes_1_rsp_valid (memory_core_io_writes_1_rsp_valid ), //o
+ .io_writes_1_rsp_payload_context (memory_core_io_writes_1_rsp_payload_context[6:0]), //o
+ .io_reads_0_cmd_valid (memory_core_io_reads_0_cmd_valid ), //i
+ .io_reads_0_cmd_ready (memory_core_io_reads_0_cmd_ready ), //o
+ .io_reads_0_cmd_payload_address (memory_core_io_reads_0_cmd_payload_address[9:0] ), //i
+ .io_reads_0_cmd_payload_priority (channels_1_priority[1:0] ), //i
+ .io_reads_0_cmd_payload_context (memory_core_io_reads_0_cmd_payload_context[2:0] ), //i
+ .io_reads_0_rsp_valid (memory_core_io_reads_0_rsp_valid ), //o
+ .io_reads_0_rsp_ready (io_outputs_0_ready ), //i
+ .io_reads_0_rsp_payload_data (memory_core_io_reads_0_rsp_payload_data[63:0] ), //o
+ .io_reads_0_rsp_payload_mask (memory_core_io_reads_0_rsp_payload_mask[7:0] ), //o
+ .io_reads_0_rsp_payload_context (memory_core_io_reads_0_rsp_payload_context[2:0] ), //o
+ .io_reads_1_cmd_valid (b2m_fsm_sel_valid ), //i
+ .io_reads_1_cmd_ready (memory_core_io_reads_1_cmd_ready ), //o
+ .io_reads_1_cmd_payload_address (memory_core_io_reads_1_cmd_payload_address[9:0] ), //i
+ .io_reads_1_cmd_payload_context (memory_core_io_reads_1_cmd_payload_context[11:0]), //i
+ .io_reads_1_rsp_valid (memory_core_io_reads_1_rsp_valid ), //o
+ .io_reads_1_rsp_ready (memory_core_io_reads_1_rsp_rValidN ), //i
+ .io_reads_1_rsp_payload_data (memory_core_io_reads_1_rsp_payload_data[127:0] ), //o
+ .io_reads_1_rsp_payload_mask (memory_core_io_reads_1_rsp_payload_mask[15:0] ), //o
+ .io_reads_1_rsp_payload_context (memory_core_io_reads_1_rsp_payload_context[11:0]), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ EfxDMA_Aggregator b2m_fsm_aggregate_engine (
+ .io_input_valid (b2m_fsm_aggregate_memoryPort_valid ), //i
+ .io_input_ready (b2m_fsm_aggregate_engine_io_input_ready ), //o
+ .io_input_payload_data (b2m_fsm_aggregate_memoryPort_payload_data[127:0] ), //i
+ .io_input_payload_mask (b2m_fsm_aggregate_engine_io_input_payload_mask[15:0]), //i
+ .io_output_data (b2m_fsm_aggregate_engine_io_output_data[127:0] ), //o
+ .io_output_mask (b2m_fsm_aggregate_engine_io_output_mask[15:0] ), //o
+ .io_output_enough (b2m_fsm_cmd_enoughAggregation ), //i
+ .io_output_consume (io_write_cmd_fire ), //i
+ .io_output_consumed (b2m_fsm_aggregate_engine_io_output_consumed ), //o
+ .io_output_lastByteUsed (b2m_fsm_cmd_maskLastTriggerReg[3:0] ), //i
+ .io_output_usedUntil (b2m_fsm_aggregate_engine_io_output_usedUntil[3:0] ), //o
+ .io_flush (b2m_fsm_aggregate_engine_io_flush ), //i
+ .io_offset (b2m_fsm_aggregate_engine_io_offset[3:0] ), //i
+ .io_burstLength (b2m_fsm_sel_bytesInBurst[11:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ case(_zz_s2b_0_cmd_byteCount_10)
+ 3'b000 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount;
+ 3'b001 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_1;
+ 3'b010 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_2;
+ 3'b011 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_3;
+ 3'b100 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_4;
+ 3'b101 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_5;
+ 3'b110 : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_6;
+ default : _zz_s2b_0_cmd_byteCount_9 = _zz_s2b_0_cmd_byteCount_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s2b_0_cmd_byteCount_12)
+ 3'b000 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount;
+ 3'b001 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_1;
+ 3'b010 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_2;
+ 3'b011 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_3;
+ 3'b100 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_4;
+ 3'b101 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_5;
+ 3'b110 : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_6;
+ default : _zz_s2b_0_cmd_byteCount_11 = _zz_s2b_0_cmd_byteCount_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s2b_0_cmd_byteCount_14)
+ 3'b000 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount;
+ 3'b001 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_1;
+ 3'b010 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_2;
+ 3'b011 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_3;
+ 3'b100 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_4;
+ 3'b101 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_5;
+ 3'b110 : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_6;
+ default : _zz_s2b_0_cmd_byteCount_13 = _zz_s2b_0_cmd_byteCount_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_m2b_cmd_s0_priority_masked)
+ 2'b00 : _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3 = m2b_cmd_s0_priority_roundRobins_0;
+ 2'b01 : _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3 = m2b_cmd_s0_priority_roundRobins_1;
+ 2'b10 : _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3 = m2b_cmd_s0_priority_roundRobins_2;
+ default : _zz__zz_m2b_cmd_s0_priority_chosenOh_2_3 = m2b_cmd_s0_priority_roundRobins_3;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_b2m_fsm_arbiter_logic_priority_masked)
+ 2'b00 : _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3 = b2m_fsm_arbiter_logic_priority_roundRobins_0;
+ 2'b01 : _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3 = b2m_fsm_arbiter_logic_priority_roundRobins_1;
+ 2'b10 : _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3 = b2m_fsm_arbiter_logic_priority_roundRobins_2;
+ default : _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2_3 = b2m_fsm_arbiter_logic_priority_roundRobins_3;
+ endcase
+ end
+
+ assign ctrl_readErrorFlag = 1'b0;
+ assign ctrl_writeErrorFlag = 1'b0;
+ assign io_ctrl_PREADY = 1'b1;
+ always @(*) begin
+ io_ctrl_PRDATA = 32'h0;
+ case(io_ctrl_PADDR)
+ 14'h002c : begin
+ io_ctrl_PRDATA[0 : 0] = channels_0_channelValid;
+ end
+ 14'h0054 : begin
+ io_ctrl_PRDATA[0 : 0] = channels_0_interrupts_completion_valid;
+ io_ctrl_PRDATA[2 : 2] = channels_0_interrupts_onChannelCompletion_valid;
+ io_ctrl_PRDATA[3 : 3] = channels_0_interrupts_onLinkedListUpdate_valid;
+ io_ctrl_PRDATA[4 : 4] = channels_0_interrupts_s2mPacket_valid;
+ end
+ 14'h0060 : begin
+ io_ctrl_PRDATA[26 : 0] = channels_0_bytesProbe_value;
+ end
+ 14'h00ac : begin
+ io_ctrl_PRDATA[0 : 0] = channels_1_channelValid;
+ end
+ 14'h00d4 : begin
+ io_ctrl_PRDATA[0 : 0] = channels_1_interrupts_completion_valid;
+ io_ctrl_PRDATA[2 : 2] = channels_1_interrupts_onChannelCompletion_valid;
+ io_ctrl_PRDATA[3 : 3] = channels_1_interrupts_onLinkedListUpdate_valid;
+ end
+ 14'h00e0 : begin
+ io_ctrl_PRDATA[26 : 0] = channels_1_bytesProbe_value;
+ end
+ default : begin
+ end
+ endcase
+ if(when_Apb3SlaveFactory_l81_1) begin
+ io_ctrl_PRDATA[31 : 0] = _zz_io_ctrl_PRDATA[31 : 0];
+ end
+ if(when_Apb3SlaveFactory_l81_3) begin
+ io_ctrl_PRDATA[31 : 0] = _zz_io_ctrl_PRDATA_1[31 : 0];
+ end
+ end
+
+ assign ctrl_askWrite = ((io_ctrl_PSEL[0] && io_ctrl_PENABLE) && io_ctrl_PWRITE);
+ assign ctrl_askRead = ((io_ctrl_PSEL[0] && io_ctrl_PENABLE) && (! io_ctrl_PWRITE));
+ assign ctrl_doWrite = (((io_ctrl_PSEL[0] && io_ctrl_PENABLE) && io_ctrl_PREADY) && io_ctrl_PWRITE);
+ assign ctrl_doRead = (((io_ctrl_PSEL[0] && io_ctrl_PENABLE) && io_ctrl_PREADY) && (! io_ctrl_PWRITE));
+ assign io_ctrl_PSLVERROR = ((ctrl_doWrite && ctrl_writeErrorFlag) || (ctrl_doRead && ctrl_readErrorFlag));
+ always @(*) begin
+ channels_0_channelStart = 1'b0;
+ if(when_BusSlaveFactory_l377) begin
+ if(when_BusSlaveFactory_l379) begin
+ channels_0_channelStart = _zz_channels_0_channelStart[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_2) begin
+ if(when_BusSlaveFactory_l379_2) begin
+ channels_0_channelStart = _zz_channels_0_channelStart_1[0];
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_channelCompletion = 1'b0;
+ if(channels_0_channelValid) begin
+ if(channels_0_channelStop) begin
+ if(channels_0_readyToStop) begin
+ channels_0_channelCompletion = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_descriptorStart = 1'b0;
+ if(channels_0_ctrl_kick) begin
+ channels_0_descriptorStart = 1'b1;
+ end
+ if(when_DmaSg_l318) begin
+ if(when_DmaSg_l320) begin
+ if(when_DmaSg_l322) begin
+ channels_0_descriptorStart = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_descriptorCompletion = 1'b0;
+ if(channels_0_pop_b2m_packetSync) begin
+ if(when_DmaSg_l532) begin
+ if(channels_0_push_s2b_completionOnLast) begin
+ channels_0_descriptorCompletion = 1'b1;
+ end
+ end
+ end
+ if(when_DmaSg_l547) begin
+ channels_0_descriptorCompletion = 1'b1;
+ end
+ if(channels_0_channelValid) begin
+ if(channels_0_channelStop) begin
+ if(channels_0_readyToStop) begin
+ channels_0_descriptorCompletion = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_readyToStop = 1'b1;
+ if(channels_0_ll_waitDone) begin
+ channels_0_readyToStop = 1'b0;
+ end
+ if(when_DmaSg_l563) begin
+ channels_0_readyToStop = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ channels_0_bytesProbe_incr_valid = 1'b0;
+ if(io_write_rsp_fire) begin
+ if(when_DmaSg_l1116) begin
+ channels_0_bytesProbe_incr_valid = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_bytesProbe_incr_payload = 12'bxxxxxxxxxxxx;
+ if(io_write_rsp_fire) begin
+ if(when_DmaSg_l1116) begin
+ channels_0_bytesProbe_incr_payload = b2m_rsp_context_length;
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_ll_sgStart = 1'b0;
+ if(when_BusSlaveFactory_l377_3) begin
+ if(when_BusSlaveFactory_l379_3) begin
+ channels_0_ll_sgStart = _zz_channels_0_ll_sgStart[0];
+ end
+ end
+ end
+
+ assign channels_0_ll_requestLl = ((((channels_0_channelValid && channels_0_ll_valid) && (! channels_0_channelStop)) && (! channels_0_ll_waitDone)) && ((! channels_0_descriptorValid) || channels_0_ll_requireSync));
+ always @(*) begin
+ channels_0_ll_descriptorUpdated = 1'b0;
+ if(when_DmaSg_l318) begin
+ if(when_DmaSg_l328) begin
+ channels_0_ll_descriptorUpdated = 1'b1;
+ end
+ end
+ end
+
+ assign when_DmaSg_l318 = (((channels_0_ll_valid && channels_0_ll_waitDone) && channels_0_ll_writeDone) && channels_0_ll_readDone);
+ assign when_DmaSg_l320 = (! channels_0_ll_justASync);
+ assign when_DmaSg_l322 = (! channels_0_ll_gotDescriptorStall);
+ assign when_DmaSg_l328 = (! channels_0_ll_head);
+ assign channels_0_fifo_base = 11'h0;
+ assign channels_0_fifo_words = 11'h1ff;
+ assign channels_0_fifo_push_availableDecr = 11'h0;
+ assign channels_0_fifo_push_ptrWithBase = ((channels_0_fifo_base & (~ channels_0_fifo_words)) | (channels_0_fifo_push_ptr & channels_0_fifo_words));
+ assign channels_0_fifo_pop_ptrWithBase = ((channels_0_fifo_base & (~ channels_0_fifo_words)) | (channels_0_fifo_pop_ptr & channels_0_fifo_words));
+ assign channels_0_fifo_pop_empty = (channels_0_fifo_pop_ptr == channels_0_fifo_push_ptr);
+ assign channels_0_fifo_pop_withOverride_backupNext = (_zz_channels_0_fifo_pop_withOverride_backupNext - channels_0_fifo_pop_bytesDecr_value);
+ always @(*) begin
+ channels_0_fifo_pop_withOverride_load = 1'b0;
+ if(when_DmaSg_l457) begin
+ channels_0_fifo_pop_withOverride_load = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ channels_0_fifo_pop_withOverride_unload = 1'b0;
+ if(channels_0_pop_b2m_packetSync) begin
+ channels_0_fifo_pop_withOverride_unload = 1'b1;
+ end
+ end
+
+ assign when_DmaSg_l409 = (channels_0_channelStart || channels_0_fifo_pop_withOverride_unload);
+ assign channels_0_fifo_pop_bytes = channels_0_fifo_pop_withOverride_exposed;
+ assign channels_0_fifo_empty = (channels_0_fifo_push_ptr == channels_0_fifo_pop_ptr);
+ always @(*) begin
+ channels_0_push_s2b_packetEvent = 1'b0;
+ if(when_DmaSg_l679) begin
+ channels_0_push_s2b_packetEvent = 1'b1;
+ end
+ end
+
+ assign when_DmaSg_l457 = (channels_0_push_s2b_packetEvent && channels_0_push_s2b_completionOnLast);
+ assign channels_0_pop_b2m_bytePerBurst = 12'h3ff;
+ always @(*) begin
+ channels_0_pop_b2m_fire = 1'b0;
+ if(when_DmaSg_l935) begin
+ if(_zz_when[0]) begin
+ channels_0_pop_b2m_fire = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_pop_b2m_packetSync = 1'b0;
+ if(when_DmaSg_l523) begin
+ if(channels_0_pop_b2m_packet) begin
+ channels_0_pop_b2m_packetSync = 1'b1;
+ end
+ end
+ if(io_write_rsp_fire) begin
+ if(when_DmaSg_l1116) begin
+ if(b2m_rsp_context_doPacketSync) begin
+ channels_0_pop_b2m_packetSync = 1'b1;
+ end
+ end
+ end
+ end
+
+ assign when_DmaSg_l505 = (channels_0_channelStart || channels_0_pop_b2m_fire);
+ always @(*) begin
+ channels_0_pop_b2m_memRsp = 1'b0;
+ if(io_write_rsp_fire) begin
+ if(_zz_when_2[0]) begin
+ channels_0_pop_b2m_memRsp = 1'b1;
+ end
+ end
+ end
+
+ assign channels_0_pop_b2m_selfFlush = (channels_0_pop_b2m_bytesLeft < _zz_channels_0_pop_b2m_selfFlush);
+ assign channels_0_pop_b2m_request = ((((((channels_0_descriptorValid && (! channels_0_channelStop)) && (! channels_0_pop_b2m_waitFinalRsp)) && channels_0_pop_memory) && ((_zz_channels_0_pop_b2m_request < channels_0_fifo_pop_bytes) || (((channels_0_fifo_push_available < _zz_channels_0_pop_b2m_request_1) || channels_0_pop_b2m_flush) || channels_0_pop_b2m_selfFlush))) && (channels_0_fifo_pop_bytes != 14'h0)) && (channels_0_pop_b2m_memPending != 4'b1111));
+ always @(*) begin
+ channels_0_pop_b2m_memPendingInc = 1'b0;
+ if(when_DmaSg_l758_1) begin
+ if(when_DmaSg_l773_1) begin
+ channels_0_pop_b2m_memPendingInc = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_0_pop_b2m_decrBytes = 14'h0;
+ if(b2m_fsm_s1) begin
+ if(when_DmaSg_l996) begin
+ channels_0_pop_b2m_decrBytes = {1'd0, b2m_fsm_bytesInBurstP1};
+ end
+ end
+ end
+
+ assign when_DmaSg_l523 = ((channels_0_pop_b2m_memPending == 4'b0000) && (channels_0_fifo_pop_bytes == 14'h0));
+ assign when_DmaSg_l532 = (channels_0_descriptorValid && (! channels_0_push_memory));
+ assign when_DmaSg_l536 = (! channels_0_pop_b2m_waitFinalRsp);
+ assign when_DmaSg_l547 = ((channels_0_descriptorValid && (channels_0_pop_b2m_memPending == 4'b0000)) && channels_0_pop_b2m_waitFinalRsp);
+ assign when_DmaSg_l563 = (channels_0_pop_b2m_memPending != 4'b0000);
+ assign channels_0_readyForChannelCompletion = 1'b1;
+ assign when_DmaSg_l575 = (! channels_0_descriptorValid);
+ always @(*) begin
+ _zz_when_DmaSg_l593 = 1'b1;
+ if(channels_0_ctrl_kick) begin
+ _zz_when_DmaSg_l593 = 1'b0;
+ end
+ if(channels_0_ll_valid) begin
+ _zz_when_DmaSg_l593 = 1'b0;
+ end
+ end
+
+ assign when_DmaSg_l593 = (_zz_when_DmaSg_l593 && channels_0_readyForChannelCompletion);
+ assign channels_0_s2b_full = (channels_0_fifo_push_available < 11'h002);
+ assign when_DmaSg_l255 = (channels_0_descriptorValid && channels_0_descriptorCompletion);
+ assign when_DmaSg_l255_1 = (! channels_0_interrupts_completion_enable);
+ assign when_DmaSg_l255_2 = (channels_0_channelValid && channels_0_channelCompletion);
+ assign when_DmaSg_l255_3 = (! channels_0_interrupts_onChannelCompletion_enable);
+ assign when_DmaSg_l255_4 = (! channels_0_interrupts_onLinkedListUpdate_enable);
+ assign when_DmaSg_l255_5 = (! channels_0_interrupts_s2mPacket_enable);
+ assign when_DmaSg_l625 = (channels_0_channelStart || channels_0_descriptorStart);
+ always @(*) begin
+ channels_1_channelStart = 1'b0;
+ if(when_BusSlaveFactory_l377_4) begin
+ if(when_BusSlaveFactory_l379_4) begin
+ channels_1_channelStart = _zz_channels_1_channelStart[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_6) begin
+ if(when_BusSlaveFactory_l379_6) begin
+ channels_1_channelStart = _zz_channels_1_channelStart_1[0];
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_1_channelCompletion = 1'b0;
+ if(channels_1_channelValid) begin
+ if(channels_1_channelStop) begin
+ if(channels_1_readyToStop) begin
+ channels_1_channelCompletion = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_1_descriptorStart = 1'b0;
+ if(channels_1_ctrl_kick) begin
+ channels_1_descriptorStart = 1'b1;
+ end
+ if(when_DmaSg_l318_1) begin
+ if(when_DmaSg_l320_1) begin
+ if(when_DmaSg_l322_1) begin
+ channels_1_descriptorStart = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_1_descriptorCompletion = 1'b0;
+ if(when_DmaSg_l483) begin
+ channels_1_descriptorCompletion = 1'b1;
+ end
+ if(channels_1_channelValid) begin
+ if(channels_1_channelStop) begin
+ if(channels_1_readyToStop) begin
+ channels_1_descriptorCompletion = 1'b1;
+ end
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_1_readyToStop = 1'b1;
+ if(channels_1_ll_waitDone) begin
+ channels_1_readyToStop = 1'b0;
+ end
+ if(when_DmaSg_l562) begin
+ channels_1_readyToStop = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ channels_1_bytesProbe_incr_valid = 1'b0;
+ if(when_DmaSg_l874) begin
+ channels_1_bytesProbe_incr_valid = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ channels_1_bytesProbe_incr_payload = 12'bxxxxxxxxxxxx;
+ if(when_DmaSg_l874) begin
+ channels_1_bytesProbe_incr_payload = m2b_rsp_context_length;
+ end
+ end
+
+ always @(*) begin
+ channels_1_ll_sgStart = 1'b0;
+ if(when_BusSlaveFactory_l377_7) begin
+ if(when_BusSlaveFactory_l379_7) begin
+ channels_1_ll_sgStart = _zz_channels_1_ll_sgStart[0];
+ end
+ end
+ end
+
+ assign channels_1_ll_requestLl = ((((channels_1_channelValid && channels_1_ll_valid) && (! channels_1_channelStop)) && (! channels_1_ll_waitDone)) && ((! channels_1_descriptorValid) || channels_1_ll_requireSync));
+ always @(*) begin
+ channels_1_ll_descriptorUpdated = 1'b0;
+ if(when_DmaSg_l318_1) begin
+ if(when_DmaSg_l328_1) begin
+ channels_1_ll_descriptorUpdated = 1'b1;
+ end
+ end
+ end
+
+ assign when_DmaSg_l318_1 = (((channels_1_ll_valid && channels_1_ll_waitDone) && channels_1_ll_writeDone) && channels_1_ll_readDone);
+ assign when_DmaSg_l320_1 = (! channels_1_ll_justASync);
+ assign when_DmaSg_l322_1 = (! channels_1_ll_gotDescriptorStall);
+ assign when_DmaSg_l328_1 = (! channels_1_ll_head);
+ assign channels_1_fifo_base = 11'h200;
+ assign channels_1_fifo_words = 11'h1ff;
+ always @(*) begin
+ channels_1_fifo_push_availableDecr = 11'h0;
+ if(m2b_cmd_s1_valid) begin
+ if(io_read_cmd_ready) begin
+ if(when_DmaSg_l828) begin
+ channels_1_fifo_push_availableDecr = {1'd0, m2b_cmd_s1_fifoPushDecr};
+ end
+ end
+ end
+ end
+
+ assign channels_1_fifo_push_ptrWithBase = ((channels_1_fifo_base & (~ channels_1_fifo_words)) | (channels_1_fifo_push_ptr & channels_1_fifo_words));
+ assign channels_1_fifo_pop_ptrWithBase = ((channels_1_fifo_base & (~ channels_1_fifo_words)) | (channels_1_fifo_pop_ptr & channels_1_fifo_words));
+ assign channels_1_fifo_pop_empty = (channels_1_fifo_pop_ptr == channels_1_fifo_push_ptr);
+ assign channels_1_fifo_pop_bytes = channels_1_fifo_pop_withoutOverride_exposed;
+ assign channels_1_fifo_empty = (channels_1_fifo_push_ptr == channels_1_fifo_pop_ptr);
+ assign channels_1_push_m2b_bytePerBurst = 12'h3ff;
+ always @(*) begin
+ channels_1_push_m2b_memPendingIncr = 1'b0;
+ if(when_DmaSg_l758) begin
+ if(when_DmaSg_l773) begin
+ channels_1_push_m2b_memPendingIncr = 1'b1;
+ end
+ end
+ end
+
+ always @(*) begin
+ channels_1_push_m2b_memPendingDecr = 1'b0;
+ if(when_DmaSg_l893) begin
+ channels_1_push_m2b_memPendingDecr = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ channels_1_push_m2b_loadRequest = (((((channels_1_descriptorValid && (! channels_1_channelStop)) && (! channels_1_push_m2b_loadDone)) && channels_1_push_memory) && (_zz_channels_1_push_m2b_loadRequest < channels_1_fifo_push_available)) && (channels_1_push_m2b_memPending != 4'b1111));
+ if(when_DmaSg_l486) begin
+ channels_1_push_m2b_loadRequest = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ channels_1_pop_b2s_veryLastTrigger = 1'b0;
+ if(when_DmaSg_l847) begin
+ if(when_DmaSg_l848) begin
+ channels_1_pop_b2s_veryLastTrigger = 1'b1;
+ end
+ end
+ end
+
+ assign when_DmaSg_l474 = (channels_1_pop_b2s_veryLastTrigger && channels_1_pop_b2s_last);
+ assign when_DmaSg_l483 = ((((channels_1_descriptorValid && (! channels_1_pop_memory)) && channels_1_push_memory) && channels_1_push_m2b_loadDone) && (channels_1_push_m2b_memPending == 4'b0000));
+ assign when_DmaSg_l486 = (((! channels_1_pop_memory) && channels_1_pop_b2s_veryLastValid) && (channels_1_push_m2b_bytesLeft <= _zz_when_DmaSg_l486));
+ assign when_DmaSg_l562 = (channels_1_push_m2b_memPending != 4'b0000);
+ always @(*) begin
+ channels_1_readyForChannelCompletion = 1'b1;
+ if(when_DmaSg_l566) begin
+ channels_1_readyForChannelCompletion = 1'b0;
+ end
+ end
+
+ assign when_DmaSg_l566 = ((! channels_1_pop_memory) && (! channels_1_fifo_pop_empty));
+ assign when_DmaSg_l575_1 = (! channels_1_descriptorValid);
+ always @(*) begin
+ _zz_when_DmaSg_l593_1 = 1'b1;
+ if(channels_1_ctrl_kick) begin
+ _zz_when_DmaSg_l593_1 = 1'b0;
+ end
+ if(channels_1_ll_valid) begin
+ _zz_when_DmaSg_l593_1 = 1'b0;
+ end
+ end
+
+ assign when_DmaSg_l593_1 = (_zz_when_DmaSg_l593_1 && channels_1_readyForChannelCompletion);
+ assign channels_1_s2b_full = (channels_1_fifo_push_available < 11'h002);
+ assign when_DmaSg_l255_6 = (channels_1_descriptorValid && channels_1_descriptorCompletion);
+ assign when_DmaSg_l255_7 = (! channels_1_interrupts_completion_enable);
+ assign when_DmaSg_l255_8 = (channels_1_channelValid && channels_1_channelCompletion);
+ assign when_DmaSg_l255_9 = (! channels_1_interrupts_onChannelCompletion_enable);
+ assign when_DmaSg_l255_10 = (! channels_1_interrupts_onLinkedListUpdate_enable);
+ assign when_DmaSg_l625_1 = (channels_1_channelStart || channels_1_descriptorStart);
+ assign io_inputs_0_fire = (io_inputs_0_valid && io_inputs_0_ready);
+ assign when_package_l12 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0000));
+ assign when_package_l12_1 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0001));
+ assign when_package_l12_2 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0010));
+ assign when_package_l12_3 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0011));
+ assign when_package_l12_4 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0100));
+ assign when_package_l12_5 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0101));
+ assign when_package_l12_6 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0110));
+ assign when_package_l12_7 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b0111));
+ assign when_package_l12_8 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1000));
+ assign when_package_l12_9 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1001));
+ assign when_package_l12_10 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1010));
+ assign when_package_l12_11 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1011));
+ assign when_package_l12_12 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1100));
+ assign when_package_l12_13 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1101));
+ assign when_package_l12_14 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1110));
+ assign when_package_l12_15 = (io_inputs_0_fire && (io_inputs_0_payload_sink == 4'b1111));
+ assign s2b_0_cmd_firsts = {io_inputs_0_payload_last_regNextWhen_15,{io_inputs_0_payload_last_regNextWhen_14,{io_inputs_0_payload_last_regNextWhen_13,{io_inputs_0_payload_last_regNextWhen_12,{io_inputs_0_payload_last_regNextWhen_11,{io_inputs_0_payload_last_regNextWhen_10,{io_inputs_0_payload_last_regNextWhen_9,{io_inputs_0_payload_last_regNextWhen_8,{io_inputs_0_payload_last_regNextWhen_7,{io_inputs_0_payload_last_regNextWhen_6,{_zz_s2b_0_cmd_firsts,_zz_s2b_0_cmd_firsts_1}}}}}}}}}}};
+ assign s2b_0_cmd_first = s2b_0_cmd_firsts[io_inputs_0_payload_sink];
+ assign s2b_0_cmd_channelsOh = ((((channels_0_channelValid && (s2b_0_cmd_first || (! channels_0_push_s2b_waitFirst))) && (! channels_0_push_memory)) && 1'b1) && (io_inputs_0_payload_sink == 4'b0000));
+ assign s2b_0_cmd_noHit = (! (|s2b_0_cmd_channelsOh));
+ assign s2b_0_cmd_channelsFull = (channels_0_s2b_full || (channels_0_push_s2b_packetLock && io_inputs_0_payload_last));
+ always @(*) begin
+ io_inputs_0_thrown_valid = io_inputs_0_valid;
+ if(s2b_0_cmd_noHit) begin
+ io_inputs_0_thrown_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ io_inputs_0_ready = io_inputs_0_thrown_ready;
+ if(s2b_0_cmd_noHit) begin
+ io_inputs_0_ready = 1'b1;
+ end
+ end
+
+ assign io_inputs_0_thrown_payload_data = io_inputs_0_payload_data;
+ assign io_inputs_0_thrown_payload_mask = io_inputs_0_payload_mask;
+ assign io_inputs_0_thrown_payload_sink = io_inputs_0_payload_sink;
+ assign io_inputs_0_thrown_payload_last = io_inputs_0_payload_last;
+ assign _zz_io_inputs_0_thrown_ready = (! (|(s2b_0_cmd_channelsOh & s2b_0_cmd_channelsFull)));
+ assign s2b_0_cmd_sinkHalted_valid = (io_inputs_0_thrown_valid && _zz_io_inputs_0_thrown_ready);
+ assign io_inputs_0_thrown_ready = (s2b_0_cmd_sinkHalted_ready && _zz_io_inputs_0_thrown_ready);
+ assign s2b_0_cmd_sinkHalted_payload_data = io_inputs_0_thrown_payload_data;
+ assign s2b_0_cmd_sinkHalted_payload_mask = io_inputs_0_thrown_payload_mask;
+ assign s2b_0_cmd_sinkHalted_payload_sink = io_inputs_0_thrown_payload_sink;
+ assign s2b_0_cmd_sinkHalted_payload_last = io_inputs_0_thrown_payload_last;
+ assign _zz_s2b_0_cmd_byteCount = 4'b0000;
+ assign _zz_s2b_0_cmd_byteCount_1 = 4'b0001;
+ assign _zz_s2b_0_cmd_byteCount_2 = 4'b0001;
+ assign _zz_s2b_0_cmd_byteCount_3 = 4'b0010;
+ assign _zz_s2b_0_cmd_byteCount_4 = 4'b0001;
+ assign _zz_s2b_0_cmd_byteCount_5 = 4'b0010;
+ assign _zz_s2b_0_cmd_byteCount_6 = 4'b0010;
+ assign _zz_s2b_0_cmd_byteCount_7 = 4'b0011;
+ assign s2b_0_cmd_byteCount = (_zz_s2b_0_cmd_byteCount_8 + _zz_s2b_0_cmd_byteCount_13);
+ assign s2b_0_cmd_context_channel = s2b_0_cmd_channelsOh;
+ assign s2b_0_cmd_context_bytes = s2b_0_cmd_byteCount;
+ assign s2b_0_cmd_context_flush = io_inputs_0_payload_last;
+ assign s2b_0_cmd_context_packet = io_inputs_0_payload_last;
+ assign s2b_0_cmd_sinkHalted_ready = memory_core_io_writes_0_cmd_ready;
+ assign memory_core_io_writes_0_cmd_payload_address = channels_0_fifo_push_ptrWithBase[9:0];
+ assign memory_core_io_writes_0_cmd_payload_context = {s2b_0_cmd_context_packet,{s2b_0_cmd_context_flush,{s2b_0_cmd_context_bytes,s2b_0_cmd_context_channel}}};
+ assign memory_core_io_writes_0_cmd_fire = (s2b_0_cmd_sinkHalted_valid && memory_core_io_writes_0_cmd_ready);
+ assign when_DmaSg_l665 = (s2b_0_cmd_channelsOh[0] && memory_core_io_writes_0_cmd_fire);
+ assign _zz_s2b_0_rsp_context_channel = memory_core_io_writes_0_rsp_payload_context;
+ assign s2b_0_rsp_context_channel = _zz_s2b_0_rsp_context_channel[0 : 0];
+ assign s2b_0_rsp_context_bytes = _zz_s2b_0_rsp_context_channel[4 : 1];
+ assign s2b_0_rsp_context_flush = _zz_s2b_0_rsp_context_channel[5];
+ assign s2b_0_rsp_context_packet = _zz_s2b_0_rsp_context_channel[6];
+ assign _zz_channels_0_fifo_pop_bytesIncr_value = (memory_core_io_writes_0_rsp_valid && s2b_0_rsp_context_channel[0]);
+ assign when_DmaSg_l679 = (_zz_channels_0_fifo_pop_bytesIncr_value && s2b_0_rsp_context_packet);
+ assign when_DmaSg_l681 = (_zz_channels_0_fifo_pop_bytesIncr_value && s2b_0_rsp_context_flush);
+ assign when_DmaSg_l682 = (_zz_channels_0_fifo_pop_bytesIncr_value && s2b_0_rsp_context_packet);
+ assign b2s_0_cmd_channelsOh = (((channels_1_channelValid && (! channels_1_pop_memory)) && 1'b1) && (! channels_1_fifo_pop_empty));
+ assign b2s_0_cmd_veryLastPtr = channels_1_pop_b2s_veryLastPtr;
+ assign b2s_0_cmd_address = channels_1_fifo_pop_ptrWithBase;
+ assign b2s_0_cmd_context_channel = b2s_0_cmd_channelsOh;
+ assign b2s_0_cmd_context_veryLast = ((channels_1_pop_b2s_veryLastValid && (b2s_0_cmd_address[10 : 1] == b2s_0_cmd_veryLastPtr[10 : 1])) && (b2s_0_cmd_address[0 : 0] == 1'b1));
+ assign b2s_0_cmd_context_endPacket = channels_1_pop_b2s_veryLastEndPacket;
+ assign memory_core_io_reads_0_cmd_valid = (|b2s_0_cmd_channelsOh);
+ assign memory_core_io_reads_0_cmd_payload_address = b2s_0_cmd_address[9:0];
+ assign memory_core_io_reads_0_cmd_payload_context = {b2s_0_cmd_context_endPacket,{b2s_0_cmd_context_veryLast,b2s_0_cmd_context_channel}};
+ assign _zz_b2s_0_rsp_context_channel = memory_core_io_reads_0_rsp_payload_context;
+ assign b2s_0_rsp_context_channel = _zz_b2s_0_rsp_context_channel[0 : 0];
+ assign b2s_0_rsp_context_veryLast = _zz_b2s_0_rsp_context_channel[1];
+ assign b2s_0_rsp_context_endPacket = _zz_b2s_0_rsp_context_channel[2];
+ assign io_outputs_0_valid = memory_core_io_reads_0_rsp_valid;
+ assign io_outputs_0_payload_data = memory_core_io_reads_0_rsp_payload_data;
+ assign io_outputs_0_payload_mask = memory_core_io_reads_0_rsp_payload_mask;
+ assign io_outputs_0_payload_sink = channels_1_pop_b2s_sinkId;
+ assign io_outputs_0_payload_last = (b2s_0_rsp_context_veryLast && b2s_0_rsp_context_endPacket);
+ assign io_outputs_0_fire = (io_outputs_0_valid && io_outputs_0_ready);
+ assign when_DmaSg_l725 = (io_outputs_0_fire && b2s_0_rsp_context_veryLast);
+ assign when_DmaSg_l726 = b2s_0_rsp_context_channel[0];
+ assign _zz_m2b_cmd_s0_priority_masked = channels_1_priority;
+ assign m2b_cmd_s0_priority_masked = (channels_1_push_m2b_loadRequest && (channels_1_priority == _zz_m2b_cmd_s0_priority_masked));
+ assign _zz_m2b_cmd_s0_priority_chosenOh = m2b_cmd_s0_priority_masked;
+ assign _zz_m2b_cmd_s0_priority_chosenOh_1 = {_zz_m2b_cmd_s0_priority_chosenOh,_zz_m2b_cmd_s0_priority_chosenOh};
+ assign _zz_m2b_cmd_s0_priority_chosenOh_2 = (_zz_m2b_cmd_s0_priority_chosenOh_1 & (~ _zz__zz_m2b_cmd_s0_priority_chosenOh_2));
+ assign m2b_cmd_s0_priority_chosenOh = (_zz_m2b_cmd_s0_priority_chosenOh_2[1 : 1] | _zz_m2b_cmd_s0_priority_chosenOh_2[0 : 0]);
+ assign m2b_cmd_s0_priority_weightLast = (channels_1_weight == m2b_cmd_s0_priority_counter);
+ assign m2b_cmd_s0_priority_contextNext = (m2b_cmd_s0_priority_weightLast ? m2b_cmd_s0_priority_chosenOh[0 : 0] : m2b_cmd_s0_priority_chosenOh);
+ assign when_DmaSg_l758 = (! m2b_cmd_s0_valid);
+ assign when_DmaSg_l760 = (|channels_1_push_m2b_loadRequest);
+ assign when_DmaSg_l763 = (2'b00 == _zz_m2b_cmd_s0_priority_masked);
+ assign when_DmaSg_l763_1 = (2'b01 == _zz_m2b_cmd_s0_priority_masked);
+ assign when_DmaSg_l763_2 = (2'b10 == _zz_m2b_cmd_s0_priority_masked);
+ assign when_DmaSg_l763_3 = (2'b11 == _zz_m2b_cmd_s0_priority_masked);
+ assign when_DmaSg_l773 = (channels_1_push_m2b_loadRequest && m2b_cmd_s0_priority_chosenOh[0]);
+ assign m2b_cmd_s0_address = channels_1_push_m2b_address;
+ assign m2b_cmd_s0_bytesLeft = channels_1_push_m2b_bytesLeft;
+ assign m2b_cmd_s0_readAddressBurstRange = m2b_cmd_s0_address[11 : 0];
+ assign m2b_cmd_s0_lengthHead = ((~ m2b_cmd_s0_readAddressBurstRange) & channels_1_push_m2b_bytePerBurst);
+ assign m2b_cmd_s0_length = _zz_m2b_cmd_s0_length[11:0];
+ assign m2b_cmd_s0_lastBurst = (m2b_cmd_s0_bytesLeft == _zz_m2b_cmd_s0_lastBurst);
+ assign m2b_cmd_s1_context_start = m2b_cmd_s1_address[3:0];
+ assign m2b_cmd_s1_context_stop = _zz_m2b_cmd_s1_context_stop[3:0];
+ assign m2b_cmd_s1_context_last = m2b_cmd_s1_lastBurst;
+ assign m2b_cmd_s1_context_length = m2b_cmd_s1_length;
+ always @(*) begin
+ io_read_cmd_valid = 1'b0;
+ if(m2b_cmd_s1_valid) begin
+ io_read_cmd_valid = 1'b1;
+ end
+ end
+
+ assign io_read_cmd_payload_last = 1'b1;
+ assign io_read_cmd_payload_fragment_opcode = 1'b0;
+ assign io_read_cmd_payload_fragment_address = m2b_cmd_s1_address;
+ assign io_read_cmd_payload_fragment_length = m2b_cmd_s1_length;
+ assign io_read_cmd_payload_fragment_context = {m2b_cmd_s1_context_last,{m2b_cmd_s1_context_length,{m2b_cmd_s1_context_stop,m2b_cmd_s1_context_start}}};
+ assign m2b_cmd_s1_addressNext = (_zz_m2b_cmd_s1_addressNext + 32'h00000001);
+ assign m2b_cmd_s1_byteLeftNext = (_zz_m2b_cmd_s1_byteLeftNext - 26'h0000001);
+ assign m2b_cmd_s1_fifoPushDecr = (_zz_m2b_cmd_s1_fifoPushDecr >>> 2'd3);
+ assign when_DmaSg_l828 = 1'b1;
+ assign _zz_m2b_rsp_context_start = io_read_rsp_payload_fragment_context;
+ assign m2b_rsp_context_start = _zz_m2b_rsp_context_start[3 : 0];
+ assign m2b_rsp_context_stop = _zz_m2b_rsp_context_start[7 : 4];
+ assign m2b_rsp_context_length = _zz_m2b_rsp_context_start[19 : 8];
+ assign m2b_rsp_context_last = _zz_m2b_rsp_context_start[20];
+ assign m2b_rsp_veryLast = (m2b_rsp_context_last && io_read_rsp_payload_last);
+ assign io_read_rsp_fire = (io_read_rsp_valid && io_read_rsp_ready);
+ assign when_DmaSg_l847 = (io_read_rsp_fire && m2b_rsp_veryLast);
+ assign when_DmaSg_l848 = 1'b1;
+ always @(*) begin
+ memory_core_io_writes_1_cmd_payload_mask[0] = ((! (m2b_rsp_first && (4'b0000 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0000))));
+ memory_core_io_writes_1_cmd_payload_mask[1] = ((! (m2b_rsp_first && (4'b0001 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0001))));
+ memory_core_io_writes_1_cmd_payload_mask[2] = ((! (m2b_rsp_first && (4'b0010 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0010))));
+ memory_core_io_writes_1_cmd_payload_mask[3] = ((! (m2b_rsp_first && (4'b0011 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0011))));
+ memory_core_io_writes_1_cmd_payload_mask[4] = ((! (m2b_rsp_first && (4'b0100 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0100))));
+ memory_core_io_writes_1_cmd_payload_mask[5] = ((! (m2b_rsp_first && (4'b0101 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0101))));
+ memory_core_io_writes_1_cmd_payload_mask[6] = ((! (m2b_rsp_first && (4'b0110 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0110))));
+ memory_core_io_writes_1_cmd_payload_mask[7] = ((! (m2b_rsp_first && (4'b0111 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b0111))));
+ memory_core_io_writes_1_cmd_payload_mask[8] = ((! (m2b_rsp_first && (4'b1000 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1000))));
+ memory_core_io_writes_1_cmd_payload_mask[9] = ((! (m2b_rsp_first && (4'b1001 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1001))));
+ memory_core_io_writes_1_cmd_payload_mask[10] = ((! (m2b_rsp_first && (4'b1010 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1010))));
+ memory_core_io_writes_1_cmd_payload_mask[11] = ((! (m2b_rsp_first && (4'b1011 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1011))));
+ memory_core_io_writes_1_cmd_payload_mask[12] = ((! (m2b_rsp_first && (4'b1100 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1100))));
+ memory_core_io_writes_1_cmd_payload_mask[13] = ((! (m2b_rsp_first && (4'b1101 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1101))));
+ memory_core_io_writes_1_cmd_payload_mask[14] = ((! (m2b_rsp_first && (4'b1110 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1110))));
+ memory_core_io_writes_1_cmd_payload_mask[15] = ((! (m2b_rsp_first && (4'b1111 < m2b_rsp_context_start))) && (! (io_read_rsp_payload_last && (m2b_rsp_context_stop < 4'b1111))));
+ end
+
+ assign m2b_rsp_writeContext_last = m2b_rsp_veryLast;
+ assign m2b_rsp_writeContext_lastOfBurst = io_read_rsp_payload_last;
+ assign m2b_rsp_writeContext_loadByteInNextBeat = ({1'b0,(io_read_rsp_payload_last ? m2b_rsp_context_stop : 4'b1111)} - {1'b0,(m2b_rsp_first ? m2b_rsp_context_start : 4'b0000)});
+ assign memory_core_io_writes_1_cmd_payload_address = channels_1_fifo_push_ptrWithBase[9:0];
+ assign io_read_rsp_ready = memory_core_io_writes_1_cmd_ready;
+ assign memory_core_io_writes_1_cmd_payload_context = {m2b_rsp_writeContext_loadByteInNextBeat,{m2b_rsp_writeContext_lastOfBurst,m2b_rsp_writeContext_last}};
+ assign memory_core_io_writes_1_cmd_fire = (io_read_rsp_valid && memory_core_io_writes_1_cmd_ready);
+ assign _zz_channels_1_fifo_push_ptrIncr_value = (memory_core_io_writes_1_cmd_fire && 1'b1);
+ assign when_DmaSg_l874 = (_zz_channels_1_fifo_push_ptrIncr_value && io_read_rsp_payload_last);
+ assign _zz_m2b_writeRsp_context_last = memory_core_io_writes_1_rsp_payload_context;
+ assign m2b_writeRsp_context_last = _zz_m2b_writeRsp_context_last[0];
+ assign m2b_writeRsp_context_lastOfBurst = _zz_m2b_writeRsp_context_last[1];
+ assign m2b_writeRsp_context_loadByteInNextBeat = _zz_m2b_writeRsp_context_last[6 : 2];
+ assign _zz_channels_1_fifo_pop_bytesIncr_value = (memory_core_io_writes_1_rsp_valid && 1'b1);
+ assign when_DmaSg_l893 = (_zz_channels_1_fifo_pop_bytesIncr_value && m2b_writeRsp_context_lastOfBurst);
+ assign _zz_b2m_fsm_arbiter_logic_priority_masked = channels_0_priority;
+ assign b2m_fsm_arbiter_logic_priority_masked = (channels_0_pop_b2m_request && (channels_0_priority == _zz_b2m_fsm_arbiter_logic_priority_masked));
+ assign _zz_b2m_fsm_arbiter_logic_priority_chosenOh = b2m_fsm_arbiter_logic_priority_masked;
+ assign _zz_b2m_fsm_arbiter_logic_priority_chosenOh_1 = {_zz_b2m_fsm_arbiter_logic_priority_chosenOh,_zz_b2m_fsm_arbiter_logic_priority_chosenOh};
+ assign _zz_b2m_fsm_arbiter_logic_priority_chosenOh_2 = (_zz_b2m_fsm_arbiter_logic_priority_chosenOh_1 & (~ _zz__zz_b2m_fsm_arbiter_logic_priority_chosenOh_2));
+ assign b2m_fsm_arbiter_logic_priority_chosenOh = (_zz_b2m_fsm_arbiter_logic_priority_chosenOh_2[1 : 1] | _zz_b2m_fsm_arbiter_logic_priority_chosenOh_2[0 : 0]);
+ assign b2m_fsm_arbiter_logic_priority_weightLast = (channels_0_weight == b2m_fsm_arbiter_logic_priority_counter);
+ assign b2m_fsm_arbiter_logic_priority_contextNext = (b2m_fsm_arbiter_logic_priority_weightLast ? b2m_fsm_arbiter_logic_priority_chosenOh[0 : 0] : b2m_fsm_arbiter_logic_priority_chosenOh);
+ assign when_DmaSg_l758_1 = (! b2m_fsm_arbiter_logic_valid);
+ assign when_DmaSg_l760_1 = (|channels_0_pop_b2m_request);
+ assign when_DmaSg_l763_4 = (2'b00 == _zz_b2m_fsm_arbiter_logic_priority_masked);
+ assign when_DmaSg_l763_5 = (2'b01 == _zz_b2m_fsm_arbiter_logic_priority_masked);
+ assign when_DmaSg_l763_6 = (2'b10 == _zz_b2m_fsm_arbiter_logic_priority_masked);
+ assign when_DmaSg_l763_7 = (2'b11 == _zz_b2m_fsm_arbiter_logic_priority_masked);
+ assign when_DmaSg_l773_1 = (channels_0_pop_b2m_request && b2m_fsm_arbiter_logic_priority_chosenOh[0]);
+ assign when_DmaSg_l935 = ((! b2m_fsm_sel_valid) && b2m_fsm_arbiter_logic_valid);
+ assign b2m_fsm_bytesInBurstP1 = ({1'b0,b2m_fsm_sel_bytesInBurst} + _zz_b2m_fsm_bytesInBurstP1);
+ assign b2m_fsm_addressNext = (b2m_fsm_sel_address + _zz_b2m_fsm_addressNext);
+ assign b2m_fsm_bytesLeftNext = ({1'b0,b2m_fsm_sel_bytesLeft} - _zz_b2m_fsm_bytesLeftNext);
+ assign b2m_fsm_isFinalCmd = b2m_fsm_bytesLeftNext[26];
+ assign b2m_fsm_s0 = (b2m_fsm_sel_valid && (! b2m_fsm_sel_valid_regNext));
+ assign when_DmaSg_l986 = (! b2m_fsm_sel_valid);
+ assign _zz_b2m_fsm_sel_bytesInBurst = (b2m_fsm_sel_bytesInFifo - 14'h0001);
+ assign _zz_b2m_fsm_sel_bytesInBurst_1 = ((_zz__zz_b2m_fsm_sel_bytesInBurst_1 < b2m_fsm_sel_bytesLeft) ? _zz__zz_b2m_fsm_sel_bytesInBurst_1_1 : b2m_fsm_sel_bytesLeft);
+ assign _zz_b2m_fsm_sel_bytesInBurst_2 = (b2m_fsm_sel_bytePerBurst - (_zz__zz_b2m_fsm_sel_bytesInBurst_2 & b2m_fsm_sel_bytePerBurst));
+ assign b2m_fsm_fifoCompletion = (_zz_b2m_fsm_fifoCompletion == _zz_b2m_fsm_fifoCompletion_1);
+ assign when_DmaSg_l996 = 1'b1;
+ assign when_DmaSg_l1001 = (! b2m_fsm_fifoCompletion);
+ assign when_DmaSg_l1013 = (b2m_fsm_sel_valid && b2m_fsm_sel_ready);
+ always @(*) begin
+ b2m_fsm_sel_ready = 1'b0;
+ if(when_DmaSg_l1102) begin
+ b2m_fsm_sel_ready = 1'b1;
+ end
+ end
+
+ assign b2m_fsm_fetch_context_ptr = channels_0_fifo_pop_ptr;
+ assign b2m_fsm_fetch_context_toggle = b2m_fsm_toggle;
+ assign memory_core_io_reads_1_cmd_payload_address = b2m_fsm_sel_ptr[9:0];
+ assign memory_core_io_reads_1_cmd_payload_context = {b2m_fsm_fetch_context_toggle,b2m_fsm_fetch_context_ptr};
+ assign when_DmaSg_l1033 = (b2m_fsm_sel_valid && memory_core_io_reads_1_cmd_ready);
+ assign _zz_b2m_fsm_aggregate_context_ptr = memory_core_io_reads_1_rsp_payload_context;
+ assign b2m_fsm_aggregate_context_ptr = _zz_b2m_fsm_aggregate_context_ptr[10 : 0];
+ assign b2m_fsm_aggregate_context_toggle = _zz_b2m_fsm_aggregate_context_ptr[11];
+ assign memory_core_io_reads_1_rsp_s2mPipe_valid = (memory_core_io_reads_1_rsp_valid || (! memory_core_io_reads_1_rsp_rValidN));
+ assign memory_core_io_reads_1_rsp_s2mPipe_payload_data = (memory_core_io_reads_1_rsp_rValidN ? memory_core_io_reads_1_rsp_payload_data : memory_core_io_reads_1_rsp_rData_data);
+ assign memory_core_io_reads_1_rsp_s2mPipe_payload_mask = (memory_core_io_reads_1_rsp_rValidN ? memory_core_io_reads_1_rsp_payload_mask : memory_core_io_reads_1_rsp_rData_mask);
+ assign memory_core_io_reads_1_rsp_s2mPipe_payload_context = (memory_core_io_reads_1_rsp_rValidN ? memory_core_io_reads_1_rsp_payload_context : memory_core_io_reads_1_rsp_rData_context);
+ assign when_Stream_l445 = (b2m_fsm_aggregate_context_toggle != b2m_fsm_toggle);
+ always @(*) begin
+ b2m_fsm_aggregate_memoryPort_valid = memory_core_io_reads_1_rsp_s2mPipe_valid;
+ if(when_Stream_l445) begin
+ b2m_fsm_aggregate_memoryPort_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ memory_core_io_reads_1_rsp_s2mPipe_ready = b2m_fsm_aggregate_memoryPort_ready;
+ if(when_Stream_l445) begin
+ memory_core_io_reads_1_rsp_s2mPipe_ready = 1'b1;
+ end
+ end
+
+ assign b2m_fsm_aggregate_memoryPort_payload_data = memory_core_io_reads_1_rsp_s2mPipe_payload_data;
+ assign b2m_fsm_aggregate_memoryPort_payload_mask = memory_core_io_reads_1_rsp_s2mPipe_payload_mask;
+ assign b2m_fsm_aggregate_memoryPort_payload_context = memory_core_io_reads_1_rsp_s2mPipe_payload_context;
+ assign b2m_fsm_aggregate_memoryPort_fire = (b2m_fsm_aggregate_memoryPort_valid && b2m_fsm_aggregate_memoryPort_ready);
+ assign when_DmaSg_l1050 = (! (b2m_fsm_sel_valid && (! b2m_fsm_sel_ready)));
+ assign b2m_fsm_aggregate_bytesToSkip = channels_0_pop_b2m_bytesToSkip;
+ assign b2m_fsm_aggregate_bytesToSkipMask = {((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1111)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= 4'b1110)),{((! b2m_fsm_aggregate_first) || (b2m_fsm_aggregate_bytesToSkip <= _zz_b2m_fsm_aggregate_bytesToSkipMask)),{(_zz_b2m_fsm_aggregate_bytesToSkipMask_1 || _zz_b2m_fsm_aggregate_bytesToSkipMask_2),{_zz_b2m_fsm_aggregate_bytesToSkipMask_3,{_zz_b2m_fsm_aggregate_bytesToSkipMask_4,_zz_b2m_fsm_aggregate_bytesToSkipMask_5}}}}}};
+ assign b2m_fsm_aggregate_memoryPort_ready = b2m_fsm_aggregate_engine_io_input_ready;
+ assign b2m_fsm_aggregate_engine_io_input_payload_mask = (b2m_fsm_aggregate_memoryPort_payload_mask & b2m_fsm_aggregate_bytesToSkipMask);
+ assign b2m_fsm_aggregate_engine_io_offset = b2m_fsm_sel_address[3:0];
+ assign b2m_fsm_aggregate_engine_io_flush = (! _zz_io_flush);
+ assign b2m_fsm_cmd_maskFirstTrigger = b2m_fsm_sel_address[3:0];
+ assign b2m_fsm_cmd_maskLastTriggerComb = (b2m_fsm_cmd_maskFirstTrigger + _zz_b2m_fsm_cmd_maskLastTriggerComb);
+ assign b2m_fsm_cmd_maskFirst = {(b2m_fsm_cmd_maskFirstTrigger <= 4'b1111),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b1110),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b1101),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b1100),{(b2m_fsm_cmd_maskFirstTrigger <= 4'b1011),{(b2m_fsm_cmd_maskFirstTrigger <= _zz_b2m_fsm_cmd_maskFirst),{_zz_b2m_fsm_cmd_maskFirst_1,{_zz_b2m_fsm_cmd_maskFirst_2,_zz_b2m_fsm_cmd_maskFirst_3}}}}}}}};
+ assign b2m_fsm_cmd_enoughAggregation = (((b2m_fsm_s2 && b2m_fsm_sel_valid) && (! b2m_fsm_aggregate_engine_io_flush)) && (io_write_cmd_payload_last ? ((b2m_fsm_aggregate_engine_io_output_mask & b2m_fsm_cmd_maskLast) == b2m_fsm_cmd_maskLast) : (&b2m_fsm_aggregate_engine_io_output_mask)));
+ assign io_write_cmd_fire = (io_write_cmd_valid && io_write_cmd_ready);
+ assign io_write_cmd_valid = b2m_fsm_cmd_enoughAggregation;
+ assign io_write_cmd_payload_last = (b2m_fsm_beatCounter == 8'h0);
+ assign io_write_cmd_payload_fragment_address = b2m_fsm_sel_address;
+ assign io_write_cmd_payload_fragment_opcode = 1'b1;
+ assign io_write_cmd_payload_fragment_data = b2m_fsm_aggregate_engine_io_output_data;
+ assign io_write_cmd_payload_fragment_mask = (~ ((io_write_cmd_payload_first ? (~ b2m_fsm_cmd_maskFirst) : 16'h0) | (io_write_cmd_payload_last ? (~ b2m_fsm_cmd_maskLast) : 16'h0)));
+ assign io_write_cmd_payload_fragment_length = b2m_fsm_sel_bytesInBurst;
+ assign b2m_fsm_cmd_doPtrIncr = (b2m_fsm_sel_valid && (b2m_fsm_aggregate_engine_io_output_consumed || ((io_write_cmd_fire && io_write_cmd_payload_last) && (b2m_fsm_aggregate_engine_io_output_usedUntil == 4'b1111))));
+ assign b2m_fsm_cmd_context_length = b2m_fsm_sel_bytesInBurst;
+ assign b2m_fsm_cmd_context_doPacketSync = (b2m_fsm_sel_packet && b2m_fsm_fifoCompletion);
+ assign io_write_cmd_payload_fragment_context = {b2m_fsm_cmd_context_doPacketSync,b2m_fsm_cmd_context_length};
+ assign when_DmaSg_l1102 = (io_write_cmd_fire && io_write_cmd_payload_last);
+ assign io_write_rsp_ready = 1'b1;
+ assign _zz_b2m_rsp_context_length = io_write_rsp_payload_fragment_context;
+ assign b2m_rsp_context_length = _zz_b2m_rsp_context_length[11 : 0];
+ assign b2m_rsp_context_doPacketSync = _zz_b2m_rsp_context_length[12];
+ assign io_write_rsp_fire = (io_write_rsp_valid && io_write_rsp_ready);
+ assign when_DmaSg_l1116 = 1'b1;
+ assign _zz_ll_arbiter_head = {channels_1_ll_requestLl,channels_0_ll_requestLl};
+ assign _zz_ll_arbiter_head_1 = _zz__zz_ll_arbiter_head_1[1];
+ assign ll_arbiter_head = (_zz_ll_arbiter_head_2[0] ? channels_0_ll_head : channels_1_ll_head);
+ assign ll_arbiter_isJustASink = (_zz_ll_arbiter_isJustASink[0] ? channels_0_descriptorValid : channels_1_descriptorValid);
+ assign ll_arbiter_doDescriptorStall = (_zz_ll_arbiter_doDescriptorStall[0] ? ((! channels_0_ll_controlNoCompletion) || channels_0_ll_gotDescriptorStall) : ((! channels_1_ll_controlNoCompletion) || channels_1_ll_gotDescriptorStall));
+ assign ll_arbiter_onSgStream = (_zz_ll_arbiter_onSgStream[0] ? channels_0_ll_onSgStream : channels_1_ll_onSgStream);
+ assign when_DmaSg_l1149 = (! ll_cmd_valid);
+ assign when_DmaSg_l1148 = (! ll_cmd_valid);
+ assign when_DmaSg_l1148_1 = (! ll_cmd_valid);
+ assign when_DmaSg_l1148_2 = (! ll_cmd_valid);
+ assign when_DmaSg_l1148_3 = (! ll_cmd_valid);
+ assign when_DmaSg_l1154 = (! ll_cmd_valid);
+ assign when_DmaSg_l1155 = (! ll_cmd_valid);
+ assign when_DmaSg_l1156 = (! ll_cmd_valid);
+ assign when_DmaSg_l1160 = (! ll_cmd_valid);
+ assign when_DmaSg_l1161 = (|{_zz_ll_arbiter_head_1,channels_0_ll_requestLl});
+ assign when_DmaSg_l1169 = (! ll_arbiter_isJustASink);
+ assign when_DmaSg_l1169_1 = (! ll_arbiter_isJustASink);
+ assign when_DmaSg_l1177 = (ll_cmd_writeFired && ll_cmd_readFired);
+ assign ll_cmd_context_channel = ll_cmd_oh_1;
+ assign io_sgRead_cmd_valid = ((ll_cmd_valid && (! ll_cmd_readFired)) && (! ll_cmd_onSgStream));
+ assign io_sgRead_cmd_payload_last = 1'b1;
+ assign io_sgRead_cmd_payload_fragment_address = {ll_cmd_ptrNext[31 : 5],5'h0};
+ assign io_sgRead_cmd_payload_fragment_length = 5'h1f;
+ assign io_sgRead_cmd_payload_fragment_opcode = 1'b0;
+ assign io_sgRead_cmd_payload_fragment_context = ll_cmd_context_channel;
+ assign io_sgWrite_cmd_valid = ((ll_cmd_valid && (! ll_cmd_writeFired)) && (! ll_cmd_onSgStream));
+ assign io_sgWrite_cmd_payload_last = 1'b1;
+ assign io_sgWrite_cmd_payload_fragment_address = {ll_cmd_ptr[31 : 5],5'h0};
+ assign io_sgWrite_cmd_payload_fragment_length = 2'b11;
+ assign io_sgWrite_cmd_payload_fragment_opcode = 1'b1;
+ assign io_sgWrite_cmd_payload_fragment_context = ll_cmd_context_channel;
+ assign ll_cmd_writeMaskSplit_0 = io_sgWrite_cmd_payload_fragment_mask[3 : 0];
+ assign ll_cmd_writeMaskSplit_1 = io_sgWrite_cmd_payload_fragment_mask[7 : 4];
+ assign ll_cmd_writeMaskSplit_2 = io_sgWrite_cmd_payload_fragment_mask[11 : 8];
+ assign ll_cmd_writeMaskSplit_3 = io_sgWrite_cmd_payload_fragment_mask[15 : 12];
+ assign ll_cmd_writeDataSplit_0 = io_sgWrite_cmd_payload_fragment_data[31 : 0];
+ assign ll_cmd_writeDataSplit_1 = io_sgWrite_cmd_payload_fragment_data[63 : 32];
+ assign ll_cmd_writeDataSplit_2 = io_sgWrite_cmd_payload_fragment_data[95 : 64];
+ assign ll_cmd_writeDataSplit_3 = io_sgWrite_cmd_payload_fragment_data[127 : 96];
+ assign _zz_1 = zz_io_sgWrite_cmd_payload_fragment_mask(1'b0);
+ always @(*) io_sgWrite_cmd_payload_fragment_mask = _zz_1;
+ always @(*) begin
+ io_sgWrite_cmd_payload_fragment_data[63 : 32] = 32'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
+ io_sgWrite_cmd_payload_fragment_data[95 : 64] = 32'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
+ io_sgWrite_cmd_payload_fragment_data[127 : 96] = 32'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
+ io_sgWrite_cmd_payload_fragment_data[31 : 0] = 32'h0;
+ io_sgWrite_cmd_payload_fragment_data[26 : 0] = ll_cmd_bytesDone;
+ io_sgWrite_cmd_payload_fragment_data[30] = ll_cmd_endOfPacket;
+ io_sgWrite_cmd_payload_fragment_data[31] = ((! ll_cmd_isJustASink) && ll_cmd_doDescriptorStall);
+ end
+
+ assign io_sgRead_cmd_fire = (io_sgRead_cmd_valid && io_sgRead_cmd_ready);
+ assign io_sgWrite_cmd_fire = (io_sgWrite_cmd_valid && io_sgWrite_cmd_ready);
+ assign ll_readRsp_context_channel = io_sgRead_rsp_payload_fragment_context[0 : 0];
+ assign _zz_ll_readRsp_oh_0 = (2'b01 <<< ll_readRsp_context_channel);
+ assign ll_readRsp_oh_0 = _zz_ll_readRsp_oh_0[0];
+ assign ll_readRsp_oh_1 = _zz_ll_readRsp_oh_0[1];
+ assign io_sgRead_rsp_ready = 1'b1;
+ assign io_sgRead_rsp_fire = (io_sgRead_rsp_valid && io_sgRead_rsp_ready);
+ assign when_DmaSg_l1248 = (1'b0 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_1 = (1'b1 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_2 = (1'b1 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_3 = (1'b0 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_4 = (1'b0 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_5 = (1'b0 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1248_6 = (1'b0 == ll_readRsp_beatCounter);
+ assign when_DmaSg_l1271 = (io_sgRead_rsp_fire && io_sgRead_rsp_payload_last);
+ assign ll_writeRsp_context_channel = io_sgWrite_rsp_payload_fragment_context[0 : 0];
+ assign _zz_ll_writeRsp_oh_0 = (2'b01 <<< ll_writeRsp_context_channel);
+ assign ll_writeRsp_oh_0 = _zz_ll_writeRsp_oh_0[0];
+ assign ll_writeRsp_oh_1 = _zz_ll_writeRsp_oh_0[1];
+ assign io_sgWrite_rsp_ready = 1'b1;
+ assign io_sgWrite_rsp_fire = (io_sgWrite_rsp_valid && io_sgWrite_rsp_ready);
+ always @(*) begin
+ io_interrupts = 2'b00;
+ if(channels_0_interrupts_completion_valid) begin
+ io_interrupts[0] = 1'b1;
+ end
+ if(channels_0_interrupts_onChannelCompletion_valid) begin
+ io_interrupts[0] = 1'b1;
+ end
+ if(channels_0_interrupts_onLinkedListUpdate_valid) begin
+ io_interrupts[0] = 1'b1;
+ end
+ if(channels_0_interrupts_s2mPacket_valid) begin
+ io_interrupts[0] = 1'b1;
+ end
+ if(channels_1_interrupts_completion_valid) begin
+ io_interrupts[1] = 1'b1;
+ end
+ if(channels_1_interrupts_onChannelCompletion_valid) begin
+ io_interrupts[1] = 1'b1;
+ end
+ if(channels_1_interrupts_onLinkedListUpdate_valid) begin
+ io_interrupts[1] = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ when_BusSlaveFactory_l377 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h002c : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l377_1 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h002c : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_1 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l377_2 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h002c : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_2 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_2 = io_ctrl_PWDATA[4];
+ always @(*) begin
+ when_BusSlaveFactory_l377_3 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h002c : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_3 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_3 = io_ctrl_PWDATA[4];
+ always @(*) begin
+ when_BusSlaveFactory_l341 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h0054 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l341_1 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h0054 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_1 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_1 = io_ctrl_PWDATA[2];
+ always @(*) begin
+ when_BusSlaveFactory_l341_2 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h0054 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_2 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_2 = io_ctrl_PWDATA[3];
+ always @(*) begin
+ when_BusSlaveFactory_l341_3 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h0054 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_3 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_3 = io_ctrl_PWDATA[4];
+ always @(*) begin
+ when_BusSlaveFactory_l377_4 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00ac : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_4 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_4 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l377_5 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00ac : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_5 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_5 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l377_6 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00ac : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_6 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_6 = io_ctrl_PWDATA[4];
+ always @(*) begin
+ when_BusSlaveFactory_l377_7 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00ac : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l377_7 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l379_7 = io_ctrl_PWDATA[4];
+ always @(*) begin
+ when_BusSlaveFactory_l341_4 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00d4 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_4 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_4 = io_ctrl_PWDATA[0];
+ always @(*) begin
+ when_BusSlaveFactory_l341_5 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00d4 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_5 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_5 = io_ctrl_PWDATA[2];
+ always @(*) begin
+ when_BusSlaveFactory_l341_6 = 1'b0;
+ case(io_ctrl_PADDR)
+ 14'h00d4 : begin
+ if(ctrl_doWrite) begin
+ when_BusSlaveFactory_l341_6 = 1'b1;
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+
+ assign when_BusSlaveFactory_l347_6 = io_ctrl_PWDATA[3];
+ assign when_Apb3SlaveFactory_l81 = ((io_ctrl_PADDR & (~ 14'h0003)) == 14'h0010);
+ assign when_Apb3SlaveFactory_l81_1 = ((io_ctrl_PADDR & (~ 14'h0003)) == 14'h0070);
+ assign when_Apb3SlaveFactory_l81_2 = ((io_ctrl_PADDR & (~ 14'h0003)) == 14'h0080);
+ assign when_Apb3SlaveFactory_l81_3 = ((io_ctrl_PADDR & (~ 14'h0003)) == 14'h00f0);
+ assign channels_0_fifo_push_ptrIncr_value = _zz_channels_0_fifo_push_ptrIncr_value;
+ assign channels_0_fifo_pop_bytesIncr_value = _zz_channels_0_fifo_pop_bytesIncr_value_1;
+ assign channels_0_fifo_pop_bytesDecr_value = channels_0_pop_b2m_decrBytes;
+ assign channels_0_fifo_pop_ptrIncr_value = _zz_channels_0_fifo_pop_ptrIncr_value;
+ assign channels_1_fifo_push_ptrIncr_value = _zz_channels_1_fifo_push_ptrIncr_value_1;
+ assign channels_1_fifo_pop_bytesIncr_value = _zz_channels_1_fifo_pop_bytesIncr_value_1;
+ assign channels_1_fifo_pop_bytesDecr_value = 14'h0;
+ assign channels_1_fifo_pop_ptrIncr_value = _zz_channels_1_fifo_pop_ptrIncr_value;
+ assign ll_0_descriptorUpdate = (channels_0_ll_descriptorUpdated && (! channels_0_ll_gotDescriptorStall));
+ assign ll_1_descriptorUpdate = (channels_1_ll_descriptorUpdated && (! channels_1_ll_gotDescriptorStall));
+ always @(posedge clk) begin
+ if(reset) begin
+ channels_0_channelValid <= 1'b0;
+ channels_0_descriptorValid <= 1'b0;
+ channels_0_priority <= 2'b00;
+ channels_0_weight <= 2'b00;
+ channels_0_ctrl_kick <= 1'b0;
+ channels_0_ll_valid <= 1'b0;
+ channels_0_ll_onSgStream <= 1'b0;
+ channels_0_pop_b2m_memPending <= 4'b0000;
+ channels_0_interrupts_completion_enable <= 1'b0;
+ channels_0_interrupts_completion_valid <= 1'b0;
+ channels_0_interrupts_onChannelCompletion_enable <= 1'b0;
+ channels_0_interrupts_onChannelCompletion_valid <= 1'b0;
+ channels_0_interrupts_onLinkedListUpdate_enable <= 1'b0;
+ channels_0_interrupts_onLinkedListUpdate_valid <= 1'b0;
+ channels_0_interrupts_s2mPacket_enable <= 1'b0;
+ channels_0_interrupts_s2mPacket_valid <= 1'b0;
+ channels_1_channelValid <= 1'b0;
+ channels_1_descriptorValid <= 1'b0;
+ channels_1_priority <= 2'b00;
+ channels_1_weight <= 2'b00;
+ channels_1_ctrl_kick <= 1'b0;
+ channels_1_ll_valid <= 1'b0;
+ channels_1_ll_onSgStream <= 1'b0;
+ channels_1_push_m2b_loadDone <= 1'b1;
+ channels_1_push_m2b_memPending <= 4'b0000;
+ channels_1_interrupts_completion_enable <= 1'b0;
+ channels_1_interrupts_completion_valid <= 1'b0;
+ channels_1_interrupts_onChannelCompletion_enable <= 1'b0;
+ channels_1_interrupts_onChannelCompletion_valid <= 1'b0;
+ channels_1_interrupts_onLinkedListUpdate_enable <= 1'b0;
+ channels_1_interrupts_onLinkedListUpdate_valid <= 1'b0;
+ io_inputs_0_payload_last_regNextWhen <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_1 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_2 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_3 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_4 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_5 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_6 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_7 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_8 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_9 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_10 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_11 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_12 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_13 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_14 <= 1'b1;
+ io_inputs_0_payload_last_regNextWhen_15 <= 1'b1;
+ m2b_cmd_s0_valid <= 1'b0;
+ m2b_cmd_s0_priority_roundRobins_0 <= 1'b1;
+ m2b_cmd_s0_priority_roundRobins_1 <= 1'b1;
+ m2b_cmd_s0_priority_roundRobins_2 <= 1'b1;
+ m2b_cmd_s0_priority_roundRobins_3 <= 1'b1;
+ m2b_cmd_s0_priority_counter <= 2'b00;
+ m2b_cmd_s1_valid <= 1'b0;
+ m2b_rsp_first <= 1'b1;
+ b2m_fsm_sel_valid <= 1'b0;
+ b2m_fsm_arbiter_logic_valid <= 1'b0;
+ b2m_fsm_arbiter_logic_priority_roundRobins_0 <= 1'b1;
+ b2m_fsm_arbiter_logic_priority_roundRobins_1 <= 1'b1;
+ b2m_fsm_arbiter_logic_priority_roundRobins_2 <= 1'b1;
+ b2m_fsm_arbiter_logic_priority_roundRobins_3 <= 1'b1;
+ b2m_fsm_arbiter_logic_priority_counter <= 2'b00;
+ b2m_fsm_sel_valid_regNext <= 1'b0;
+ b2m_fsm_s1 <= 1'b0;
+ b2m_fsm_s2 <= 1'b0;
+ b2m_fsm_toggle <= 1'b0;
+ memory_core_io_reads_1_rsp_rValidN <= 1'b1;
+ _zz_io_flush <= 1'b0;
+ io_write_cmd_payload_first <= 1'b1;
+ ll_cmd_valid <= 1'b0;
+ ll_readRsp_beatCounter <= 1'b0;
+ end else begin
+ if(channels_0_channelStart) begin
+ channels_0_channelValid <= 1'b1;
+ end
+ if(channels_0_channelCompletion) begin
+ channels_0_channelValid <= 1'b0;
+ end
+ if(channels_0_descriptorStart) begin
+ channels_0_descriptorValid <= 1'b1;
+ end
+ if(channels_0_descriptorCompletion) begin
+ channels_0_descriptorValid <= 1'b0;
+ end
+ channels_0_ctrl_kick <= 1'b0;
+ if(channels_0_channelCompletion) begin
+ channels_0_ctrl_kick <= 1'b0;
+ end
+ if(when_DmaSg_l318) begin
+ if(when_DmaSg_l320) begin
+ if(!when_DmaSg_l322) begin
+ channels_0_ll_valid <= 1'b0;
+ end
+ end
+ end
+ if(channels_0_ll_sgStart) begin
+ channels_0_ll_valid <= 1'b1;
+ end
+ if(channels_0_channelCompletion) begin
+ channels_0_ll_valid <= 1'b0;
+ end
+ channels_0_pop_b2m_memPending <= (_zz_channels_0_pop_b2m_memPending - _zz_channels_0_pop_b2m_memPending_3);
+ if(when_DmaSg_l255) begin
+ channels_0_interrupts_completion_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_1) begin
+ channels_0_interrupts_completion_valid <= 1'b0;
+ end
+ if(when_DmaSg_l255_2) begin
+ channels_0_interrupts_onChannelCompletion_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_3) begin
+ channels_0_interrupts_onChannelCompletion_valid <= 1'b0;
+ end
+ if(channels_0_ll_descriptorUpdated) begin
+ channels_0_interrupts_onLinkedListUpdate_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_4) begin
+ channels_0_interrupts_onLinkedListUpdate_valid <= 1'b0;
+ end
+ if(channels_0_pop_b2m_packetSync) begin
+ channels_0_interrupts_s2mPacket_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_5) begin
+ channels_0_interrupts_s2mPacket_valid <= 1'b0;
+ end
+ if(channels_1_channelStart) begin
+ channels_1_channelValid <= 1'b1;
+ end
+ if(channels_1_channelCompletion) begin
+ channels_1_channelValid <= 1'b0;
+ end
+ if(channels_1_descriptorStart) begin
+ channels_1_descriptorValid <= 1'b1;
+ end
+ if(channels_1_descriptorCompletion) begin
+ channels_1_descriptorValid <= 1'b0;
+ end
+ channels_1_ctrl_kick <= 1'b0;
+ if(channels_1_channelCompletion) begin
+ channels_1_ctrl_kick <= 1'b0;
+ end
+ if(when_DmaSg_l318_1) begin
+ if(when_DmaSg_l320_1) begin
+ if(!when_DmaSg_l322_1) begin
+ channels_1_ll_valid <= 1'b0;
+ end
+ end
+ end
+ if(channels_1_ll_sgStart) begin
+ channels_1_ll_valid <= 1'b1;
+ end
+ if(channels_1_channelCompletion) begin
+ channels_1_ll_valid <= 1'b0;
+ end
+ channels_1_push_m2b_memPending <= (_zz_channels_1_push_m2b_memPending - _zz_channels_1_push_m2b_memPending_3);
+ if(channels_1_descriptorStart) begin
+ channels_1_push_m2b_loadDone <= 1'b0;
+ end
+ if(when_DmaSg_l255_6) begin
+ channels_1_interrupts_completion_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_7) begin
+ channels_1_interrupts_completion_valid <= 1'b0;
+ end
+ if(when_DmaSg_l255_8) begin
+ channels_1_interrupts_onChannelCompletion_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_9) begin
+ channels_1_interrupts_onChannelCompletion_valid <= 1'b0;
+ end
+ if(channels_1_ll_descriptorUpdated) begin
+ channels_1_interrupts_onLinkedListUpdate_valid <= 1'b1;
+ end
+ if(when_DmaSg_l255_10) begin
+ channels_1_interrupts_onLinkedListUpdate_valid <= 1'b0;
+ end
+ if(when_package_l12) begin
+ io_inputs_0_payload_last_regNextWhen <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_1) begin
+ io_inputs_0_payload_last_regNextWhen_1 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_2) begin
+ io_inputs_0_payload_last_regNextWhen_2 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_3) begin
+ io_inputs_0_payload_last_regNextWhen_3 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_4) begin
+ io_inputs_0_payload_last_regNextWhen_4 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_5) begin
+ io_inputs_0_payload_last_regNextWhen_5 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_6) begin
+ io_inputs_0_payload_last_regNextWhen_6 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_7) begin
+ io_inputs_0_payload_last_regNextWhen_7 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_8) begin
+ io_inputs_0_payload_last_regNextWhen_8 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_9) begin
+ io_inputs_0_payload_last_regNextWhen_9 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_10) begin
+ io_inputs_0_payload_last_regNextWhen_10 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_11) begin
+ io_inputs_0_payload_last_regNextWhen_11 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_12) begin
+ io_inputs_0_payload_last_regNextWhen_12 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_13) begin
+ io_inputs_0_payload_last_regNextWhen_13 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_14) begin
+ io_inputs_0_payload_last_regNextWhen_14 <= io_inputs_0_payload_last;
+ end
+ if(when_package_l12_15) begin
+ io_inputs_0_payload_last_regNextWhen_15 <= io_inputs_0_payload_last;
+ end
+ if(when_DmaSg_l758) begin
+ if(when_DmaSg_l760) begin
+ m2b_cmd_s0_valid <= 1'b1;
+ if(when_DmaSg_l763) begin
+ m2b_cmd_s0_priority_roundRobins_0 <= m2b_cmd_s0_priority_contextNext;
+ end
+ if(when_DmaSg_l763_1) begin
+ m2b_cmd_s0_priority_roundRobins_1 <= m2b_cmd_s0_priority_contextNext;
+ end
+ if(when_DmaSg_l763_2) begin
+ m2b_cmd_s0_priority_roundRobins_2 <= m2b_cmd_s0_priority_contextNext;
+ end
+ if(when_DmaSg_l763_3) begin
+ m2b_cmd_s0_priority_roundRobins_3 <= m2b_cmd_s0_priority_contextNext;
+ end
+ m2b_cmd_s0_priority_counter <= (m2b_cmd_s0_priority_counter + 2'b01);
+ if(m2b_cmd_s0_priority_weightLast) begin
+ m2b_cmd_s0_priority_counter <= 2'b00;
+ end
+ end
+ end
+ if(m2b_cmd_s0_valid) begin
+ m2b_cmd_s1_valid <= 1'b1;
+ end
+ if(m2b_cmd_s1_valid) begin
+ if(io_read_cmd_ready) begin
+ m2b_cmd_s0_valid <= 1'b0;
+ m2b_cmd_s1_valid <= 1'b0;
+ if(when_DmaSg_l828) begin
+ if(m2b_cmd_s1_lastBurst) begin
+ channels_1_push_m2b_loadDone <= 1'b1;
+ end
+ end
+ end
+ end
+ if(io_read_rsp_fire) begin
+ m2b_rsp_first <= io_read_rsp_payload_last;
+ end
+ if(when_DmaSg_l758_1) begin
+ if(when_DmaSg_l760_1) begin
+ b2m_fsm_arbiter_logic_valid <= 1'b1;
+ if(when_DmaSg_l763_4) begin
+ b2m_fsm_arbiter_logic_priority_roundRobins_0 <= b2m_fsm_arbiter_logic_priority_contextNext;
+ end
+ if(when_DmaSg_l763_5) begin
+ b2m_fsm_arbiter_logic_priority_roundRobins_1 <= b2m_fsm_arbiter_logic_priority_contextNext;
+ end
+ if(when_DmaSg_l763_6) begin
+ b2m_fsm_arbiter_logic_priority_roundRobins_2 <= b2m_fsm_arbiter_logic_priority_contextNext;
+ end
+ if(when_DmaSg_l763_7) begin
+ b2m_fsm_arbiter_logic_priority_roundRobins_3 <= b2m_fsm_arbiter_logic_priority_contextNext;
+ end
+ b2m_fsm_arbiter_logic_priority_counter <= (b2m_fsm_arbiter_logic_priority_counter + 2'b01);
+ if(b2m_fsm_arbiter_logic_priority_weightLast) begin
+ b2m_fsm_arbiter_logic_priority_counter <= 2'b00;
+ end
+ end
+ end
+ if(b2m_fsm_sel_ready) begin
+ b2m_fsm_sel_valid <= 1'b0;
+ if(b2m_fsm_sel_valid) begin
+ b2m_fsm_arbiter_logic_valid <= 1'b0;
+ end
+ end
+ if(when_DmaSg_l935) begin
+ b2m_fsm_sel_valid <= 1'b1;
+ end
+ b2m_fsm_sel_valid_regNext <= b2m_fsm_sel_valid;
+ b2m_fsm_s1 <= b2m_fsm_s0;
+ if(b2m_fsm_s1) begin
+ b2m_fsm_s2 <= 1'b1;
+ end
+ if(when_DmaSg_l986) begin
+ b2m_fsm_s2 <= 1'b0;
+ end
+ if(when_DmaSg_l1013) begin
+ b2m_fsm_toggle <= (! b2m_fsm_toggle);
+ end
+ if(memory_core_io_reads_1_rsp_valid) begin
+ memory_core_io_reads_1_rsp_rValidN <= 1'b0;
+ end
+ if(memory_core_io_reads_1_rsp_s2mPipe_ready) begin
+ memory_core_io_reads_1_rsp_rValidN <= 1'b1;
+ end
+ _zz_io_flush <= (b2m_fsm_sel_valid && (! b2m_fsm_sel_ready));
+ if(io_write_cmd_fire) begin
+ io_write_cmd_payload_first <= io_write_cmd_payload_last;
+ end
+ if(when_DmaSg_l1160) begin
+ if(when_DmaSg_l1161) begin
+ ll_cmd_valid <= 1'b1;
+ end
+ end else begin
+ if(when_DmaSg_l1177) begin
+ ll_cmd_valid <= 1'b0;
+ end
+ end
+ if(io_sgRead_rsp_fire) begin
+ ll_readRsp_beatCounter <= (ll_readRsp_beatCounter + 1'b1);
+ end
+ if(when_BusSlaveFactory_l377_1) begin
+ if(when_BusSlaveFactory_l379_1) begin
+ channels_0_ctrl_kick <= _zz_channels_0_ctrl_kick[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341) begin
+ if(when_BusSlaveFactory_l347) begin
+ channels_0_interrupts_completion_valid <= _zz_channels_0_interrupts_completion_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_1) begin
+ if(when_BusSlaveFactory_l347_1) begin
+ channels_0_interrupts_onChannelCompletion_valid <= _zz_channels_0_interrupts_onChannelCompletion_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_2) begin
+ if(when_BusSlaveFactory_l347_2) begin
+ channels_0_interrupts_onLinkedListUpdate_valid <= _zz_channels_0_interrupts_onLinkedListUpdate_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_3) begin
+ if(when_BusSlaveFactory_l347_3) begin
+ channels_0_interrupts_s2mPacket_valid <= _zz_channels_0_interrupts_s2mPacket_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l377_5) begin
+ if(when_BusSlaveFactory_l379_5) begin
+ channels_1_ctrl_kick <= _zz_channels_1_ctrl_kick[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_4) begin
+ if(when_BusSlaveFactory_l347_4) begin
+ channels_1_interrupts_completion_valid <= _zz_channels_1_interrupts_completion_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_5) begin
+ if(when_BusSlaveFactory_l347_5) begin
+ channels_1_interrupts_onChannelCompletion_valid <= _zz_channels_1_interrupts_onChannelCompletion_valid[0];
+ end
+ end
+ if(when_BusSlaveFactory_l341_6) begin
+ if(when_BusSlaveFactory_l347_6) begin
+ channels_1_interrupts_onLinkedListUpdate_valid <= _zz_channels_1_interrupts_onLinkedListUpdate_valid[0];
+ end
+ end
+ case(io_ctrl_PADDR)
+ 14'h0078 : begin
+ if(ctrl_doWrite) begin
+ channels_0_ll_onSgStream <= io_ctrl_PWDATA[0];
+ end
+ end
+ 14'h0044 : begin
+ if(ctrl_doWrite) begin
+ channels_0_priority <= io_ctrl_PWDATA[1 : 0];
+ channels_0_weight <= io_ctrl_PWDATA[9 : 8];
+ end
+ end
+ 14'h0050 : begin
+ if(ctrl_doWrite) begin
+ channels_0_interrupts_completion_enable <= io_ctrl_PWDATA[0];
+ channels_0_interrupts_onChannelCompletion_enable <= io_ctrl_PWDATA[2];
+ channels_0_interrupts_onLinkedListUpdate_enable <= io_ctrl_PWDATA[3];
+ channels_0_interrupts_s2mPacket_enable <= io_ctrl_PWDATA[4];
+ end
+ end
+ 14'h00f8 : begin
+ if(ctrl_doWrite) begin
+ channels_1_ll_onSgStream <= io_ctrl_PWDATA[0];
+ end
+ end
+ 14'h00c4 : begin
+ if(ctrl_doWrite) begin
+ channels_1_priority <= io_ctrl_PWDATA[1 : 0];
+ channels_1_weight <= io_ctrl_PWDATA[9 : 8];
+ end
+ end
+ 14'h00d0 : begin
+ if(ctrl_doWrite) begin
+ channels_1_interrupts_completion_enable <= io_ctrl_PWDATA[0];
+ channels_1_interrupts_onChannelCompletion_enable <= io_ctrl_PWDATA[2];
+ channels_1_interrupts_onLinkedListUpdate_enable <= io_ctrl_PWDATA[3];
+ end
+ end
+ default : begin
+ end
+ endcase
+ end
+ end
+
+ always @(posedge clk) begin
+ if(channels_0_bytesProbe_incr_valid) begin
+ channels_0_bytesProbe_value <= (_zz_channels_0_bytesProbe_value + 27'h0000001);
+ end
+ if(channels_0_descriptorStart) begin
+ channels_0_ll_packet <= 1'b0;
+ end
+ if(channels_0_descriptorStart) begin
+ channels_0_ll_requireSync <= 1'b0;
+ end
+ if(when_DmaSg_l318) begin
+ channels_0_ll_waitDone <= 1'b0;
+ if(when_DmaSg_l320) begin
+ channels_0_ll_head <= 1'b0;
+ end
+ end
+ if(channels_0_channelStart) begin
+ channels_0_ll_waitDone <= 1'b0;
+ channels_0_ll_head <= 1'b1;
+ end
+ channels_0_fifo_push_ptr <= (channels_0_fifo_push_ptr + channels_0_fifo_push_ptrIncr_value);
+ if(channels_0_channelStart) begin
+ channels_0_fifo_push_ptr <= 11'h0;
+ end
+ channels_0_fifo_pop_ptr <= (channels_0_fifo_pop_ptr + channels_0_fifo_pop_ptrIncr_value);
+ channels_0_fifo_pop_withOverride_backup <= channels_0_fifo_pop_withOverride_backupNext;
+ if(when_DmaSg_l409) begin
+ channels_0_fifo_pop_withOverride_valid <= 1'b0;
+ end
+ if(channels_0_fifo_pop_withOverride_load) begin
+ channels_0_fifo_pop_withOverride_valid <= 1'b1;
+ end
+ channels_0_fifo_pop_withOverride_exposed <= ((! channels_0_fifo_pop_withOverride_valid) ? channels_0_fifo_pop_withOverride_backupNext : _zz_channels_0_fifo_pop_withOverride_exposed);
+ if(channels_0_channelStart) begin
+ channels_0_fifo_pop_withOverride_backup <= 14'h0;
+ channels_0_fifo_pop_withOverride_valid <= 1'b0;
+ end
+ if(channels_0_channelStart) begin
+ channels_0_push_s2b_packetLock <= 1'b0;
+ end
+ if(channels_0_pop_b2m_fire) begin
+ channels_0_pop_b2m_flush <= 1'b0;
+ end
+ if(when_DmaSg_l505) begin
+ channels_0_pop_b2m_packet <= 1'b0;
+ end
+ if(when_DmaSg_l523) begin
+ channels_0_pop_b2m_flush <= 1'b0;
+ channels_0_pop_b2m_packet <= 1'b0;
+ end
+ if(channels_0_pop_b2m_packetSync) begin
+ channels_0_push_s2b_packetLock <= 1'b0;
+ if(when_DmaSg_l532) begin
+ if(!channels_0_push_s2b_completionOnLast) begin
+ if(when_DmaSg_l536) begin
+ channels_0_ll_requireSync <= 1'b1;
+ end
+ end
+ channels_0_ll_packet <= 1'b1;
+ end
+ end
+ if(channels_0_channelStart) begin
+ channels_0_pop_b2m_bytesToSkip <= 4'b0000;
+ channels_0_pop_b2m_flush <= 1'b0;
+ end
+ if(channels_0_descriptorStart) begin
+ channels_0_pop_b2m_bytesLeft <= {1'd0, channels_0_bytes};
+ channels_0_pop_b2m_waitFinalRsp <= 1'b0;
+ end
+ if(channels_0_channelValid) begin
+ if(!channels_0_channelStop) begin
+ if(when_DmaSg_l575) begin
+ if(when_DmaSg_l593) begin
+ channels_0_channelStop <= 1'b1;
+ end
+ end
+ end
+ end
+ channels_0_fifo_pop_ptrIncr_value_regNext <= channels_0_fifo_pop_ptrIncr_value;
+ channels_0_fifo_push_available <= (_zz_channels_0_fifo_push_available - (channels_0_push_memory ? channels_0_fifo_push_availableDecr : channels_0_fifo_push_ptrIncr_value));
+ if(channels_0_channelStart) begin
+ channels_0_fifo_push_ptr <= 11'h0;
+ channels_0_fifo_push_available <= (channels_0_fifo_words + 11'h001);
+ channels_0_fifo_pop_ptr <= 11'h0;
+ end
+ if(when_DmaSg_l625) begin
+ channels_0_bytesProbe_value <= 27'h0;
+ end
+ if(channels_1_bytesProbe_incr_valid) begin
+ channels_1_bytesProbe_value <= (_zz_channels_1_bytesProbe_value + 27'h0000001);
+ end
+ if(channels_1_descriptorStart) begin
+ channels_1_ll_packet <= 1'b0;
+ end
+ if(channels_1_descriptorStart) begin
+ channels_1_ll_requireSync <= 1'b0;
+ end
+ if(when_DmaSg_l318_1) begin
+ channels_1_ll_waitDone <= 1'b0;
+ if(when_DmaSg_l320_1) begin
+ channels_1_ll_head <= 1'b0;
+ end
+ end
+ if(channels_1_channelStart) begin
+ channels_1_ll_waitDone <= 1'b0;
+ channels_1_ll_head <= 1'b1;
+ end
+ channels_1_fifo_push_ptr <= (channels_1_fifo_push_ptr + channels_1_fifo_push_ptrIncr_value);
+ if(channels_1_channelStart) begin
+ channels_1_fifo_push_ptr <= 11'h0;
+ end
+ channels_1_fifo_pop_ptr <= (channels_1_fifo_pop_ptr + channels_1_fifo_pop_ptrIncr_value);
+ channels_1_fifo_pop_withoutOverride_exposed <= (_zz_channels_1_fifo_pop_withoutOverride_exposed - channels_1_fifo_pop_bytesDecr_value);
+ if(channels_1_channelStart) begin
+ channels_1_fifo_pop_withoutOverride_exposed <= 14'h0;
+ end
+ if(channels_1_descriptorStart) begin
+ channels_1_push_m2b_bytesLeft <= channels_1_bytes;
+ end
+ if(when_DmaSg_l474) begin
+ channels_1_pop_b2s_veryLastValid <= 1'b1;
+ end
+ if(channels_1_pop_b2s_veryLastTrigger) begin
+ channels_1_pop_b2s_veryLastPtr <= channels_1_fifo_push_ptrWithBase;
+ channels_1_pop_b2s_veryLastEndPacket <= channels_1_pop_b2s_last;
+ end
+ if(channels_1_channelStart) begin
+ channels_1_pop_b2s_veryLastValid <= 1'b0;
+ end
+ if(channels_1_channelValid) begin
+ if(!channels_1_channelStop) begin
+ if(when_DmaSg_l575_1) begin
+ if(when_DmaSg_l593_1) begin
+ channels_1_channelStop <= 1'b1;
+ end
+ end
+ end
+ end
+ channels_1_fifo_pop_ptrIncr_value_regNext <= channels_1_fifo_pop_ptrIncr_value;
+ channels_1_fifo_push_available <= (_zz_channels_1_fifo_push_available - (channels_1_push_memory ? channels_1_fifo_push_availableDecr : channels_1_fifo_push_ptrIncr_value));
+ if(channels_1_channelStart) begin
+ channels_1_fifo_push_ptr <= 11'h0;
+ channels_1_fifo_push_available <= (channels_1_fifo_words + 11'h001);
+ channels_1_fifo_pop_ptr <= 11'h0;
+ end
+ if(when_DmaSg_l625_1) begin
+ channels_1_bytesProbe_value <= 27'h0;
+ end
+ if(when_DmaSg_l665) begin
+ channels_0_push_s2b_waitFirst <= 1'b0;
+ if(io_inputs_0_payload_last) begin
+ channels_0_push_s2b_packetLock <= 1'b1;
+ end
+ end
+ if(when_DmaSg_l681) begin
+ channels_0_pop_b2m_flush <= 1'b1;
+ end
+ if(when_DmaSg_l682) begin
+ channels_0_pop_b2m_packet <= 1'b1;
+ end
+ if(when_DmaSg_l725) begin
+ if(when_DmaSg_l726) begin
+ channels_1_pop_b2s_veryLastValid <= 1'b0;
+ end
+ end
+ m2b_cmd_s1_address <= m2b_cmd_s0_address;
+ m2b_cmd_s1_length <= m2b_cmd_s0_length;
+ m2b_cmd_s1_lastBurst <= m2b_cmd_s0_lastBurst;
+ m2b_cmd_s1_bytesLeft <= m2b_cmd_s0_bytesLeft;
+ if(m2b_cmd_s1_valid) begin
+ if(io_read_cmd_ready) begin
+ if(when_DmaSg_l828) begin
+ channels_1_push_m2b_address <= m2b_cmd_s1_addressNext;
+ channels_1_push_m2b_bytesLeft <= m2b_cmd_s1_byteLeftNext;
+ end
+ end
+ end
+ if(when_DmaSg_l935) begin
+ b2m_fsm_sel_address <= channels_0_pop_b2m_address;
+ b2m_fsm_sel_ptr <= channels_0_fifo_pop_ptrWithBase;
+ b2m_fsm_sel_ptrMask <= channels_0_fifo_words;
+ b2m_fsm_sel_bytePerBurst <= channels_0_pop_b2m_bytePerBurst;
+ b2m_fsm_sel_bytesInFifo <= channels_0_fifo_pop_bytes;
+ b2m_fsm_sel_flush <= channels_0_pop_b2m_flush;
+ b2m_fsm_sel_packet <= channels_0_pop_b2m_packet;
+ b2m_fsm_sel_bytesLeft <= channels_0_pop_b2m_bytesLeft[25:0];
+ end
+ if(b2m_fsm_s0) begin
+ b2m_fsm_sel_bytesInBurst <= _zz_b2m_fsm_sel_bytesInBurst_3[11:0];
+ end
+ if(b2m_fsm_s1) begin
+ b2m_fsm_beatCounter <= (_zz_b2m_fsm_beatCounter >>> 3'd4);
+ if(when_DmaSg_l996) begin
+ channels_0_pop_b2m_address <= b2m_fsm_addressNext;
+ channels_0_pop_b2m_bytesLeft <= b2m_fsm_bytesLeftNext;
+ if(b2m_fsm_isFinalCmd) begin
+ channels_0_pop_b2m_waitFinalRsp <= 1'b1;
+ end
+ if(when_DmaSg_l1001) begin
+ if(b2m_fsm_sel_flush) begin
+ channels_0_pop_b2m_flush <= 1'b1;
+ end
+ if(b2m_fsm_sel_packet) begin
+ channels_0_pop_b2m_packet <= 1'b1;
+ end
+ end
+ end
+ end
+ if(when_DmaSg_l1033) begin
+ b2m_fsm_sel_ptr <= ((b2m_fsm_sel_ptr & (~ b2m_fsm_sel_ptrMask)) | (_zz_b2m_fsm_sel_ptr & b2m_fsm_sel_ptrMask));
+ end
+ if(memory_core_io_reads_1_rsp_rValidN) begin
+ memory_core_io_reads_1_rsp_rData_data <= memory_core_io_reads_1_rsp_payload_data;
+ memory_core_io_reads_1_rsp_rData_mask <= memory_core_io_reads_1_rsp_payload_mask;
+ memory_core_io_reads_1_rsp_rData_context <= memory_core_io_reads_1_rsp_payload_context;
+ end
+ if(b2m_fsm_aggregate_memoryPort_fire) begin
+ b2m_fsm_aggregate_first <= 1'b0;
+ end
+ if(when_DmaSg_l1050) begin
+ b2m_fsm_aggregate_first <= 1'b1;
+ end
+ b2m_fsm_cmd_maskLastTriggerReg <= b2m_fsm_cmd_maskLastTriggerComb;
+ b2m_fsm_cmd_maskLast <= {(4'b1111 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b1110 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b1101 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b1100 <= b2m_fsm_cmd_maskLastTriggerComb),{(4'b1011 <= b2m_fsm_cmd_maskLastTriggerComb),{(_zz_b2m_fsm_cmd_maskLast <= b2m_fsm_cmd_maskLastTriggerComb),{_zz_b2m_fsm_cmd_maskLast_1,{_zz_b2m_fsm_cmd_maskLast_2,_zz_b2m_fsm_cmd_maskLast_3}}}}}}}};
+ if(io_write_cmd_fire) begin
+ b2m_fsm_beatCounter <= (b2m_fsm_beatCounter - 8'h01);
+ end
+ if(when_DmaSg_l1102) begin
+ if(_zz_when_1[0]) begin
+ channels_0_pop_b2m_bytesToSkip <= (b2m_fsm_aggregate_engine_io_output_usedUntil + 4'b0001);
+ end
+ end
+ if(when_DmaSg_l1149) begin
+ ll_cmd_oh_0 <= channels_0_ll_requestLl;
+ ll_cmd_oh_1 <= _zz_ll_arbiter_head_1;
+ end
+ if(when_DmaSg_l1148) begin
+ ll_cmd_ptr <= (_zz_ll_cmd_ptr[0] ? channels_0_ll_ptr : channels_1_ll_ptr);
+ end
+ if(when_DmaSg_l1148_1) begin
+ ll_cmd_ptrNext <= (_zz_ll_cmd_ptrNext[0] ? channels_0_ll_ptrNext : channels_1_ll_ptrNext);
+ end
+ if(when_DmaSg_l1148_2) begin
+ ll_cmd_bytesDone <= channels_0_bytesProbe_value;
+ end
+ if(when_DmaSg_l1148_3) begin
+ ll_cmd_endOfPacket <= (_zz_ll_cmd_endOfPacket[0] ? channels_0_ll_packet : channels_1_ll_packet);
+ end
+ if(when_DmaSg_l1154) begin
+ ll_cmd_isJustASink <= ll_arbiter_isJustASink;
+ end
+ if(when_DmaSg_l1155) begin
+ ll_cmd_doDescriptorStall <= ll_arbiter_doDescriptorStall;
+ end
+ if(when_DmaSg_l1156) begin
+ ll_cmd_onSgStream <= ll_arbiter_onSgStream;
+ end
+ if(when_DmaSg_l1160) begin
+ ll_cmd_oh_0 <= channels_0_ll_requestLl;
+ ll_cmd_oh_1 <= _zz_ll_arbiter_head_1;
+ if(channels_0_ll_requestLl) begin
+ channels_0_ll_waitDone <= 1'b1;
+ channels_0_ll_writeDone <= ll_arbiter_head;
+ channels_0_ll_justASync <= ll_arbiter_isJustASink;
+ channels_0_ll_packet <= 1'b0;
+ channels_0_ll_requireSync <= 1'b0;
+ if(when_DmaSg_l1169) begin
+ channels_0_ll_ptr <= channels_0_ll_ptrNext;
+ end
+ channels_0_ll_readDone <= ll_arbiter_isJustASink;
+ end
+ if(_zz_ll_arbiter_head_1) begin
+ channels_1_ll_waitDone <= 1'b1;
+ channels_1_ll_writeDone <= ll_arbiter_head;
+ channels_1_ll_justASync <= ll_arbiter_isJustASink;
+ channels_1_ll_packet <= 1'b0;
+ channels_1_ll_requireSync <= 1'b0;
+ if(when_DmaSg_l1169_1) begin
+ channels_1_ll_ptr <= channels_1_ll_ptrNext;
+ end
+ channels_1_ll_readDone <= ll_arbiter_isJustASink;
+ end
+ ll_cmd_readFired <= ll_arbiter_isJustASink;
+ ll_cmd_writeFired <= ll_arbiter_head;
+ end
+ if(io_sgRead_cmd_fire) begin
+ ll_cmd_readFired <= 1'b1;
+ end
+ if(io_sgWrite_cmd_fire) begin
+ ll_cmd_writeFired <= 1'b1;
+ end
+ if(io_sgRead_rsp_fire) begin
+ if(when_DmaSg_l1248) begin
+ if(ll_readRsp_oh_1) begin
+ channels_1_push_m2b_address <= io_sgRead_rsp_payload_fragment_data[95 : 64];
+ end
+ end
+ if(when_DmaSg_l1248_1) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_pop_b2m_address <= io_sgRead_rsp_payload_fragment_data[31 : 0];
+ end
+ end
+ if(when_DmaSg_l1248_2) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_ll_ptrNext <= io_sgRead_rsp_payload_fragment_data[95 : 64];
+ end
+ if(ll_readRsp_oh_1) begin
+ channels_1_ll_ptrNext <= io_sgRead_rsp_payload_fragment_data[95 : 64];
+ end
+ end
+ if(when_DmaSg_l1248_3) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_bytes <= io_sgRead_rsp_payload_fragment_data[57 : 32];
+ end
+ if(ll_readRsp_oh_1) begin
+ channels_1_bytes <= io_sgRead_rsp_payload_fragment_data[57 : 32];
+ end
+ end
+ if(when_DmaSg_l1248_4) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_ll_controlNoCompletion <= io_sgRead_rsp_payload_fragment_data[63];
+ end
+ if(ll_readRsp_oh_1) begin
+ channels_1_ll_controlNoCompletion <= io_sgRead_rsp_payload_fragment_data[63];
+ end
+ end
+ if(when_DmaSg_l1248_5) begin
+ if(ll_readRsp_oh_1) begin
+ channels_1_pop_b2s_last <= io_sgRead_rsp_payload_fragment_data[62];
+ end
+ end
+ if(when_DmaSg_l1248_6) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_ll_gotDescriptorStall <= io_sgRead_rsp_payload_fragment_data[31];
+ end
+ if(ll_readRsp_oh_1) begin
+ channels_1_ll_gotDescriptorStall <= io_sgRead_rsp_payload_fragment_data[31];
+ end
+ end
+ if(when_DmaSg_l1271) begin
+ if(ll_readRsp_oh_0) begin
+ channels_0_ll_readDone <= 1'b1;
+ end
+ if(ll_readRsp_oh_1) begin
+ channels_1_ll_readDone <= 1'b1;
+ end
+ end
+ end
+ if(io_sgWrite_rsp_fire) begin
+ if(ll_writeRsp_oh_0) begin
+ channels_0_ll_writeDone <= 1'b1;
+ end
+ if(ll_writeRsp_oh_1) begin
+ channels_1_ll_writeDone <= 1'b1;
+ end
+ end
+ case(io_ctrl_PADDR)
+ 14'h000c : begin
+ if(ctrl_doWrite) begin
+ channels_0_push_memory <= io_ctrl_PWDATA[12];
+ channels_0_push_s2b_completionOnLast <= io_ctrl_PWDATA[13];
+ channels_0_push_s2b_waitFirst <= io_ctrl_PWDATA[14];
+ end
+ end
+ 14'h001c : begin
+ if(ctrl_doWrite) begin
+ channels_0_pop_memory <= io_ctrl_PWDATA[12];
+ end
+ end
+ 14'h002c : begin
+ if(ctrl_doWrite) begin
+ channels_0_channelStop <= io_ctrl_PWDATA[2];
+ end
+ end
+ 14'h0020 : begin
+ if(ctrl_doWrite) begin
+ channels_0_bytes <= io_ctrl_PWDATA[25 : 0];
+ end
+ end
+ 14'h008c : begin
+ if(ctrl_doWrite) begin
+ channels_1_push_memory <= io_ctrl_PWDATA[12];
+ end
+ end
+ 14'h0098 : begin
+ if(ctrl_doWrite) begin
+ channels_1_pop_b2s_sinkId <= io_ctrl_PWDATA[19 : 16];
+ end
+ end
+ 14'h009c : begin
+ if(ctrl_doWrite) begin
+ channels_1_pop_memory <= io_ctrl_PWDATA[12];
+ channels_1_pop_b2s_last <= io_ctrl_PWDATA[13];
+ end
+ end
+ 14'h00ac : begin
+ if(ctrl_doWrite) begin
+ channels_1_channelStop <= io_ctrl_PWDATA[2];
+ end
+ end
+ 14'h00a0 : begin
+ if(ctrl_doWrite) begin
+ channels_1_bytes <= io_ctrl_PWDATA[25 : 0];
+ end
+ end
+ default : begin
+ end
+ endcase
+ if(when_Apb3SlaveFactory_l81) begin
+ if(ctrl_doWrite) begin
+ channels_0_pop_b2m_address[31 : 0] <= io_ctrl_PWDATA[31 : 0];
+ end
+ end
+ if(when_Apb3SlaveFactory_l81_1) begin
+ if(ctrl_doWrite) begin
+ channels_0_ll_ptrNext[31 : 0] <= io_ctrl_PWDATA[31 : 0];
+ end
+ end
+ if(when_Apb3SlaveFactory_l81_2) begin
+ if(ctrl_doWrite) begin
+ channels_1_push_m2b_address[31 : 0] <= io_ctrl_PWDATA[31 : 0];
+ end
+ end
+ if(when_Apb3SlaveFactory_l81_3) begin
+ if(ctrl_doWrite) begin
+ channels_1_ll_ptrNext[31 : 0] <= io_ctrl_PWDATA[31 : 0];
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamArbiter_1 (
+ input wire io_inputs_0_valid,
+ output wire io_inputs_0_ready,
+ input wire io_inputs_0_payload_last,
+ input wire [0:0] io_inputs_0_payload_fragment_source,
+ input wire [0:0] io_inputs_0_payload_fragment_opcode,
+ input wire [31:0] io_inputs_0_payload_fragment_address,
+ input wire [11:0] io_inputs_0_payload_fragment_length,
+ input wire [127:0] io_inputs_0_payload_fragment_data,
+ input wire [15:0] io_inputs_0_payload_fragment_mask,
+ input wire [12:0] io_inputs_0_payload_fragment_context,
+ input wire io_inputs_1_valid,
+ output wire io_inputs_1_ready,
+ input wire io_inputs_1_payload_last,
+ input wire [0:0] io_inputs_1_payload_fragment_source,
+ input wire [0:0] io_inputs_1_payload_fragment_opcode,
+ input wire [31:0] io_inputs_1_payload_fragment_address,
+ input wire [11:0] io_inputs_1_payload_fragment_length,
+ input wire [127:0] io_inputs_1_payload_fragment_data,
+ input wire [15:0] io_inputs_1_payload_fragment_mask,
+ input wire [12:0] io_inputs_1_payload_fragment_context,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire io_output_payload_last,
+ output wire [0:0] io_output_payload_fragment_source,
+ output wire [0:0] io_output_payload_fragment_opcode,
+ output wire [31:0] io_output_payload_fragment_address,
+ output wire [11:0] io_output_payload_fragment_length,
+ output wire [127:0] io_output_payload_fragment_data,
+ output wire [15:0] io_output_payload_fragment_mask,
+ output wire [12:0] io_output_payload_fragment_context,
+ output wire [0:0] io_chosen,
+ output wire [1:0] io_chosenOH,
+ input wire clk,
+ input wire reset
+);
+
+ wire [3:0] _zz__zz_maskProposal_0_2;
+ wire [3:0] _zz__zz_maskProposal_0_2_1;
+ wire [1:0] _zz__zz_maskProposal_0_2_2;
+ reg locked;
+ wire maskProposal_0;
+ wire maskProposal_1;
+ reg maskLocked_0;
+ reg maskLocked_1;
+ wire maskRouted_0;
+ wire maskRouted_1;
+ wire [1:0] _zz_maskProposal_0;
+ wire [3:0] _zz_maskProposal_0_1;
+ wire [3:0] _zz_maskProposal_0_2;
+ wire [1:0] _zz_maskProposal_0_3;
+ wire io_output_fire;
+ wire when_Stream_l683;
+ wire _zz_io_chosen;
+
+ assign _zz__zz_maskProposal_0_2 = (_zz_maskProposal_0_1 - _zz__zz_maskProposal_0_2_1);
+ assign _zz__zz_maskProposal_0_2_2 = {maskLocked_0,maskLocked_1};
+ assign _zz__zz_maskProposal_0_2_1 = {2'd0, _zz__zz_maskProposal_0_2_2};
+ assign maskRouted_0 = (locked ? maskLocked_0 : maskProposal_0);
+ assign maskRouted_1 = (locked ? maskLocked_1 : maskProposal_1);
+ assign _zz_maskProposal_0 = {io_inputs_1_valid,io_inputs_0_valid};
+ assign _zz_maskProposal_0_1 = {_zz_maskProposal_0,_zz_maskProposal_0};
+ assign _zz_maskProposal_0_2 = (_zz_maskProposal_0_1 & (~ _zz__zz_maskProposal_0_2));
+ assign _zz_maskProposal_0_3 = (_zz_maskProposal_0_2[3 : 2] | _zz_maskProposal_0_2[1 : 0]);
+ assign maskProposal_0 = _zz_maskProposal_0_3[0];
+ assign maskProposal_1 = _zz_maskProposal_0_3[1];
+ assign io_output_fire = (io_output_valid && io_output_ready);
+ assign when_Stream_l683 = (io_output_fire && io_output_payload_last);
+ assign io_output_valid = ((io_inputs_0_valid && maskRouted_0) || (io_inputs_1_valid && maskRouted_1));
+ assign io_output_payload_last = (maskRouted_0 ? io_inputs_0_payload_last : io_inputs_1_payload_last);
+ assign io_output_payload_fragment_source = (maskRouted_0 ? io_inputs_0_payload_fragment_source : io_inputs_1_payload_fragment_source);
+ assign io_output_payload_fragment_opcode = (maskRouted_0 ? io_inputs_0_payload_fragment_opcode : io_inputs_1_payload_fragment_opcode);
+ assign io_output_payload_fragment_address = (maskRouted_0 ? io_inputs_0_payload_fragment_address : io_inputs_1_payload_fragment_address);
+ assign io_output_payload_fragment_length = (maskRouted_0 ? io_inputs_0_payload_fragment_length : io_inputs_1_payload_fragment_length);
+ assign io_output_payload_fragment_data = (maskRouted_0 ? io_inputs_0_payload_fragment_data : io_inputs_1_payload_fragment_data);
+ assign io_output_payload_fragment_mask = (maskRouted_0 ? io_inputs_0_payload_fragment_mask : io_inputs_1_payload_fragment_mask);
+ assign io_output_payload_fragment_context = (maskRouted_0 ? io_inputs_0_payload_fragment_context : io_inputs_1_payload_fragment_context);
+ assign io_inputs_0_ready = (maskRouted_0 && io_output_ready);
+ assign io_inputs_1_ready = (maskRouted_1 && io_output_ready);
+ assign io_chosenOH = {maskRouted_1,maskRouted_0};
+ assign _zz_io_chosen = io_chosenOH[1];
+ assign io_chosen = _zz_io_chosen;
+ always @(posedge clk) begin
+ if(reset) begin
+ locked <= 1'b0;
+ maskLocked_0 <= 1'b0;
+ maskLocked_1 <= 1'b1;
+ end else begin
+ if(io_output_valid) begin
+ maskLocked_0 <= maskRouted_0;
+ maskLocked_1 <= maskRouted_1;
+ end
+ if(io_output_valid) begin
+ locked <= 1'b1;
+ end
+ if(when_Stream_l683) begin
+ locked <= 1'b0;
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamArbiter (
+ input wire io_inputs_0_valid,
+ output wire io_inputs_0_ready,
+ input wire io_inputs_0_payload_last,
+ input wire [0:0] io_inputs_0_payload_fragment_source,
+ input wire [0:0] io_inputs_0_payload_fragment_opcode,
+ input wire [31:0] io_inputs_0_payload_fragment_address,
+ input wire [11:0] io_inputs_0_payload_fragment_length,
+ input wire [20:0] io_inputs_0_payload_fragment_context,
+ input wire io_inputs_1_valid,
+ output wire io_inputs_1_ready,
+ input wire io_inputs_1_payload_last,
+ input wire [0:0] io_inputs_1_payload_fragment_source,
+ input wire [0:0] io_inputs_1_payload_fragment_opcode,
+ input wire [31:0] io_inputs_1_payload_fragment_address,
+ input wire [11:0] io_inputs_1_payload_fragment_length,
+ input wire [20:0] io_inputs_1_payload_fragment_context,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire io_output_payload_last,
+ output wire [0:0] io_output_payload_fragment_source,
+ output wire [0:0] io_output_payload_fragment_opcode,
+ output wire [31:0] io_output_payload_fragment_address,
+ output wire [11:0] io_output_payload_fragment_length,
+ output wire [20:0] io_output_payload_fragment_context,
+ output wire [0:0] io_chosen,
+ output wire [1:0] io_chosenOH,
+ input wire clk,
+ input wire reset
+);
+
+ wire [3:0] _zz__zz_maskProposal_0_2;
+ wire [3:0] _zz__zz_maskProposal_0_2_1;
+ wire [1:0] _zz__zz_maskProposal_0_2_2;
+ reg locked;
+ wire maskProposal_0;
+ wire maskProposal_1;
+ reg maskLocked_0;
+ reg maskLocked_1;
+ wire maskRouted_0;
+ wire maskRouted_1;
+ wire [1:0] _zz_maskProposal_0;
+ wire [3:0] _zz_maskProposal_0_1;
+ wire [3:0] _zz_maskProposal_0_2;
+ wire [1:0] _zz_maskProposal_0_3;
+ wire io_output_fire;
+ wire when_Stream_l683;
+ wire _zz_io_chosen;
+
+ assign _zz__zz_maskProposal_0_2 = (_zz_maskProposal_0_1 - _zz__zz_maskProposal_0_2_1);
+ assign _zz__zz_maskProposal_0_2_2 = {maskLocked_0,maskLocked_1};
+ assign _zz__zz_maskProposal_0_2_1 = {2'd0, _zz__zz_maskProposal_0_2_2};
+ assign maskRouted_0 = (locked ? maskLocked_0 : maskProposal_0);
+ assign maskRouted_1 = (locked ? maskLocked_1 : maskProposal_1);
+ assign _zz_maskProposal_0 = {io_inputs_1_valid,io_inputs_0_valid};
+ assign _zz_maskProposal_0_1 = {_zz_maskProposal_0,_zz_maskProposal_0};
+ assign _zz_maskProposal_0_2 = (_zz_maskProposal_0_1 & (~ _zz__zz_maskProposal_0_2));
+ assign _zz_maskProposal_0_3 = (_zz_maskProposal_0_2[3 : 2] | _zz_maskProposal_0_2[1 : 0]);
+ assign maskProposal_0 = _zz_maskProposal_0_3[0];
+ assign maskProposal_1 = _zz_maskProposal_0_3[1];
+ assign io_output_fire = (io_output_valid && io_output_ready);
+ assign when_Stream_l683 = (io_output_fire && io_output_payload_last);
+ assign io_output_valid = ((io_inputs_0_valid && maskRouted_0) || (io_inputs_1_valid && maskRouted_1));
+ assign io_output_payload_last = (maskRouted_0 ? io_inputs_0_payload_last : io_inputs_1_payload_last);
+ assign io_output_payload_fragment_source = (maskRouted_0 ? io_inputs_0_payload_fragment_source : io_inputs_1_payload_fragment_source);
+ assign io_output_payload_fragment_opcode = (maskRouted_0 ? io_inputs_0_payload_fragment_opcode : io_inputs_1_payload_fragment_opcode);
+ assign io_output_payload_fragment_address = (maskRouted_0 ? io_inputs_0_payload_fragment_address : io_inputs_1_payload_fragment_address);
+ assign io_output_payload_fragment_length = (maskRouted_0 ? io_inputs_0_payload_fragment_length : io_inputs_1_payload_fragment_length);
+ assign io_output_payload_fragment_context = (maskRouted_0 ? io_inputs_0_payload_fragment_context : io_inputs_1_payload_fragment_context);
+ assign io_inputs_0_ready = (maskRouted_0 && io_output_ready);
+ assign io_inputs_1_ready = (maskRouted_1 && io_output_ready);
+ assign io_chosenOH = {maskRouted_1,maskRouted_0};
+ assign _zz_io_chosen = io_chosenOH[1];
+ assign io_chosen = _zz_io_chosen;
+ always @(posedge clk) begin
+ if(reset) begin
+ locked <= 1'b0;
+ maskLocked_0 <= 1'b0;
+ maskLocked_1 <= 1'b1;
+ end else begin
+ if(io_output_valid) begin
+ maskLocked_0 <= maskRouted_0;
+ maskLocked_1 <= maskRouted_1;
+ end
+ if(io_output_valid) begin
+ locked <= 1'b1;
+ end
+ if(when_Stream_l683) begin
+ locked <= 1'b0;
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BufferCC_5 (
+ input wire [4:0] io_dataIn,
+ output wire [4:0] io_dataOut,
+ input wire dat1_o_clk,
+ input wire dat1_o_reset
+);
+
+ (* async_reg = "true" *) reg [4:0] buffers_0;
+ (* async_reg = "true" *) reg [4:0] buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge dat1_o_clk) begin
+ if(dat1_o_reset) begin
+ buffers_0 <= 5'h0;
+ buffers_1 <= 5'h0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+//EfxDMA_BufferCC_4 replaced by EfxDMA_BufferCC_3
+
+module EfxDMA_BufferCC_3 (
+ input wire [4:0] io_dataIn,
+ output wire [4:0] io_dataOut,
+ input wire clk,
+ input wire reset
+);
+
+ (* async_reg = "true" *) reg [4:0] buffers_0;
+ (* async_reg = "true" *) reg [4:0] buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge clk) begin
+ if(reset) begin
+ buffers_0 <= 5'h0;
+ buffers_1 <= 5'h0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BufferCC_2 (
+ input wire [4:0] io_dataIn,
+ output wire [4:0] io_dataOut,
+ input wire dat0_i_clk,
+ input wire dat0_i_reset
+);
+
+ (* async_reg = "true" *) reg [4:0] buffers_0;
+ (* async_reg = "true" *) reg [4:0] buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge dat0_i_clk) begin
+ if(dat0_i_reset) begin
+ buffers_0 <= 5'h0;
+ buffers_1 <= 5'h0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbContextRemover_1 (
+ input wire io_input_cmd_valid,
+ output reg io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [127:0] io_input_cmd_payload_fragment_data,
+ input wire [15:0] io_input_cmd_payload_fragment_mask,
+ input wire [13:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [13:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ output wire [127:0] io_output_cmd_payload_fragment_data,
+ output wire [15:0] io_output_cmd_payload_fragment_mask,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire clk,
+ input wire reset
+);
+
+ reg fifoFork_thrown_translated_fifo_io_pop_ready;
+ wire fifoFork_thrown_translated_fifo_io_push_ready;
+ wire fifoFork_thrown_translated_fifo_io_pop_valid;
+ wire [13:0] fifoFork_thrown_translated_fifo_io_pop_payload_context;
+ wire [2:0] fifoFork_thrown_translated_fifo_io_occupancy;
+ wire [2:0] fifoFork_thrown_translated_fifo_io_availability;
+ wire fifoFork_valid;
+ reg fifoFork_ready;
+ wire fifoFork_payload_last;
+ wire [0:0] fifoFork_payload_fragment_opcode;
+ wire [31:0] fifoFork_payload_fragment_address;
+ wire [11:0] fifoFork_payload_fragment_length;
+ wire [127:0] fifoFork_payload_fragment_data;
+ wire [15:0] fifoFork_payload_fragment_mask;
+ wire [13:0] fifoFork_payload_fragment_context;
+ wire cmdFork_valid;
+ wire cmdFork_ready;
+ wire cmdFork_payload_last;
+ wire [0:0] cmdFork_payload_fragment_opcode;
+ wire [31:0] cmdFork_payload_fragment_address;
+ wire [11:0] cmdFork_payload_fragment_length;
+ wire [127:0] cmdFork_payload_fragment_data;
+ wire [15:0] cmdFork_payload_fragment_mask;
+ wire [13:0] cmdFork_payload_fragment_context;
+ reg io_input_cmd_fork2_logic_linkEnable_0;
+ reg io_input_cmd_fork2_logic_linkEnable_1;
+ wire when_Stream_l1063;
+ wire when_Stream_l1063_1;
+ wire fifoFork_fire;
+ wire cmdFork_fire;
+ wire [13:0] pushCtx_context;
+ reg fifoFork_payload_first;
+ wire when_Stream_l445;
+ reg fifoFork_thrown_valid;
+ wire fifoFork_thrown_ready;
+ wire fifoFork_thrown_payload_last;
+ wire [0:0] fifoFork_thrown_payload_fragment_opcode;
+ wire [31:0] fifoFork_thrown_payload_fragment_address;
+ wire [11:0] fifoFork_thrown_payload_fragment_length;
+ wire [127:0] fifoFork_thrown_payload_fragment_data;
+ wire [15:0] fifoFork_thrown_payload_fragment_mask;
+ wire [13:0] fifoFork_thrown_payload_fragment_context;
+ wire fifoFork_thrown_translated_valid;
+ wire fifoFork_thrown_translated_ready;
+ wire [13:0] fifoFork_thrown_translated_payload_context;
+ wire popCtx_valid;
+ wire popCtx_ready;
+ wire [13:0] popCtx_payload_context;
+ reg fifoFork_thrown_translated_fifo_io_pop_rValid;
+ reg [13:0] fifoFork_thrown_translated_fifo_io_pop_rData_context;
+ wire when_Stream_l375;
+ wire _zz_io_input_rsp_valid;
+
+ EfxDMA_StreamFifo_1 fifoFork_thrown_translated_fifo (
+ .io_push_valid (fifoFork_thrown_translated_valid ), //i
+ .io_push_ready (fifoFork_thrown_translated_fifo_io_push_ready ), //o
+ .io_push_payload_context (fifoFork_thrown_translated_payload_context[13:0] ), //i
+ .io_pop_valid (fifoFork_thrown_translated_fifo_io_pop_valid ), //o
+ .io_pop_ready (fifoFork_thrown_translated_fifo_io_pop_ready ), //i
+ .io_pop_payload_context (fifoFork_thrown_translated_fifo_io_pop_payload_context[13:0]), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (fifoFork_thrown_translated_fifo_io_occupancy[2:0] ), //o
+ .io_availability (fifoFork_thrown_translated_fifo_io_availability[2:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ io_input_cmd_ready = 1'b1;
+ if(when_Stream_l1063) begin
+ io_input_cmd_ready = 1'b0;
+ end
+ if(when_Stream_l1063_1) begin
+ io_input_cmd_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l1063 = ((! fifoFork_ready) && io_input_cmd_fork2_logic_linkEnable_0);
+ assign when_Stream_l1063_1 = ((! cmdFork_ready) && io_input_cmd_fork2_logic_linkEnable_1);
+ assign fifoFork_valid = (io_input_cmd_valid && io_input_cmd_fork2_logic_linkEnable_0);
+ assign fifoFork_payload_last = io_input_cmd_payload_last;
+ assign fifoFork_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign fifoFork_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign fifoFork_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign fifoFork_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign fifoFork_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign fifoFork_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign fifoFork_fire = (fifoFork_valid && fifoFork_ready);
+ assign cmdFork_valid = (io_input_cmd_valid && io_input_cmd_fork2_logic_linkEnable_1);
+ assign cmdFork_payload_last = io_input_cmd_payload_last;
+ assign cmdFork_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign cmdFork_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign cmdFork_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign cmdFork_payload_fragment_data = io_input_cmd_payload_fragment_data;
+ assign cmdFork_payload_fragment_mask = io_input_cmd_payload_fragment_mask;
+ assign cmdFork_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign cmdFork_fire = (cmdFork_valid && cmdFork_ready);
+ assign io_output_cmd_valid = cmdFork_valid;
+ assign cmdFork_ready = io_output_cmd_ready;
+ assign io_output_cmd_payload_last = cmdFork_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = cmdFork_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = cmdFork_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = cmdFork_payload_fragment_length;
+ assign io_output_cmd_payload_fragment_data = cmdFork_payload_fragment_data;
+ assign io_output_cmd_payload_fragment_mask = cmdFork_payload_fragment_mask;
+ assign pushCtx_context = fifoFork_payload_fragment_context;
+ assign when_Stream_l445 = (! fifoFork_payload_first);
+ always @(*) begin
+ fifoFork_thrown_valid = fifoFork_valid;
+ if(when_Stream_l445) begin
+ fifoFork_thrown_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ fifoFork_ready = fifoFork_thrown_ready;
+ if(when_Stream_l445) begin
+ fifoFork_ready = 1'b1;
+ end
+ end
+
+ assign fifoFork_thrown_payload_last = fifoFork_payload_last;
+ assign fifoFork_thrown_payload_fragment_opcode = fifoFork_payload_fragment_opcode;
+ assign fifoFork_thrown_payload_fragment_address = fifoFork_payload_fragment_address;
+ assign fifoFork_thrown_payload_fragment_length = fifoFork_payload_fragment_length;
+ assign fifoFork_thrown_payload_fragment_data = fifoFork_payload_fragment_data;
+ assign fifoFork_thrown_payload_fragment_mask = fifoFork_payload_fragment_mask;
+ assign fifoFork_thrown_payload_fragment_context = fifoFork_payload_fragment_context;
+ assign fifoFork_thrown_translated_valid = fifoFork_thrown_valid;
+ assign fifoFork_thrown_ready = fifoFork_thrown_translated_ready;
+ assign fifoFork_thrown_translated_payload_context = pushCtx_context;
+ assign fifoFork_thrown_translated_ready = fifoFork_thrown_translated_fifo_io_push_ready;
+ always @(*) begin
+ fifoFork_thrown_translated_fifo_io_pop_ready = popCtx_ready;
+ if(when_Stream_l375) begin
+ fifoFork_thrown_translated_fifo_io_pop_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! popCtx_valid);
+ assign popCtx_valid = fifoFork_thrown_translated_fifo_io_pop_rValid;
+ assign popCtx_payload_context = fifoFork_thrown_translated_fifo_io_pop_rData_context;
+ assign popCtx_ready = ((io_output_rsp_valid && io_output_rsp_payload_last) && io_input_rsp_ready);
+ assign _zz_io_input_rsp_valid = (! (! popCtx_valid));
+ assign io_output_rsp_ready = (io_input_rsp_ready && _zz_io_input_rsp_valid);
+ assign io_input_rsp_valid = (io_output_rsp_valid && _zz_io_input_rsp_valid);
+ assign io_input_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_context = popCtx_payload_context;
+ always @(posedge clk) begin
+ if(reset) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ fifoFork_payload_first <= 1'b1;
+ fifoFork_thrown_translated_fifo_io_pop_rValid <= 1'b0;
+ end else begin
+ if(fifoFork_fire) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdFork_fire) begin
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_cmd_ready) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(fifoFork_fire) begin
+ fifoFork_payload_first <= fifoFork_payload_last;
+ end
+ if(fifoFork_thrown_translated_fifo_io_pop_ready) begin
+ fifoFork_thrown_translated_fifo_io_pop_rValid <= fifoFork_thrown_translated_fifo_io_pop_valid;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(fifoFork_thrown_translated_fifo_io_pop_ready) begin
+ fifoFork_thrown_translated_fifo_io_pop_rData_context <= fifoFork_thrown_translated_fifo_io_pop_payload_context;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BmbContextRemover (
+ input wire io_input_cmd_valid,
+ output reg io_input_cmd_ready,
+ input wire io_input_cmd_payload_last,
+ input wire [0:0] io_input_cmd_payload_fragment_opcode,
+ input wire [31:0] io_input_cmd_payload_fragment_address,
+ input wire [11:0] io_input_cmd_payload_fragment_length,
+ input wire [21:0] io_input_cmd_payload_fragment_context,
+ output wire io_input_rsp_valid,
+ input wire io_input_rsp_ready,
+ output wire io_input_rsp_payload_last,
+ output wire [0:0] io_input_rsp_payload_fragment_opcode,
+ output wire [127:0] io_input_rsp_payload_fragment_data,
+ output wire [21:0] io_input_rsp_payload_fragment_context,
+ output wire io_output_cmd_valid,
+ input wire io_output_cmd_ready,
+ output wire io_output_cmd_payload_last,
+ output wire [0:0] io_output_cmd_payload_fragment_opcode,
+ output wire [31:0] io_output_cmd_payload_fragment_address,
+ output wire [11:0] io_output_cmd_payload_fragment_length,
+ input wire io_output_rsp_valid,
+ output wire io_output_rsp_ready,
+ input wire io_output_rsp_payload_last,
+ input wire [0:0] io_output_rsp_payload_fragment_opcode,
+ input wire [127:0] io_output_rsp_payload_fragment_data,
+ input wire clk,
+ input wire reset
+);
+
+ reg fifoFork_thrown_translated_fifo_io_pop_ready;
+ wire fifoFork_thrown_translated_fifo_io_push_ready;
+ wire fifoFork_thrown_translated_fifo_io_pop_valid;
+ wire [21:0] fifoFork_thrown_translated_fifo_io_pop_payload_context;
+ wire [2:0] fifoFork_thrown_translated_fifo_io_occupancy;
+ wire [2:0] fifoFork_thrown_translated_fifo_io_availability;
+ wire fifoFork_valid;
+ reg fifoFork_ready;
+ wire fifoFork_payload_last;
+ wire [0:0] fifoFork_payload_fragment_opcode;
+ wire [31:0] fifoFork_payload_fragment_address;
+ wire [11:0] fifoFork_payload_fragment_length;
+ wire [21:0] fifoFork_payload_fragment_context;
+ wire cmdFork_valid;
+ wire cmdFork_ready;
+ wire cmdFork_payload_last;
+ wire [0:0] cmdFork_payload_fragment_opcode;
+ wire [31:0] cmdFork_payload_fragment_address;
+ wire [11:0] cmdFork_payload_fragment_length;
+ wire [21:0] cmdFork_payload_fragment_context;
+ reg io_input_cmd_fork2_logic_linkEnable_0;
+ reg io_input_cmd_fork2_logic_linkEnable_1;
+ wire when_Stream_l1063;
+ wire when_Stream_l1063_1;
+ wire fifoFork_fire;
+ wire cmdFork_fire;
+ wire [21:0] pushCtx_context;
+ reg fifoFork_payload_first;
+ wire when_Stream_l445;
+ reg fifoFork_thrown_valid;
+ wire fifoFork_thrown_ready;
+ wire fifoFork_thrown_payload_last;
+ wire [0:0] fifoFork_thrown_payload_fragment_opcode;
+ wire [31:0] fifoFork_thrown_payload_fragment_address;
+ wire [11:0] fifoFork_thrown_payload_fragment_length;
+ wire [21:0] fifoFork_thrown_payload_fragment_context;
+ wire fifoFork_thrown_translated_valid;
+ wire fifoFork_thrown_translated_ready;
+ wire [21:0] fifoFork_thrown_translated_payload_context;
+ wire popCtx_valid;
+ wire popCtx_ready;
+ wire [21:0] popCtx_payload_context;
+ reg fifoFork_thrown_translated_fifo_io_pop_rValid;
+ reg [21:0] fifoFork_thrown_translated_fifo_io_pop_rData_context;
+ wire when_Stream_l375;
+ wire _zz_io_input_rsp_valid;
+
+ EfxDMA_StreamFifo fifoFork_thrown_translated_fifo (
+ .io_push_valid (fifoFork_thrown_translated_valid ), //i
+ .io_push_ready (fifoFork_thrown_translated_fifo_io_push_ready ), //o
+ .io_push_payload_context (fifoFork_thrown_translated_payload_context[21:0] ), //i
+ .io_pop_valid (fifoFork_thrown_translated_fifo_io_pop_valid ), //o
+ .io_pop_ready (fifoFork_thrown_translated_fifo_io_pop_ready ), //i
+ .io_pop_payload_context (fifoFork_thrown_translated_fifo_io_pop_payload_context[21:0]), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (fifoFork_thrown_translated_fifo_io_occupancy[2:0] ), //o
+ .io_availability (fifoFork_thrown_translated_fifo_io_availability[2:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ io_input_cmd_ready = 1'b1;
+ if(when_Stream_l1063) begin
+ io_input_cmd_ready = 1'b0;
+ end
+ if(when_Stream_l1063_1) begin
+ io_input_cmd_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l1063 = ((! fifoFork_ready) && io_input_cmd_fork2_logic_linkEnable_0);
+ assign when_Stream_l1063_1 = ((! cmdFork_ready) && io_input_cmd_fork2_logic_linkEnable_1);
+ assign fifoFork_valid = (io_input_cmd_valid && io_input_cmd_fork2_logic_linkEnable_0);
+ assign fifoFork_payload_last = io_input_cmd_payload_last;
+ assign fifoFork_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign fifoFork_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign fifoFork_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign fifoFork_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign fifoFork_fire = (fifoFork_valid && fifoFork_ready);
+ assign cmdFork_valid = (io_input_cmd_valid && io_input_cmd_fork2_logic_linkEnable_1);
+ assign cmdFork_payload_last = io_input_cmd_payload_last;
+ assign cmdFork_payload_fragment_opcode = io_input_cmd_payload_fragment_opcode;
+ assign cmdFork_payload_fragment_address = io_input_cmd_payload_fragment_address;
+ assign cmdFork_payload_fragment_length = io_input_cmd_payload_fragment_length;
+ assign cmdFork_payload_fragment_context = io_input_cmd_payload_fragment_context;
+ assign cmdFork_fire = (cmdFork_valid && cmdFork_ready);
+ assign io_output_cmd_valid = cmdFork_valid;
+ assign cmdFork_ready = io_output_cmd_ready;
+ assign io_output_cmd_payload_last = cmdFork_payload_last;
+ assign io_output_cmd_payload_fragment_opcode = cmdFork_payload_fragment_opcode;
+ assign io_output_cmd_payload_fragment_address = cmdFork_payload_fragment_address;
+ assign io_output_cmd_payload_fragment_length = cmdFork_payload_fragment_length;
+ assign pushCtx_context = fifoFork_payload_fragment_context;
+ assign when_Stream_l445 = (! fifoFork_payload_first);
+ always @(*) begin
+ fifoFork_thrown_valid = fifoFork_valid;
+ if(when_Stream_l445) begin
+ fifoFork_thrown_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ fifoFork_ready = fifoFork_thrown_ready;
+ if(when_Stream_l445) begin
+ fifoFork_ready = 1'b1;
+ end
+ end
+
+ assign fifoFork_thrown_payload_last = fifoFork_payload_last;
+ assign fifoFork_thrown_payload_fragment_opcode = fifoFork_payload_fragment_opcode;
+ assign fifoFork_thrown_payload_fragment_address = fifoFork_payload_fragment_address;
+ assign fifoFork_thrown_payload_fragment_length = fifoFork_payload_fragment_length;
+ assign fifoFork_thrown_payload_fragment_context = fifoFork_payload_fragment_context;
+ assign fifoFork_thrown_translated_valid = fifoFork_thrown_valid;
+ assign fifoFork_thrown_ready = fifoFork_thrown_translated_ready;
+ assign fifoFork_thrown_translated_payload_context = pushCtx_context;
+ assign fifoFork_thrown_translated_ready = fifoFork_thrown_translated_fifo_io_push_ready;
+ always @(*) begin
+ fifoFork_thrown_translated_fifo_io_pop_ready = popCtx_ready;
+ if(when_Stream_l375) begin
+ fifoFork_thrown_translated_fifo_io_pop_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! popCtx_valid);
+ assign popCtx_valid = fifoFork_thrown_translated_fifo_io_pop_rValid;
+ assign popCtx_payload_context = fifoFork_thrown_translated_fifo_io_pop_rData_context;
+ assign popCtx_ready = ((io_output_rsp_valid && io_output_rsp_payload_last) && io_input_rsp_ready);
+ assign _zz_io_input_rsp_valid = (! (! popCtx_valid));
+ assign io_output_rsp_ready = (io_input_rsp_ready && _zz_io_input_rsp_valid);
+ assign io_input_rsp_valid = (io_output_rsp_valid && _zz_io_input_rsp_valid);
+ assign io_input_rsp_payload_last = io_output_rsp_payload_last;
+ assign io_input_rsp_payload_fragment_opcode = io_output_rsp_payload_fragment_opcode;
+ assign io_input_rsp_payload_fragment_data = io_output_rsp_payload_fragment_data;
+ assign io_input_rsp_payload_fragment_context = popCtx_payload_context;
+ always @(posedge clk) begin
+ if(reset) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ fifoFork_payload_first <= 1'b1;
+ fifoFork_thrown_translated_fifo_io_pop_rValid <= 1'b0;
+ end else begin
+ if(fifoFork_fire) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdFork_fire) begin
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_cmd_ready) begin
+ io_input_cmd_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_cmd_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(fifoFork_fire) begin
+ fifoFork_payload_first <= fifoFork_payload_last;
+ end
+ if(fifoFork_thrown_translated_fifo_io_pop_ready) begin
+ fifoFork_thrown_translated_fifo_io_pop_rValid <= fifoFork_thrown_translated_fifo_io_pop_valid;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(fifoFork_thrown_translated_fifo_io_pop_ready) begin
+ fifoFork_thrown_translated_fifo_io_pop_rData_context <= fifoFork_thrown_translated_fifo_io_pop_payload_context;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_FlowCCUnsafeByToggle_1 (
+ input wire io_input_valid,
+ input wire [31:0] io_input_payload_PRDATA,
+ input wire io_input_payload_PSLVERROR,
+ output wire io_output_valid,
+ output wire [31:0] io_output_payload_PRDATA,
+ output wire io_output_payload_PSLVERROR,
+ input wire clk,
+ input wire reset,
+ input wire ctrl_clk,
+ input wire ctrl_reset
+);
+
+ wire inputArea_target_buffercc_io_dataOut;
+ reg inputArea_target;
+ reg [31:0] inputArea_data_PRDATA;
+ reg inputArea_data_PSLVERROR;
+ wire outputArea_target;
+ reg outputArea_hit;
+ wire outputArea_flow_valid;
+ wire [31:0] outputArea_flow_payload_PRDATA;
+ wire outputArea_flow_payload_PSLVERROR;
+ reg outputArea_flow_m2sPipe_valid;
+ (* async_reg = "true" *) reg [31:0] outputArea_flow_m2sPipe_payload_PRDATA;
+ (* async_reg = "true" *) reg outputArea_flow_m2sPipe_payload_PSLVERROR;
+
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC_1 inputArea_target_buffercc (
+ .io_dataIn (inputArea_target ), //i
+ .io_dataOut (inputArea_target_buffercc_io_dataOut), //o
+ .ctrl_clk (ctrl_clk ), //i
+ .ctrl_reset (ctrl_reset ) //i
+ );
+ assign outputArea_target = inputArea_target_buffercc_io_dataOut;
+ assign outputArea_flow_valid = (outputArea_target != outputArea_hit);
+ assign outputArea_flow_payload_PRDATA = inputArea_data_PRDATA;
+ assign outputArea_flow_payload_PSLVERROR = inputArea_data_PSLVERROR;
+ assign io_output_valid = outputArea_flow_m2sPipe_valid;
+ assign io_output_payload_PRDATA = outputArea_flow_m2sPipe_payload_PRDATA;
+ assign io_output_payload_PSLVERROR = outputArea_flow_m2sPipe_payload_PSLVERROR;
+ always @(posedge clk) begin
+ if(reset) begin
+ inputArea_target <= 1'b0;
+ end else begin
+ if(io_input_valid) begin
+ inputArea_target <= (! inputArea_target);
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_input_valid) begin
+ inputArea_data_PRDATA <= io_input_payload_PRDATA;
+ inputArea_data_PSLVERROR <= io_input_payload_PSLVERROR;
+ end
+ end
+
+ always @(posedge ctrl_clk) begin
+ if(ctrl_reset) begin
+ outputArea_flow_m2sPipe_valid <= 1'b0;
+ outputArea_hit <= 1'b0;
+ end else begin
+ outputArea_hit <= outputArea_target;
+ outputArea_flow_m2sPipe_valid <= outputArea_flow_valid;
+ end
+ end
+
+ always @(posedge ctrl_clk) begin
+ if(outputArea_flow_valid) begin
+ outputArea_flow_m2sPipe_payload_PRDATA <= outputArea_flow_payload_PRDATA;
+ outputArea_flow_m2sPipe_payload_PSLVERROR <= outputArea_flow_payload_PSLVERROR;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_FlowCCUnsafeByToggle (
+ input wire io_input_valid,
+ input wire [13:0] io_input_payload_PADDR,
+ input wire io_input_payload_PWRITE,
+ input wire [31:0] io_input_payload_PWDATA,
+ output wire io_output_valid,
+ output wire [13:0] io_output_payload_PADDR,
+ output wire io_output_payload_PWRITE,
+ output wire [31:0] io_output_payload_PWDATA,
+ input wire ctrl_clk,
+ input wire ctrl_reset,
+ input wire clk,
+ input wire reset
+);
+
+ wire inputArea_target_buffercc_io_dataOut;
+ reg inputArea_target;
+ reg [13:0] inputArea_data_PADDR;
+ reg inputArea_data_PWRITE;
+ reg [31:0] inputArea_data_PWDATA;
+ wire outputArea_target;
+ reg outputArea_hit;
+ wire outputArea_flow_valid;
+ wire [13:0] outputArea_flow_payload_PADDR;
+ wire outputArea_flow_payload_PWRITE;
+ wire [31:0] outputArea_flow_payload_PWDATA;
+
+ (* keep_hierarchy = "TRUE" *) EfxDMA_BufferCC inputArea_target_buffercc (
+ .io_dataIn (inputArea_target ), //i
+ .io_dataOut (inputArea_target_buffercc_io_dataOut), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign outputArea_target = inputArea_target_buffercc_io_dataOut;
+ assign outputArea_flow_valid = (outputArea_target != outputArea_hit);
+ assign outputArea_flow_payload_PADDR = inputArea_data_PADDR;
+ assign outputArea_flow_payload_PWRITE = inputArea_data_PWRITE;
+ assign outputArea_flow_payload_PWDATA = inputArea_data_PWDATA;
+ assign io_output_valid = outputArea_flow_valid;
+ assign io_output_payload_PADDR = outputArea_flow_payload_PADDR;
+ assign io_output_payload_PWRITE = outputArea_flow_payload_PWRITE;
+ assign io_output_payload_PWDATA = outputArea_flow_payload_PWDATA;
+ always @(posedge ctrl_clk) begin
+ if(ctrl_reset) begin
+ inputArea_target <= 1'b0;
+ end else begin
+ if(io_input_valid) begin
+ inputArea_target <= (! inputArea_target);
+ end
+ end
+ end
+
+ always @(posedge ctrl_clk) begin
+ if(io_input_valid) begin
+ inputArea_data_PADDR <= io_input_payload_PADDR;
+ inputArea_data_PWRITE <= io_input_payload_PWRITE;
+ inputArea_data_PWDATA <= io_input_payload_PWDATA;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ outputArea_hit <= 1'b0;
+ end else begin
+ outputArea_hit <= outputArea_target;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_Aggregator (
+ input wire io_input_valid,
+ output reg io_input_ready,
+ input wire [127:0] io_input_payload_data,
+ input wire [15:0] io_input_payload_mask,
+ output reg [127:0] io_output_data,
+ output reg [15:0] io_output_mask,
+ input wire io_output_enough,
+ input wire io_output_consume,
+ output wire io_output_consumed,
+ input wire [3:0] io_output_lastByteUsed,
+ output wire [3:0] io_output_usedUntil,
+ input wire io_flush,
+ input wire [3:0] io_offset,
+ input wire [11:0] io_burstLength,
+ input wire clk,
+ input wire reset
+);
+
+ reg [0:0] _zz_s0_countOnesLogic_0_1;
+ wire [0:0] _zz_s0_countOnesLogic_0_2;
+ reg [1:0] _zz_s0_countOnesLogic_1_1;
+ wire [1:0] _zz_s0_countOnesLogic_1_2;
+ reg [1:0] _zz_s0_countOnesLogic_2_1;
+ wire [2:0] _zz_s0_countOnesLogic_2_2;
+ reg [2:0] _zz_s0_countOnesLogic_3_9;
+ wire [2:0] _zz_s0_countOnesLogic_3_10;
+ reg [2:0] _zz_s0_countOnesLogic_3_11;
+ wire [2:0] _zz_s0_countOnesLogic_3_12;
+ wire [0:0] _zz_s0_countOnesLogic_3_13;
+ reg [2:0] _zz_s0_countOnesLogic_4_9;
+ wire [2:0] _zz_s0_countOnesLogic_4_10;
+ reg [2:0] _zz_s0_countOnesLogic_4_11;
+ wire [2:0] _zz_s0_countOnesLogic_4_12;
+ wire [1:0] _zz_s0_countOnesLogic_4_13;
+ reg [2:0] _zz_s0_countOnesLogic_5_9;
+ wire [2:0] _zz_s0_countOnesLogic_5_10;
+ reg [2:0] _zz_s0_countOnesLogic_5_11;
+ wire [2:0] _zz_s0_countOnesLogic_5_12;
+ wire [2:0] _zz_s0_countOnesLogic_6_9;
+ reg [2:0] _zz_s0_countOnesLogic_6_10;
+ wire [2:0] _zz_s0_countOnesLogic_6_11;
+ reg [2:0] _zz_s0_countOnesLogic_6_12;
+ wire [2:0] _zz_s0_countOnesLogic_6_13;
+ reg [2:0] _zz_s0_countOnesLogic_6_14;
+ wire [2:0] _zz_s0_countOnesLogic_6_15;
+ wire [0:0] _zz_s0_countOnesLogic_6_16;
+ wire [3:0] _zz_s0_countOnesLogic_7_9;
+ reg [3:0] _zz_s0_countOnesLogic_7_10;
+ wire [2:0] _zz_s0_countOnesLogic_7_11;
+ reg [3:0] _zz_s0_countOnesLogic_7_12;
+ wire [2:0] _zz_s0_countOnesLogic_7_13;
+ reg [3:0] _zz_s0_countOnesLogic_7_14;
+ wire [2:0] _zz_s0_countOnesLogic_7_15;
+ wire [1:0] _zz_s0_countOnesLogic_7_16;
+ wire [3:0] _zz_s0_countOnesLogic_8_9;
+ reg [3:0] _zz_s0_countOnesLogic_8_10;
+ wire [2:0] _zz_s0_countOnesLogic_8_11;
+ reg [3:0] _zz_s0_countOnesLogic_8_12;
+ wire [2:0] _zz_s0_countOnesLogic_8_13;
+ reg [3:0] _zz_s0_countOnesLogic_8_14;
+ wire [2:0] _zz_s0_countOnesLogic_8_15;
+ wire [3:0] _zz_s0_countOnesLogic_9_9;
+ reg [3:0] _zz_s0_countOnesLogic_9_10;
+ wire [2:0] _zz_s0_countOnesLogic_9_11;
+ reg [3:0] _zz_s0_countOnesLogic_9_12;
+ wire [2:0] _zz_s0_countOnesLogic_9_13;
+ wire [3:0] _zz_s0_countOnesLogic_9_14;
+ reg [3:0] _zz_s0_countOnesLogic_9_15;
+ wire [2:0] _zz_s0_countOnesLogic_9_16;
+ reg [3:0] _zz_s0_countOnesLogic_9_17;
+ wire [2:0] _zz_s0_countOnesLogic_9_18;
+ wire [0:0] _zz_s0_countOnesLogic_9_19;
+ wire [3:0] _zz_s0_countOnesLogic_10_9;
+ reg [3:0] _zz_s0_countOnesLogic_10_10;
+ wire [2:0] _zz_s0_countOnesLogic_10_11;
+ reg [3:0] _zz_s0_countOnesLogic_10_12;
+ wire [2:0] _zz_s0_countOnesLogic_10_13;
+ wire [3:0] _zz_s0_countOnesLogic_10_14;
+ reg [3:0] _zz_s0_countOnesLogic_10_15;
+ wire [2:0] _zz_s0_countOnesLogic_10_16;
+ reg [3:0] _zz_s0_countOnesLogic_10_17;
+ wire [2:0] _zz_s0_countOnesLogic_10_18;
+ wire [1:0] _zz_s0_countOnesLogic_10_19;
+ wire [3:0] _zz_s0_countOnesLogic_11_9;
+ reg [3:0] _zz_s0_countOnesLogic_11_10;
+ wire [2:0] _zz_s0_countOnesLogic_11_11;
+ reg [3:0] _zz_s0_countOnesLogic_11_12;
+ wire [2:0] _zz_s0_countOnesLogic_11_13;
+ wire [3:0] _zz_s0_countOnesLogic_11_14;
+ reg [3:0] _zz_s0_countOnesLogic_11_15;
+ wire [2:0] _zz_s0_countOnesLogic_11_16;
+ reg [3:0] _zz_s0_countOnesLogic_11_17;
+ wire [2:0] _zz_s0_countOnesLogic_11_18;
+ wire [3:0] _zz_s0_countOnesLogic_12_9;
+ wire [3:0] _zz_s0_countOnesLogic_12_10;
+ reg [3:0] _zz_s0_countOnesLogic_12_11;
+ wire [2:0] _zz_s0_countOnesLogic_12_12;
+ reg [3:0] _zz_s0_countOnesLogic_12_13;
+ wire [2:0] _zz_s0_countOnesLogic_12_14;
+ wire [3:0] _zz_s0_countOnesLogic_12_15;
+ reg [3:0] _zz_s0_countOnesLogic_12_16;
+ wire [2:0] _zz_s0_countOnesLogic_12_17;
+ reg [3:0] _zz_s0_countOnesLogic_12_18;
+ wire [2:0] _zz_s0_countOnesLogic_12_19;
+ reg [3:0] _zz_s0_countOnesLogic_12_20;
+ wire [2:0] _zz_s0_countOnesLogic_12_21;
+ wire [0:0] _zz_s0_countOnesLogic_12_22;
+ wire [3:0] _zz_s0_countOnesLogic_13_9;
+ wire [3:0] _zz_s0_countOnesLogic_13_10;
+ reg [3:0] _zz_s0_countOnesLogic_13_11;
+ wire [2:0] _zz_s0_countOnesLogic_13_12;
+ reg [3:0] _zz_s0_countOnesLogic_13_13;
+ wire [2:0] _zz_s0_countOnesLogic_13_14;
+ wire [3:0] _zz_s0_countOnesLogic_13_15;
+ reg [3:0] _zz_s0_countOnesLogic_13_16;
+ wire [2:0] _zz_s0_countOnesLogic_13_17;
+ reg [3:0] _zz_s0_countOnesLogic_13_18;
+ wire [2:0] _zz_s0_countOnesLogic_13_19;
+ reg [3:0] _zz_s0_countOnesLogic_13_20;
+ wire [2:0] _zz_s0_countOnesLogic_13_21;
+ wire [1:0] _zz_s0_countOnesLogic_13_22;
+ wire [3:0] _zz_s0_countOnesLogic_14_9;
+ wire [3:0] _zz_s0_countOnesLogic_14_10;
+ reg [3:0] _zz_s0_countOnesLogic_14_11;
+ wire [2:0] _zz_s0_countOnesLogic_14_12;
+ reg [3:0] _zz_s0_countOnesLogic_14_13;
+ wire [2:0] _zz_s0_countOnesLogic_14_14;
+ wire [3:0] _zz_s0_countOnesLogic_14_15;
+ reg [3:0] _zz_s0_countOnesLogic_14_16;
+ wire [2:0] _zz_s0_countOnesLogic_14_17;
+ reg [3:0] _zz_s0_countOnesLogic_14_18;
+ wire [2:0] _zz_s0_countOnesLogic_14_19;
+ reg [3:0] _zz_s0_countOnesLogic_14_20;
+ wire [2:0] _zz_s0_countOnesLogic_14_21;
+ wire [4:0] _zz_s0_countOnesLogic_15_8;
+ wire [4:0] _zz_s0_countOnesLogic_15_9;
+ reg [4:0] _zz_s0_countOnesLogic_15_10;
+ wire [2:0] _zz_s0_countOnesLogic_15_11;
+ reg [4:0] _zz_s0_countOnesLogic_15_12;
+ wire [2:0] _zz_s0_countOnesLogic_15_13;
+ wire [4:0] _zz_s0_countOnesLogic_15_14;
+ reg [4:0] _zz_s0_countOnesLogic_15_15;
+ wire [2:0] _zz_s0_countOnesLogic_15_16;
+ reg [4:0] _zz_s0_countOnesLogic_15_17;
+ wire [2:0] _zz_s0_countOnesLogic_15_18;
+ wire [4:0] _zz_s0_countOnesLogic_15_19;
+ reg [4:0] _zz_s0_countOnesLogic_15_20;
+ wire [2:0] _zz_s0_countOnesLogic_15_21;
+ reg [4:0] _zz_s0_countOnesLogic_15_22;
+ wire [2:0] _zz_s0_countOnesLogic_15_23;
+ wire [0:0] _zz_s0_countOnesLogic_15_24;
+ wire [4:0] _zz_s1_offsetNext;
+ wire [12:0] _zz_s1_byteCounter;
+ wire [3:0] _zz_s1_inputIndexes_1;
+ wire [3:0] _zz_s1_inputIndexes_2;
+ wire [3:0] _zz_s1_inputIndexes_3;
+ wire [3:0] _zz_s1_inputIndexes_4;
+ wire [3:0] _zz_s1_inputIndexes_5;
+ wire [3:0] _zz_s1_inputIndexes_6;
+ wire [3:0] _zz_s1_inputIndexes_7;
+ wire [0:0] _zz_s1_outputPayload_selValid_240;
+ wire [6:0] _zz_s1_outputPayload_selValid_241;
+ wire [0:0] _zz_s1_outputPayload_selValid_242;
+ wire [6:0] _zz_s1_outputPayload_selValid_243;
+ wire [0:0] _zz_s1_outputPayload_selValid_244;
+ wire [6:0] _zz_s1_outputPayload_selValid_245;
+ wire [0:0] _zz_s1_outputPayload_selValid_246;
+ wire [6:0] _zz_s1_outputPayload_selValid_247;
+ wire [0:0] _zz_s1_outputPayload_selValid_248;
+ wire [6:0] _zz_s1_outputPayload_selValid_249;
+ wire [0:0] _zz_s1_outputPayload_selValid_250;
+ wire [6:0] _zz_s1_outputPayload_selValid_251;
+ wire [0:0] _zz_s1_outputPayload_selValid_252;
+ wire [6:0] _zz_s1_outputPayload_selValid_253;
+ wire [0:0] _zz_s1_outputPayload_selValid_254;
+ wire [6:0] _zz_s1_outputPayload_selValid_255;
+ wire [0:0] _zz_s1_outputPayload_selValid_256;
+ wire [6:0] _zz_s1_outputPayload_selValid_257;
+ wire [0:0] _zz_s1_outputPayload_selValid_258;
+ wire [6:0] _zz_s1_outputPayload_selValid_259;
+ wire [0:0] _zz_s1_outputPayload_selValid_260;
+ wire [6:0] _zz_s1_outputPayload_selValid_261;
+ wire [0:0] _zz_s1_outputPayload_selValid_262;
+ wire [6:0] _zz_s1_outputPayload_selValid_263;
+ wire [0:0] _zz_s1_outputPayload_selValid_264;
+ wire [6:0] _zz_s1_outputPayload_selValid_265;
+ wire [0:0] _zz_s1_outputPayload_selValid_266;
+ wire [6:0] _zz_s1_outputPayload_selValid_267;
+ wire [0:0] _zz_s1_outputPayload_selValid_268;
+ wire [6:0] _zz_s1_outputPayload_selValid_269;
+ wire [0:0] _zz_s1_outputPayload_selValid_270;
+ wire [6:0] _zz_s1_outputPayload_selValid_271;
+ wire [12:0] _zz_when_DmaSg_l1464;
+ reg [7:0] _zz_s2_byteLogic_0_inputData;
+ reg [7:0] _zz_s2_byteLogic_1_inputData;
+ reg [7:0] _zz_s2_byteLogic_2_inputData;
+ reg [7:0] _zz_s2_byteLogic_3_inputData;
+ reg [7:0] _zz_s2_byteLogic_4_inputData;
+ reg [7:0] _zz_s2_byteLogic_5_inputData;
+ reg [7:0] _zz_s2_byteLogic_6_inputData;
+ reg [7:0] _zz_s2_byteLogic_7_inputData;
+ reg [7:0] _zz_s2_byteLogic_8_inputData;
+ reg [7:0] _zz_s2_byteLogic_9_inputData;
+ reg [7:0] _zz_s2_byteLogic_10_inputData;
+ reg [7:0] _zz_s2_byteLogic_11_inputData;
+ reg [7:0] _zz_s2_byteLogic_12_inputData;
+ reg [7:0] _zz_s2_byteLogic_13_inputData;
+ reg [7:0] _zz_s2_byteLogic_14_inputData;
+ reg [7:0] _zz_s2_byteLogic_15_inputData;
+ reg [3:0] _zz_io_output_usedUntil_4;
+ wire [3:0] _zz_io_output_usedUntil_5;
+ wire s0_input_valid;
+ wire s0_input_ready;
+ wire [127:0] s0_input_payload_data;
+ wire [15:0] s0_input_payload_mask;
+ reg io_input_rValid;
+ reg [127:0] io_input_rData_data;
+ reg [15:0] io_input_rData_mask;
+ wire when_Stream_l375;
+ wire _zz_s0_countOnesLogic_0;
+ wire _zz_s0_countOnesLogic_1;
+ wire _zz_s0_countOnesLogic_2;
+ wire _zz_s0_countOnesLogic_3;
+ wire _zz_s0_countOnesLogic_4;
+ wire _zz_s0_countOnesLogic_5;
+ wire _zz_s0_countOnesLogic_6;
+ wire _zz_s0_countOnesLogic_7;
+ wire _zz_s0_countOnesLogic_8;
+ wire _zz_s0_countOnesLogic_9;
+ wire _zz_s0_countOnesLogic_10;
+ wire _zz_s0_countOnesLogic_11;
+ wire _zz_s0_countOnesLogic_12;
+ wire _zz_s0_countOnesLogic_13;
+ wire _zz_s0_countOnesLogic_14;
+ wire [0:0] s0_countOnesLogic_0;
+ wire [1:0] s0_countOnesLogic_1;
+ wire [1:0] s0_countOnesLogic_2;
+ wire [2:0] _zz_s0_countOnesLogic_3_1;
+ wire [2:0] _zz_s0_countOnesLogic_3_2;
+ wire [2:0] _zz_s0_countOnesLogic_3_3;
+ wire [2:0] _zz_s0_countOnesLogic_3_4;
+ wire [2:0] _zz_s0_countOnesLogic_3_5;
+ wire [2:0] _zz_s0_countOnesLogic_3_6;
+ wire [2:0] _zz_s0_countOnesLogic_3_7;
+ wire [2:0] _zz_s0_countOnesLogic_3_8;
+ wire [2:0] s0_countOnesLogic_3;
+ wire [2:0] _zz_s0_countOnesLogic_4_1;
+ wire [2:0] _zz_s0_countOnesLogic_4_2;
+ wire [2:0] _zz_s0_countOnesLogic_4_3;
+ wire [2:0] _zz_s0_countOnesLogic_4_4;
+ wire [2:0] _zz_s0_countOnesLogic_4_5;
+ wire [2:0] _zz_s0_countOnesLogic_4_6;
+ wire [2:0] _zz_s0_countOnesLogic_4_7;
+ wire [2:0] _zz_s0_countOnesLogic_4_8;
+ wire [2:0] s0_countOnesLogic_4;
+ wire [2:0] _zz_s0_countOnesLogic_5_1;
+ wire [2:0] _zz_s0_countOnesLogic_5_2;
+ wire [2:0] _zz_s0_countOnesLogic_5_3;
+ wire [2:0] _zz_s0_countOnesLogic_5_4;
+ wire [2:0] _zz_s0_countOnesLogic_5_5;
+ wire [2:0] _zz_s0_countOnesLogic_5_6;
+ wire [2:0] _zz_s0_countOnesLogic_5_7;
+ wire [2:0] _zz_s0_countOnesLogic_5_8;
+ wire [2:0] s0_countOnesLogic_5;
+ wire [2:0] _zz_s0_countOnesLogic_6_1;
+ wire [2:0] _zz_s0_countOnesLogic_6_2;
+ wire [2:0] _zz_s0_countOnesLogic_6_3;
+ wire [2:0] _zz_s0_countOnesLogic_6_4;
+ wire [2:0] _zz_s0_countOnesLogic_6_5;
+ wire [2:0] _zz_s0_countOnesLogic_6_6;
+ wire [2:0] _zz_s0_countOnesLogic_6_7;
+ wire [2:0] _zz_s0_countOnesLogic_6_8;
+ wire [2:0] s0_countOnesLogic_6;
+ wire [3:0] _zz_s0_countOnesLogic_7_1;
+ wire [3:0] _zz_s0_countOnesLogic_7_2;
+ wire [3:0] _zz_s0_countOnesLogic_7_3;
+ wire [3:0] _zz_s0_countOnesLogic_7_4;
+ wire [3:0] _zz_s0_countOnesLogic_7_5;
+ wire [3:0] _zz_s0_countOnesLogic_7_6;
+ wire [3:0] _zz_s0_countOnesLogic_7_7;
+ wire [3:0] _zz_s0_countOnesLogic_7_8;
+ wire [3:0] s0_countOnesLogic_7;
+ wire [3:0] _zz_s0_countOnesLogic_8_1;
+ wire [3:0] _zz_s0_countOnesLogic_8_2;
+ wire [3:0] _zz_s0_countOnesLogic_8_3;
+ wire [3:0] _zz_s0_countOnesLogic_8_4;
+ wire [3:0] _zz_s0_countOnesLogic_8_5;
+ wire [3:0] _zz_s0_countOnesLogic_8_6;
+ wire [3:0] _zz_s0_countOnesLogic_8_7;
+ wire [3:0] _zz_s0_countOnesLogic_8_8;
+ wire [3:0] s0_countOnesLogic_8;
+ wire [3:0] _zz_s0_countOnesLogic_9_1;
+ wire [3:0] _zz_s0_countOnesLogic_9_2;
+ wire [3:0] _zz_s0_countOnesLogic_9_3;
+ wire [3:0] _zz_s0_countOnesLogic_9_4;
+ wire [3:0] _zz_s0_countOnesLogic_9_5;
+ wire [3:0] _zz_s0_countOnesLogic_9_6;
+ wire [3:0] _zz_s0_countOnesLogic_9_7;
+ wire [3:0] _zz_s0_countOnesLogic_9_8;
+ wire [3:0] s0_countOnesLogic_9;
+ wire [3:0] _zz_s0_countOnesLogic_10_1;
+ wire [3:0] _zz_s0_countOnesLogic_10_2;
+ wire [3:0] _zz_s0_countOnesLogic_10_3;
+ wire [3:0] _zz_s0_countOnesLogic_10_4;
+ wire [3:0] _zz_s0_countOnesLogic_10_5;
+ wire [3:0] _zz_s0_countOnesLogic_10_6;
+ wire [3:0] _zz_s0_countOnesLogic_10_7;
+ wire [3:0] _zz_s0_countOnesLogic_10_8;
+ wire [3:0] s0_countOnesLogic_10;
+ wire [3:0] _zz_s0_countOnesLogic_11_1;
+ wire [3:0] _zz_s0_countOnesLogic_11_2;
+ wire [3:0] _zz_s0_countOnesLogic_11_3;
+ wire [3:0] _zz_s0_countOnesLogic_11_4;
+ wire [3:0] _zz_s0_countOnesLogic_11_5;
+ wire [3:0] _zz_s0_countOnesLogic_11_6;
+ wire [3:0] _zz_s0_countOnesLogic_11_7;
+ wire [3:0] _zz_s0_countOnesLogic_11_8;
+ wire [3:0] s0_countOnesLogic_11;
+ wire [3:0] _zz_s0_countOnesLogic_12_1;
+ wire [3:0] _zz_s0_countOnesLogic_12_2;
+ wire [3:0] _zz_s0_countOnesLogic_12_3;
+ wire [3:0] _zz_s0_countOnesLogic_12_4;
+ wire [3:0] _zz_s0_countOnesLogic_12_5;
+ wire [3:0] _zz_s0_countOnesLogic_12_6;
+ wire [3:0] _zz_s0_countOnesLogic_12_7;
+ wire [3:0] _zz_s0_countOnesLogic_12_8;
+ wire [3:0] s0_countOnesLogic_12;
+ wire [3:0] _zz_s0_countOnesLogic_13_1;
+ wire [3:0] _zz_s0_countOnesLogic_13_2;
+ wire [3:0] _zz_s0_countOnesLogic_13_3;
+ wire [3:0] _zz_s0_countOnesLogic_13_4;
+ wire [3:0] _zz_s0_countOnesLogic_13_5;
+ wire [3:0] _zz_s0_countOnesLogic_13_6;
+ wire [3:0] _zz_s0_countOnesLogic_13_7;
+ wire [3:0] _zz_s0_countOnesLogic_13_8;
+ wire [3:0] s0_countOnesLogic_13;
+ wire [3:0] _zz_s0_countOnesLogic_14_1;
+ wire [3:0] _zz_s0_countOnesLogic_14_2;
+ wire [3:0] _zz_s0_countOnesLogic_14_3;
+ wire [3:0] _zz_s0_countOnesLogic_14_4;
+ wire [3:0] _zz_s0_countOnesLogic_14_5;
+ wire [3:0] _zz_s0_countOnesLogic_14_6;
+ wire [3:0] _zz_s0_countOnesLogic_14_7;
+ wire [3:0] _zz_s0_countOnesLogic_14_8;
+ wire [3:0] s0_countOnesLogic_14;
+ wire [4:0] _zz_s0_countOnesLogic_15;
+ wire [4:0] _zz_s0_countOnesLogic_15_1;
+ wire [4:0] _zz_s0_countOnesLogic_15_2;
+ wire [4:0] _zz_s0_countOnesLogic_15_3;
+ wire [4:0] _zz_s0_countOnesLogic_15_4;
+ wire [4:0] _zz_s0_countOnesLogic_15_5;
+ wire [4:0] _zz_s0_countOnesLogic_15_6;
+ wire [4:0] _zz_s0_countOnesLogic_15_7;
+ wire [4:0] s0_countOnesLogic_15;
+ wire [127:0] s0_outputPayload_cmd_data;
+ wire [15:0] s0_outputPayload_cmd_mask;
+ wire [0:0] s0_outputPayload_countOnes_0;
+ wire [1:0] s0_outputPayload_countOnes_1;
+ wire [1:0] s0_outputPayload_countOnes_2;
+ wire [2:0] s0_outputPayload_countOnes_3;
+ wire [2:0] s0_outputPayload_countOnes_4;
+ wire [2:0] s0_outputPayload_countOnes_5;
+ wire [2:0] s0_outputPayload_countOnes_6;
+ wire [3:0] s0_outputPayload_countOnes_7;
+ wire [3:0] s0_outputPayload_countOnes_8;
+ wire [3:0] s0_outputPayload_countOnes_9;
+ wire [3:0] s0_outputPayload_countOnes_10;
+ wire [3:0] s0_outputPayload_countOnes_11;
+ wire [3:0] s0_outputPayload_countOnes_12;
+ wire [3:0] s0_outputPayload_countOnes_13;
+ wire [3:0] s0_outputPayload_countOnes_14;
+ wire [4:0] s0_outputPayload_countOnes_15;
+ wire s0_output_valid;
+ reg s0_output_ready;
+ wire [127:0] s0_output_payload_cmd_data;
+ wire [15:0] s0_output_payload_cmd_mask;
+ wire [0:0] s0_output_payload_countOnes_0;
+ wire [1:0] s0_output_payload_countOnes_1;
+ wire [1:0] s0_output_payload_countOnes_2;
+ wire [2:0] s0_output_payload_countOnes_3;
+ wire [2:0] s0_output_payload_countOnes_4;
+ wire [2:0] s0_output_payload_countOnes_5;
+ wire [2:0] s0_output_payload_countOnes_6;
+ wire [3:0] s0_output_payload_countOnes_7;
+ wire [3:0] s0_output_payload_countOnes_8;
+ wire [3:0] s0_output_payload_countOnes_9;
+ wire [3:0] s0_output_payload_countOnes_10;
+ wire [3:0] s0_output_payload_countOnes_11;
+ wire [3:0] s0_output_payload_countOnes_12;
+ wire [3:0] s0_output_payload_countOnes_13;
+ wire [3:0] s0_output_payload_countOnes_14;
+ wire [4:0] s0_output_payload_countOnes_15;
+ wire s1_input_valid;
+ wire s1_input_ready;
+ wire [127:0] s1_input_payload_cmd_data;
+ wire [15:0] s1_input_payload_cmd_mask;
+ wire [0:0] s1_input_payload_countOnes_0;
+ wire [1:0] s1_input_payload_countOnes_1;
+ wire [1:0] s1_input_payload_countOnes_2;
+ wire [2:0] s1_input_payload_countOnes_3;
+ wire [2:0] s1_input_payload_countOnes_4;
+ wire [2:0] s1_input_payload_countOnes_5;
+ wire [2:0] s1_input_payload_countOnes_6;
+ wire [3:0] s1_input_payload_countOnes_7;
+ wire [3:0] s1_input_payload_countOnes_8;
+ wire [3:0] s1_input_payload_countOnes_9;
+ wire [3:0] s1_input_payload_countOnes_10;
+ wire [3:0] s1_input_payload_countOnes_11;
+ wire [3:0] s1_input_payload_countOnes_12;
+ wire [3:0] s1_input_payload_countOnes_13;
+ wire [3:0] s1_input_payload_countOnes_14;
+ wire [4:0] s1_input_payload_countOnes_15;
+ reg s0_output_rValid;
+ reg [127:0] s0_output_rData_cmd_data;
+ reg [15:0] s0_output_rData_cmd_mask;
+ reg [0:0] s0_output_rData_countOnes_0;
+ reg [1:0] s0_output_rData_countOnes_1;
+ reg [1:0] s0_output_rData_countOnes_2;
+ reg [2:0] s0_output_rData_countOnes_3;
+ reg [2:0] s0_output_rData_countOnes_4;
+ reg [2:0] s0_output_rData_countOnes_5;
+ reg [2:0] s0_output_rData_countOnes_6;
+ reg [3:0] s0_output_rData_countOnes_7;
+ reg [3:0] s0_output_rData_countOnes_8;
+ reg [3:0] s0_output_rData_countOnes_9;
+ reg [3:0] s0_output_rData_countOnes_10;
+ reg [3:0] s0_output_rData_countOnes_11;
+ reg [3:0] s0_output_rData_countOnes_12;
+ reg [3:0] s0_output_rData_countOnes_13;
+ reg [3:0] s0_output_rData_countOnes_14;
+ reg [4:0] s0_output_rData_countOnes_15;
+ wire when_Stream_l375_1;
+ reg [3:0] s1_offset;
+ wire [4:0] s1_offsetNext;
+ wire s1_input_fire;
+ reg [12:0] s1_byteCounter;
+ wire [3:0] s1_inputIndexes_0;
+ wire [3:0] s1_inputIndexes_1;
+ wire [3:0] s1_inputIndexes_2;
+ wire [3:0] s1_inputIndexes_3;
+ wire [3:0] s1_inputIndexes_4;
+ wire [3:0] s1_inputIndexes_5;
+ wire [3:0] s1_inputIndexes_6;
+ wire [3:0] s1_inputIndexes_7;
+ wire [3:0] s1_inputIndexes_8;
+ wire [3:0] s1_inputIndexes_9;
+ wire [3:0] s1_inputIndexes_10;
+ wire [3:0] s1_inputIndexes_11;
+ wire [3:0] s1_inputIndexes_12;
+ wire [3:0] s1_inputIndexes_13;
+ wire [3:0] s1_inputIndexes_14;
+ wire [3:0] s1_inputIndexes_15;
+ wire [127:0] s1_outputPayload_cmd_data;
+ wire [15:0] s1_outputPayload_cmd_mask;
+ wire [3:0] s1_outputPayload_index_0;
+ wire [3:0] s1_outputPayload_index_1;
+ wire [3:0] s1_outputPayload_index_2;
+ wire [3:0] s1_outputPayload_index_3;
+ wire [3:0] s1_outputPayload_index_4;
+ wire [3:0] s1_outputPayload_index_5;
+ wire [3:0] s1_outputPayload_index_6;
+ wire [3:0] s1_outputPayload_index_7;
+ wire [3:0] s1_outputPayload_index_8;
+ wire [3:0] s1_outputPayload_index_9;
+ wire [3:0] s1_outputPayload_index_10;
+ wire [3:0] s1_outputPayload_index_11;
+ wire [3:0] s1_outputPayload_index_12;
+ wire [3:0] s1_outputPayload_index_13;
+ wire [3:0] s1_outputPayload_index_14;
+ wire [3:0] s1_outputPayload_index_15;
+ wire s1_outputPayload_last;
+ wire [3:0] s1_outputPayload_sel_0;
+ wire [3:0] s1_outputPayload_sel_1;
+ wire [3:0] s1_outputPayload_sel_2;
+ wire [3:0] s1_outputPayload_sel_3;
+ wire [3:0] s1_outputPayload_sel_4;
+ wire [3:0] s1_outputPayload_sel_5;
+ wire [3:0] s1_outputPayload_sel_6;
+ wire [3:0] s1_outputPayload_sel_7;
+ wire [3:0] s1_outputPayload_sel_8;
+ wire [3:0] s1_outputPayload_sel_9;
+ wire [3:0] s1_outputPayload_sel_10;
+ wire [3:0] s1_outputPayload_sel_11;
+ wire [3:0] s1_outputPayload_sel_12;
+ wire [3:0] s1_outputPayload_sel_13;
+ wire [3:0] s1_outputPayload_sel_14;
+ wire [3:0] s1_outputPayload_sel_15;
+ reg [15:0] s1_outputPayload_selValid;
+ wire _zz_s1_outputPayload_selValid;
+ wire _zz_s1_outputPayload_selValid_1;
+ wire _zz_s1_outputPayload_selValid_2;
+ wire _zz_s1_outputPayload_selValid_3;
+ wire _zz_s1_outputPayload_selValid_4;
+ wire _zz_s1_outputPayload_selValid_5;
+ wire _zz_s1_outputPayload_selValid_6;
+ wire _zz_s1_outputPayload_selValid_7;
+ wire _zz_s1_outputPayload_selValid_8;
+ wire _zz_s1_outputPayload_selValid_9;
+ wire _zz_s1_outputPayload_selValid_10;
+ wire _zz_s1_outputPayload_selValid_11;
+ wire _zz_s1_outputPayload_selValid_12;
+ wire _zz_s1_outputPayload_selValid_13;
+ wire _zz_s1_outputPayload_selValid_14;
+ wire _zz_s1_outputPayload_sel_0;
+ wire _zz_s1_outputPayload_sel_0_1;
+ wire _zz_s1_outputPayload_sel_0_2;
+ wire _zz_s1_outputPayload_sel_0_3;
+ wire _zz_s1_outputPayload_selValid_15;
+ wire _zz_s1_outputPayload_selValid_16;
+ wire _zz_s1_outputPayload_selValid_17;
+ wire _zz_s1_outputPayload_selValid_18;
+ wire _zz_s1_outputPayload_selValid_19;
+ wire _zz_s1_outputPayload_selValid_20;
+ wire _zz_s1_outputPayload_selValid_21;
+ wire _zz_s1_outputPayload_selValid_22;
+ wire _zz_s1_outputPayload_selValid_23;
+ wire _zz_s1_outputPayload_selValid_24;
+ wire _zz_s1_outputPayload_selValid_25;
+ wire _zz_s1_outputPayload_selValid_26;
+ wire _zz_s1_outputPayload_selValid_27;
+ wire _zz_s1_outputPayload_selValid_28;
+ wire _zz_s1_outputPayload_selValid_29;
+ wire _zz_s1_outputPayload_sel_1;
+ wire _zz_s1_outputPayload_sel_1_1;
+ wire _zz_s1_outputPayload_sel_1_2;
+ wire _zz_s1_outputPayload_sel_1_3;
+ wire _zz_s1_outputPayload_selValid_30;
+ wire _zz_s1_outputPayload_selValid_31;
+ wire _zz_s1_outputPayload_selValid_32;
+ wire _zz_s1_outputPayload_selValid_33;
+ wire _zz_s1_outputPayload_selValid_34;
+ wire _zz_s1_outputPayload_selValid_35;
+ wire _zz_s1_outputPayload_selValid_36;
+ wire _zz_s1_outputPayload_selValid_37;
+ wire _zz_s1_outputPayload_selValid_38;
+ wire _zz_s1_outputPayload_selValid_39;
+ wire _zz_s1_outputPayload_selValid_40;
+ wire _zz_s1_outputPayload_selValid_41;
+ wire _zz_s1_outputPayload_selValid_42;
+ wire _zz_s1_outputPayload_selValid_43;
+ wire _zz_s1_outputPayload_selValid_44;
+ wire _zz_s1_outputPayload_sel_2;
+ wire _zz_s1_outputPayload_sel_2_1;
+ wire _zz_s1_outputPayload_sel_2_2;
+ wire _zz_s1_outputPayload_sel_2_3;
+ wire _zz_s1_outputPayload_selValid_45;
+ wire _zz_s1_outputPayload_selValid_46;
+ wire _zz_s1_outputPayload_selValid_47;
+ wire _zz_s1_outputPayload_selValid_48;
+ wire _zz_s1_outputPayload_selValid_49;
+ wire _zz_s1_outputPayload_selValid_50;
+ wire _zz_s1_outputPayload_selValid_51;
+ wire _zz_s1_outputPayload_selValid_52;
+ wire _zz_s1_outputPayload_selValid_53;
+ wire _zz_s1_outputPayload_selValid_54;
+ wire _zz_s1_outputPayload_selValid_55;
+ wire _zz_s1_outputPayload_selValid_56;
+ wire _zz_s1_outputPayload_selValid_57;
+ wire _zz_s1_outputPayload_selValid_58;
+ wire _zz_s1_outputPayload_selValid_59;
+ wire _zz_s1_outputPayload_sel_3;
+ wire _zz_s1_outputPayload_sel_3_1;
+ wire _zz_s1_outputPayload_sel_3_2;
+ wire _zz_s1_outputPayload_sel_3_3;
+ wire _zz_s1_outputPayload_selValid_60;
+ wire _zz_s1_outputPayload_selValid_61;
+ wire _zz_s1_outputPayload_selValid_62;
+ wire _zz_s1_outputPayload_selValid_63;
+ wire _zz_s1_outputPayload_selValid_64;
+ wire _zz_s1_outputPayload_selValid_65;
+ wire _zz_s1_outputPayload_selValid_66;
+ wire _zz_s1_outputPayload_selValid_67;
+ wire _zz_s1_outputPayload_selValid_68;
+ wire _zz_s1_outputPayload_selValid_69;
+ wire _zz_s1_outputPayload_selValid_70;
+ wire _zz_s1_outputPayload_selValid_71;
+ wire _zz_s1_outputPayload_selValid_72;
+ wire _zz_s1_outputPayload_selValid_73;
+ wire _zz_s1_outputPayload_selValid_74;
+ wire _zz_s1_outputPayload_sel_4;
+ wire _zz_s1_outputPayload_sel_4_1;
+ wire _zz_s1_outputPayload_sel_4_2;
+ wire _zz_s1_outputPayload_sel_4_3;
+ wire _zz_s1_outputPayload_selValid_75;
+ wire _zz_s1_outputPayload_selValid_76;
+ wire _zz_s1_outputPayload_selValid_77;
+ wire _zz_s1_outputPayload_selValid_78;
+ wire _zz_s1_outputPayload_selValid_79;
+ wire _zz_s1_outputPayload_selValid_80;
+ wire _zz_s1_outputPayload_selValid_81;
+ wire _zz_s1_outputPayload_selValid_82;
+ wire _zz_s1_outputPayload_selValid_83;
+ wire _zz_s1_outputPayload_selValid_84;
+ wire _zz_s1_outputPayload_selValid_85;
+ wire _zz_s1_outputPayload_selValid_86;
+ wire _zz_s1_outputPayload_selValid_87;
+ wire _zz_s1_outputPayload_selValid_88;
+ wire _zz_s1_outputPayload_selValid_89;
+ wire _zz_s1_outputPayload_sel_5;
+ wire _zz_s1_outputPayload_sel_5_1;
+ wire _zz_s1_outputPayload_sel_5_2;
+ wire _zz_s1_outputPayload_sel_5_3;
+ wire _zz_s1_outputPayload_selValid_90;
+ wire _zz_s1_outputPayload_selValid_91;
+ wire _zz_s1_outputPayload_selValid_92;
+ wire _zz_s1_outputPayload_selValid_93;
+ wire _zz_s1_outputPayload_selValid_94;
+ wire _zz_s1_outputPayload_selValid_95;
+ wire _zz_s1_outputPayload_selValid_96;
+ wire _zz_s1_outputPayload_selValid_97;
+ wire _zz_s1_outputPayload_selValid_98;
+ wire _zz_s1_outputPayload_selValid_99;
+ wire _zz_s1_outputPayload_selValid_100;
+ wire _zz_s1_outputPayload_selValid_101;
+ wire _zz_s1_outputPayload_selValid_102;
+ wire _zz_s1_outputPayload_selValid_103;
+ wire _zz_s1_outputPayload_selValid_104;
+ wire _zz_s1_outputPayload_sel_6;
+ wire _zz_s1_outputPayload_sel_6_1;
+ wire _zz_s1_outputPayload_sel_6_2;
+ wire _zz_s1_outputPayload_sel_6_3;
+ wire _zz_s1_outputPayload_selValid_105;
+ wire _zz_s1_outputPayload_selValid_106;
+ wire _zz_s1_outputPayload_selValid_107;
+ wire _zz_s1_outputPayload_selValid_108;
+ wire _zz_s1_outputPayload_selValid_109;
+ wire _zz_s1_outputPayload_selValid_110;
+ wire _zz_s1_outputPayload_selValid_111;
+ wire _zz_s1_outputPayload_selValid_112;
+ wire _zz_s1_outputPayload_selValid_113;
+ wire _zz_s1_outputPayload_selValid_114;
+ wire _zz_s1_outputPayload_selValid_115;
+ wire _zz_s1_outputPayload_selValid_116;
+ wire _zz_s1_outputPayload_selValid_117;
+ wire _zz_s1_outputPayload_selValid_118;
+ wire _zz_s1_outputPayload_selValid_119;
+ wire _zz_s1_outputPayload_sel_7;
+ wire _zz_s1_outputPayload_sel_7_1;
+ wire _zz_s1_outputPayload_sel_7_2;
+ wire _zz_s1_outputPayload_sel_7_3;
+ wire _zz_s1_outputPayload_selValid_120;
+ wire _zz_s1_outputPayload_selValid_121;
+ wire _zz_s1_outputPayload_selValid_122;
+ wire _zz_s1_outputPayload_selValid_123;
+ wire _zz_s1_outputPayload_selValid_124;
+ wire _zz_s1_outputPayload_selValid_125;
+ wire _zz_s1_outputPayload_selValid_126;
+ wire _zz_s1_outputPayload_selValid_127;
+ wire _zz_s1_outputPayload_selValid_128;
+ wire _zz_s1_outputPayload_selValid_129;
+ wire _zz_s1_outputPayload_selValid_130;
+ wire _zz_s1_outputPayload_selValid_131;
+ wire _zz_s1_outputPayload_selValid_132;
+ wire _zz_s1_outputPayload_selValid_133;
+ wire _zz_s1_outputPayload_selValid_134;
+ wire _zz_s1_outputPayload_sel_8;
+ wire _zz_s1_outputPayload_sel_8_1;
+ wire _zz_s1_outputPayload_sel_8_2;
+ wire _zz_s1_outputPayload_sel_8_3;
+ wire _zz_s1_outputPayload_selValid_135;
+ wire _zz_s1_outputPayload_selValid_136;
+ wire _zz_s1_outputPayload_selValid_137;
+ wire _zz_s1_outputPayload_selValid_138;
+ wire _zz_s1_outputPayload_selValid_139;
+ wire _zz_s1_outputPayload_selValid_140;
+ wire _zz_s1_outputPayload_selValid_141;
+ wire _zz_s1_outputPayload_selValid_142;
+ wire _zz_s1_outputPayload_selValid_143;
+ wire _zz_s1_outputPayload_selValid_144;
+ wire _zz_s1_outputPayload_selValid_145;
+ wire _zz_s1_outputPayload_selValid_146;
+ wire _zz_s1_outputPayload_selValid_147;
+ wire _zz_s1_outputPayload_selValid_148;
+ wire _zz_s1_outputPayload_selValid_149;
+ wire _zz_s1_outputPayload_sel_9;
+ wire _zz_s1_outputPayload_sel_9_1;
+ wire _zz_s1_outputPayload_sel_9_2;
+ wire _zz_s1_outputPayload_sel_9_3;
+ wire _zz_s1_outputPayload_selValid_150;
+ wire _zz_s1_outputPayload_selValid_151;
+ wire _zz_s1_outputPayload_selValid_152;
+ wire _zz_s1_outputPayload_selValid_153;
+ wire _zz_s1_outputPayload_selValid_154;
+ wire _zz_s1_outputPayload_selValid_155;
+ wire _zz_s1_outputPayload_selValid_156;
+ wire _zz_s1_outputPayload_selValid_157;
+ wire _zz_s1_outputPayload_selValid_158;
+ wire _zz_s1_outputPayload_selValid_159;
+ wire _zz_s1_outputPayload_selValid_160;
+ wire _zz_s1_outputPayload_selValid_161;
+ wire _zz_s1_outputPayload_selValid_162;
+ wire _zz_s1_outputPayload_selValid_163;
+ wire _zz_s1_outputPayload_selValid_164;
+ wire _zz_s1_outputPayload_sel_10;
+ wire _zz_s1_outputPayload_sel_10_1;
+ wire _zz_s1_outputPayload_sel_10_2;
+ wire _zz_s1_outputPayload_sel_10_3;
+ wire _zz_s1_outputPayload_selValid_165;
+ wire _zz_s1_outputPayload_selValid_166;
+ wire _zz_s1_outputPayload_selValid_167;
+ wire _zz_s1_outputPayload_selValid_168;
+ wire _zz_s1_outputPayload_selValid_169;
+ wire _zz_s1_outputPayload_selValid_170;
+ wire _zz_s1_outputPayload_selValid_171;
+ wire _zz_s1_outputPayload_selValid_172;
+ wire _zz_s1_outputPayload_selValid_173;
+ wire _zz_s1_outputPayload_selValid_174;
+ wire _zz_s1_outputPayload_selValid_175;
+ wire _zz_s1_outputPayload_selValid_176;
+ wire _zz_s1_outputPayload_selValid_177;
+ wire _zz_s1_outputPayload_selValid_178;
+ wire _zz_s1_outputPayload_selValid_179;
+ wire _zz_s1_outputPayload_sel_11;
+ wire _zz_s1_outputPayload_sel_11_1;
+ wire _zz_s1_outputPayload_sel_11_2;
+ wire _zz_s1_outputPayload_sel_11_3;
+ wire _zz_s1_outputPayload_selValid_180;
+ wire _zz_s1_outputPayload_selValid_181;
+ wire _zz_s1_outputPayload_selValid_182;
+ wire _zz_s1_outputPayload_selValid_183;
+ wire _zz_s1_outputPayload_selValid_184;
+ wire _zz_s1_outputPayload_selValid_185;
+ wire _zz_s1_outputPayload_selValid_186;
+ wire _zz_s1_outputPayload_selValid_187;
+ wire _zz_s1_outputPayload_selValid_188;
+ wire _zz_s1_outputPayload_selValid_189;
+ wire _zz_s1_outputPayload_selValid_190;
+ wire _zz_s1_outputPayload_selValid_191;
+ wire _zz_s1_outputPayload_selValid_192;
+ wire _zz_s1_outputPayload_selValid_193;
+ wire _zz_s1_outputPayload_selValid_194;
+ wire _zz_s1_outputPayload_sel_12;
+ wire _zz_s1_outputPayload_sel_12_1;
+ wire _zz_s1_outputPayload_sel_12_2;
+ wire _zz_s1_outputPayload_sel_12_3;
+ wire _zz_s1_outputPayload_selValid_195;
+ wire _zz_s1_outputPayload_selValid_196;
+ wire _zz_s1_outputPayload_selValid_197;
+ wire _zz_s1_outputPayload_selValid_198;
+ wire _zz_s1_outputPayload_selValid_199;
+ wire _zz_s1_outputPayload_selValid_200;
+ wire _zz_s1_outputPayload_selValid_201;
+ wire _zz_s1_outputPayload_selValid_202;
+ wire _zz_s1_outputPayload_selValid_203;
+ wire _zz_s1_outputPayload_selValid_204;
+ wire _zz_s1_outputPayload_selValid_205;
+ wire _zz_s1_outputPayload_selValid_206;
+ wire _zz_s1_outputPayload_selValid_207;
+ wire _zz_s1_outputPayload_selValid_208;
+ wire _zz_s1_outputPayload_selValid_209;
+ wire _zz_s1_outputPayload_sel_13;
+ wire _zz_s1_outputPayload_sel_13_1;
+ wire _zz_s1_outputPayload_sel_13_2;
+ wire _zz_s1_outputPayload_sel_13_3;
+ wire _zz_s1_outputPayload_selValid_210;
+ wire _zz_s1_outputPayload_selValid_211;
+ wire _zz_s1_outputPayload_selValid_212;
+ wire _zz_s1_outputPayload_selValid_213;
+ wire _zz_s1_outputPayload_selValid_214;
+ wire _zz_s1_outputPayload_selValid_215;
+ wire _zz_s1_outputPayload_selValid_216;
+ wire _zz_s1_outputPayload_selValid_217;
+ wire _zz_s1_outputPayload_selValid_218;
+ wire _zz_s1_outputPayload_selValid_219;
+ wire _zz_s1_outputPayload_selValid_220;
+ wire _zz_s1_outputPayload_selValid_221;
+ wire _zz_s1_outputPayload_selValid_222;
+ wire _zz_s1_outputPayload_selValid_223;
+ wire _zz_s1_outputPayload_selValid_224;
+ wire _zz_s1_outputPayload_sel_14;
+ wire _zz_s1_outputPayload_sel_14_1;
+ wire _zz_s1_outputPayload_sel_14_2;
+ wire _zz_s1_outputPayload_sel_14_3;
+ wire _zz_s1_outputPayload_selValid_225;
+ wire _zz_s1_outputPayload_selValid_226;
+ wire _zz_s1_outputPayload_selValid_227;
+ wire _zz_s1_outputPayload_selValid_228;
+ wire _zz_s1_outputPayload_selValid_229;
+ wire _zz_s1_outputPayload_selValid_230;
+ wire _zz_s1_outputPayload_selValid_231;
+ wire _zz_s1_outputPayload_selValid_232;
+ wire _zz_s1_outputPayload_selValid_233;
+ wire _zz_s1_outputPayload_selValid_234;
+ wire _zz_s1_outputPayload_selValid_235;
+ wire _zz_s1_outputPayload_selValid_236;
+ wire _zz_s1_outputPayload_selValid_237;
+ wire _zz_s1_outputPayload_selValid_238;
+ wire _zz_s1_outputPayload_selValid_239;
+ wire _zz_s1_outputPayload_sel_15;
+ wire _zz_s1_outputPayload_sel_15_1;
+ wire _zz_s1_outputPayload_sel_15_2;
+ wire _zz_s1_outputPayload_sel_15_3;
+ wire s1_output_valid;
+ reg s1_output_ready;
+ wire [127:0] s1_output_payload_cmd_data;
+ wire [15:0] s1_output_payload_cmd_mask;
+ wire [3:0] s1_output_payload_index_0;
+ wire [3:0] s1_output_payload_index_1;
+ wire [3:0] s1_output_payload_index_2;
+ wire [3:0] s1_output_payload_index_3;
+ wire [3:0] s1_output_payload_index_4;
+ wire [3:0] s1_output_payload_index_5;
+ wire [3:0] s1_output_payload_index_6;
+ wire [3:0] s1_output_payload_index_7;
+ wire [3:0] s1_output_payload_index_8;
+ wire [3:0] s1_output_payload_index_9;
+ wire [3:0] s1_output_payload_index_10;
+ wire [3:0] s1_output_payload_index_11;
+ wire [3:0] s1_output_payload_index_12;
+ wire [3:0] s1_output_payload_index_13;
+ wire [3:0] s1_output_payload_index_14;
+ wire [3:0] s1_output_payload_index_15;
+ wire s1_output_payload_last;
+ wire [3:0] s1_output_payload_sel_0;
+ wire [3:0] s1_output_payload_sel_1;
+ wire [3:0] s1_output_payload_sel_2;
+ wire [3:0] s1_output_payload_sel_3;
+ wire [3:0] s1_output_payload_sel_4;
+ wire [3:0] s1_output_payload_sel_5;
+ wire [3:0] s1_output_payload_sel_6;
+ wire [3:0] s1_output_payload_sel_7;
+ wire [3:0] s1_output_payload_sel_8;
+ wire [3:0] s1_output_payload_sel_9;
+ wire [3:0] s1_output_payload_sel_10;
+ wire [3:0] s1_output_payload_sel_11;
+ wire [3:0] s1_output_payload_sel_12;
+ wire [3:0] s1_output_payload_sel_13;
+ wire [3:0] s1_output_payload_sel_14;
+ wire [3:0] s1_output_payload_sel_15;
+ wire [15:0] s1_output_payload_selValid;
+ wire s2_input_valid;
+ reg s2_input_ready;
+ wire [127:0] s2_input_payload_cmd_data;
+ wire [15:0] s2_input_payload_cmd_mask;
+ wire [3:0] s2_input_payload_index_0;
+ wire [3:0] s2_input_payload_index_1;
+ wire [3:0] s2_input_payload_index_2;
+ wire [3:0] s2_input_payload_index_3;
+ wire [3:0] s2_input_payload_index_4;
+ wire [3:0] s2_input_payload_index_5;
+ wire [3:0] s2_input_payload_index_6;
+ wire [3:0] s2_input_payload_index_7;
+ wire [3:0] s2_input_payload_index_8;
+ wire [3:0] s2_input_payload_index_9;
+ wire [3:0] s2_input_payload_index_10;
+ wire [3:0] s2_input_payload_index_11;
+ wire [3:0] s2_input_payload_index_12;
+ wire [3:0] s2_input_payload_index_13;
+ wire [3:0] s2_input_payload_index_14;
+ wire [3:0] s2_input_payload_index_15;
+ wire s2_input_payload_last;
+ wire [3:0] s2_input_payload_sel_0;
+ wire [3:0] s2_input_payload_sel_1;
+ wire [3:0] s2_input_payload_sel_2;
+ wire [3:0] s2_input_payload_sel_3;
+ wire [3:0] s2_input_payload_sel_4;
+ wire [3:0] s2_input_payload_sel_5;
+ wire [3:0] s2_input_payload_sel_6;
+ wire [3:0] s2_input_payload_sel_7;
+ wire [3:0] s2_input_payload_sel_8;
+ wire [3:0] s2_input_payload_sel_9;
+ wire [3:0] s2_input_payload_sel_10;
+ wire [3:0] s2_input_payload_sel_11;
+ wire [3:0] s2_input_payload_sel_12;
+ wire [3:0] s2_input_payload_sel_13;
+ wire [3:0] s2_input_payload_sel_14;
+ wire [3:0] s2_input_payload_sel_15;
+ wire [15:0] s2_input_payload_selValid;
+ reg s1_output_rValid;
+ reg [127:0] s1_output_rData_cmd_data;
+ reg [15:0] s1_output_rData_cmd_mask;
+ reg [3:0] s1_output_rData_index_0;
+ reg [3:0] s1_output_rData_index_1;
+ reg [3:0] s1_output_rData_index_2;
+ reg [3:0] s1_output_rData_index_3;
+ reg [3:0] s1_output_rData_index_4;
+ reg [3:0] s1_output_rData_index_5;
+ reg [3:0] s1_output_rData_index_6;
+ reg [3:0] s1_output_rData_index_7;
+ reg [3:0] s1_output_rData_index_8;
+ reg [3:0] s1_output_rData_index_9;
+ reg [3:0] s1_output_rData_index_10;
+ reg [3:0] s1_output_rData_index_11;
+ reg [3:0] s1_output_rData_index_12;
+ reg [3:0] s1_output_rData_index_13;
+ reg [3:0] s1_output_rData_index_14;
+ reg [3:0] s1_output_rData_index_15;
+ reg s1_output_rData_last;
+ reg [3:0] s1_output_rData_sel_0;
+ reg [3:0] s1_output_rData_sel_1;
+ reg [3:0] s1_output_rData_sel_2;
+ reg [3:0] s1_output_rData_sel_3;
+ reg [3:0] s1_output_rData_sel_4;
+ reg [3:0] s1_output_rData_sel_5;
+ reg [3:0] s1_output_rData_sel_6;
+ reg [3:0] s1_output_rData_sel_7;
+ reg [3:0] s1_output_rData_sel_8;
+ reg [3:0] s1_output_rData_sel_9;
+ reg [3:0] s1_output_rData_sel_10;
+ reg [3:0] s1_output_rData_sel_11;
+ reg [3:0] s1_output_rData_sel_12;
+ reg [3:0] s1_output_rData_sel_13;
+ reg [3:0] s1_output_rData_sel_14;
+ reg [3:0] s1_output_rData_sel_15;
+ reg [15:0] s1_output_rData_selValid;
+ wire when_Stream_l375_2;
+ wire when_DmaSg_l1464;
+ wire s2_input_fire;
+ wire [7:0] s2_inputDataBytes_0;
+ wire [7:0] s2_inputDataBytes_1;
+ wire [7:0] s2_inputDataBytes_2;
+ wire [7:0] s2_inputDataBytes_3;
+ wire [7:0] s2_inputDataBytes_4;
+ wire [7:0] s2_inputDataBytes_5;
+ wire [7:0] s2_inputDataBytes_6;
+ wire [7:0] s2_inputDataBytes_7;
+ wire [7:0] s2_inputDataBytes_8;
+ wire [7:0] s2_inputDataBytes_9;
+ wire [7:0] s2_inputDataBytes_10;
+ wire [7:0] s2_inputDataBytes_11;
+ wire [7:0] s2_inputDataBytes_12;
+ wire [7:0] s2_inputDataBytes_13;
+ wire [7:0] s2_inputDataBytes_14;
+ wire [7:0] s2_inputDataBytes_15;
+ reg s2_byteLogic_0_buffer_valid;
+ reg [7:0] s2_byteLogic_0_buffer_data;
+ wire s2_byteLogic_0_lastUsed;
+ wire s2_byteLogic_0_inputMask;
+ wire [7:0] s2_byteLogic_0_inputData;
+ wire s2_byteLogic_0_outputMask;
+ wire [7:0] s2_byteLogic_0_outputData;
+ wire when_DmaSg_l1493;
+ reg s2_byteLogic_1_buffer_valid;
+ reg [7:0] s2_byteLogic_1_buffer_data;
+ wire s2_byteLogic_1_lastUsed;
+ wire s2_byteLogic_1_inputMask;
+ wire [7:0] s2_byteLogic_1_inputData;
+ wire s2_byteLogic_1_outputMask;
+ wire [7:0] s2_byteLogic_1_outputData;
+ wire when_DmaSg_l1493_1;
+ reg s2_byteLogic_2_buffer_valid;
+ reg [7:0] s2_byteLogic_2_buffer_data;
+ wire s2_byteLogic_2_lastUsed;
+ wire s2_byteLogic_2_inputMask;
+ wire [7:0] s2_byteLogic_2_inputData;
+ wire s2_byteLogic_2_outputMask;
+ wire [7:0] s2_byteLogic_2_outputData;
+ wire when_DmaSg_l1493_2;
+ reg s2_byteLogic_3_buffer_valid;
+ reg [7:0] s2_byteLogic_3_buffer_data;
+ wire s2_byteLogic_3_lastUsed;
+ wire s2_byteLogic_3_inputMask;
+ wire [7:0] s2_byteLogic_3_inputData;
+ wire s2_byteLogic_3_outputMask;
+ wire [7:0] s2_byteLogic_3_outputData;
+ wire when_DmaSg_l1493_3;
+ reg s2_byteLogic_4_buffer_valid;
+ reg [7:0] s2_byteLogic_4_buffer_data;
+ wire s2_byteLogic_4_lastUsed;
+ wire s2_byteLogic_4_inputMask;
+ wire [7:0] s2_byteLogic_4_inputData;
+ wire s2_byteLogic_4_outputMask;
+ wire [7:0] s2_byteLogic_4_outputData;
+ wire when_DmaSg_l1493_4;
+ reg s2_byteLogic_5_buffer_valid;
+ reg [7:0] s2_byteLogic_5_buffer_data;
+ wire s2_byteLogic_5_lastUsed;
+ wire s2_byteLogic_5_inputMask;
+ wire [7:0] s2_byteLogic_5_inputData;
+ wire s2_byteLogic_5_outputMask;
+ wire [7:0] s2_byteLogic_5_outputData;
+ wire when_DmaSg_l1493_5;
+ reg s2_byteLogic_6_buffer_valid;
+ reg [7:0] s2_byteLogic_6_buffer_data;
+ wire s2_byteLogic_6_lastUsed;
+ wire s2_byteLogic_6_inputMask;
+ wire [7:0] s2_byteLogic_6_inputData;
+ wire s2_byteLogic_6_outputMask;
+ wire [7:0] s2_byteLogic_6_outputData;
+ wire when_DmaSg_l1493_6;
+ reg s2_byteLogic_7_buffer_valid;
+ reg [7:0] s2_byteLogic_7_buffer_data;
+ wire s2_byteLogic_7_lastUsed;
+ wire s2_byteLogic_7_inputMask;
+ wire [7:0] s2_byteLogic_7_inputData;
+ wire s2_byteLogic_7_outputMask;
+ wire [7:0] s2_byteLogic_7_outputData;
+ wire when_DmaSg_l1493_7;
+ reg s2_byteLogic_8_buffer_valid;
+ reg [7:0] s2_byteLogic_8_buffer_data;
+ wire s2_byteLogic_8_lastUsed;
+ wire s2_byteLogic_8_inputMask;
+ wire [7:0] s2_byteLogic_8_inputData;
+ wire s2_byteLogic_8_outputMask;
+ wire [7:0] s2_byteLogic_8_outputData;
+ wire when_DmaSg_l1493_8;
+ reg s2_byteLogic_9_buffer_valid;
+ reg [7:0] s2_byteLogic_9_buffer_data;
+ wire s2_byteLogic_9_lastUsed;
+ wire s2_byteLogic_9_inputMask;
+ wire [7:0] s2_byteLogic_9_inputData;
+ wire s2_byteLogic_9_outputMask;
+ wire [7:0] s2_byteLogic_9_outputData;
+ wire when_DmaSg_l1493_9;
+ reg s2_byteLogic_10_buffer_valid;
+ reg [7:0] s2_byteLogic_10_buffer_data;
+ wire s2_byteLogic_10_lastUsed;
+ wire s2_byteLogic_10_inputMask;
+ wire [7:0] s2_byteLogic_10_inputData;
+ wire s2_byteLogic_10_outputMask;
+ wire [7:0] s2_byteLogic_10_outputData;
+ wire when_DmaSg_l1493_10;
+ reg s2_byteLogic_11_buffer_valid;
+ reg [7:0] s2_byteLogic_11_buffer_data;
+ wire s2_byteLogic_11_lastUsed;
+ wire s2_byteLogic_11_inputMask;
+ wire [7:0] s2_byteLogic_11_inputData;
+ wire s2_byteLogic_11_outputMask;
+ wire [7:0] s2_byteLogic_11_outputData;
+ wire when_DmaSg_l1493_11;
+ reg s2_byteLogic_12_buffer_valid;
+ reg [7:0] s2_byteLogic_12_buffer_data;
+ wire s2_byteLogic_12_lastUsed;
+ wire s2_byteLogic_12_inputMask;
+ wire [7:0] s2_byteLogic_12_inputData;
+ wire s2_byteLogic_12_outputMask;
+ wire [7:0] s2_byteLogic_12_outputData;
+ wire when_DmaSg_l1493_12;
+ reg s2_byteLogic_13_buffer_valid;
+ reg [7:0] s2_byteLogic_13_buffer_data;
+ wire s2_byteLogic_13_lastUsed;
+ wire s2_byteLogic_13_inputMask;
+ wire [7:0] s2_byteLogic_13_inputData;
+ wire s2_byteLogic_13_outputMask;
+ wire [7:0] s2_byteLogic_13_outputData;
+ wire when_DmaSg_l1493_13;
+ reg s2_byteLogic_14_buffer_valid;
+ reg [7:0] s2_byteLogic_14_buffer_data;
+ wire s2_byteLogic_14_lastUsed;
+ wire s2_byteLogic_14_inputMask;
+ wire [7:0] s2_byteLogic_14_inputData;
+ wire s2_byteLogic_14_outputMask;
+ wire [7:0] s2_byteLogic_14_outputData;
+ wire when_DmaSg_l1493_14;
+ reg s2_byteLogic_15_buffer_valid;
+ reg [7:0] s2_byteLogic_15_buffer_data;
+ wire s2_byteLogic_15_lastUsed;
+ wire s2_byteLogic_15_inputMask;
+ wire [7:0] s2_byteLogic_15_inputData;
+ wire s2_byteLogic_15_outputMask;
+ wire [7:0] s2_byteLogic_15_outputData;
+ wire when_DmaSg_l1493_15;
+ wire _zz_io_output_usedUntil;
+ wire _zz_io_output_usedUntil_1;
+ wire _zz_io_output_usedUntil_2;
+ wire _zz_io_output_usedUntil_3;
+
+ assign _zz_s0_countOnesLogic_3_13 = _zz_s0_countOnesLogic_3;
+ assign _zz_s0_countOnesLogic_3_12 = {2'd0, _zz_s0_countOnesLogic_3_13};
+ assign _zz_s0_countOnesLogic_4_13 = {_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3};
+ assign _zz_s0_countOnesLogic_4_12 = {1'd0, _zz_s0_countOnesLogic_4_13};
+ assign _zz_s0_countOnesLogic_6_9 = (_zz_s0_countOnesLogic_6_10 + _zz_s0_countOnesLogic_6_12);
+ assign _zz_s0_countOnesLogic_6_16 = _zz_s0_countOnesLogic_6;
+ assign _zz_s0_countOnesLogic_6_15 = {2'd0, _zz_s0_countOnesLogic_6_16};
+ assign _zz_s0_countOnesLogic_7_9 = (_zz_s0_countOnesLogic_7_10 + _zz_s0_countOnesLogic_7_12);
+ assign _zz_s0_countOnesLogic_7_16 = {_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6};
+ assign _zz_s0_countOnesLogic_7_15 = {1'd0, _zz_s0_countOnesLogic_7_16};
+ assign _zz_s0_countOnesLogic_8_9 = (_zz_s0_countOnesLogic_8_10 + _zz_s0_countOnesLogic_8_12);
+ assign _zz_s0_countOnesLogic_9_9 = (_zz_s0_countOnesLogic_9_10 + _zz_s0_countOnesLogic_9_12);
+ assign _zz_s0_countOnesLogic_9_14 = (_zz_s0_countOnesLogic_9_15 + _zz_s0_countOnesLogic_9_17);
+ assign _zz_s0_countOnesLogic_9_19 = _zz_s0_countOnesLogic_9;
+ assign _zz_s0_countOnesLogic_9_18 = {2'd0, _zz_s0_countOnesLogic_9_19};
+ assign _zz_s0_countOnesLogic_10_9 = (_zz_s0_countOnesLogic_10_10 + _zz_s0_countOnesLogic_10_12);
+ assign _zz_s0_countOnesLogic_10_14 = (_zz_s0_countOnesLogic_10_15 + _zz_s0_countOnesLogic_10_17);
+ assign _zz_s0_countOnesLogic_10_19 = {_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9};
+ assign _zz_s0_countOnesLogic_10_18 = {1'd0, _zz_s0_countOnesLogic_10_19};
+ assign _zz_s0_countOnesLogic_11_9 = (_zz_s0_countOnesLogic_11_10 + _zz_s0_countOnesLogic_11_12);
+ assign _zz_s0_countOnesLogic_11_14 = (_zz_s0_countOnesLogic_11_15 + _zz_s0_countOnesLogic_11_17);
+ assign _zz_s0_countOnesLogic_12_9 = (_zz_s0_countOnesLogic_12_10 + _zz_s0_countOnesLogic_12_15);
+ assign _zz_s0_countOnesLogic_12_10 = (_zz_s0_countOnesLogic_12_11 + _zz_s0_countOnesLogic_12_13);
+ assign _zz_s0_countOnesLogic_12_15 = (_zz_s0_countOnesLogic_12_16 + _zz_s0_countOnesLogic_12_18);
+ assign _zz_s0_countOnesLogic_12_22 = _zz_s0_countOnesLogic_12;
+ assign _zz_s0_countOnesLogic_12_21 = {2'd0, _zz_s0_countOnesLogic_12_22};
+ assign _zz_s0_countOnesLogic_13_9 = (_zz_s0_countOnesLogic_13_10 + _zz_s0_countOnesLogic_13_15);
+ assign _zz_s0_countOnesLogic_13_10 = (_zz_s0_countOnesLogic_13_11 + _zz_s0_countOnesLogic_13_13);
+ assign _zz_s0_countOnesLogic_13_15 = (_zz_s0_countOnesLogic_13_16 + _zz_s0_countOnesLogic_13_18);
+ assign _zz_s0_countOnesLogic_13_22 = {_zz_s0_countOnesLogic_13,_zz_s0_countOnesLogic_12};
+ assign _zz_s0_countOnesLogic_13_21 = {1'd0, _zz_s0_countOnesLogic_13_22};
+ assign _zz_s0_countOnesLogic_14_9 = (_zz_s0_countOnesLogic_14_10 + _zz_s0_countOnesLogic_14_15);
+ assign _zz_s0_countOnesLogic_14_10 = (_zz_s0_countOnesLogic_14_11 + _zz_s0_countOnesLogic_14_13);
+ assign _zz_s0_countOnesLogic_14_15 = (_zz_s0_countOnesLogic_14_16 + _zz_s0_countOnesLogic_14_18);
+ assign _zz_s0_countOnesLogic_15_8 = (_zz_s0_countOnesLogic_15_9 + _zz_s0_countOnesLogic_15_14);
+ assign _zz_s0_countOnesLogic_15_9 = (_zz_s0_countOnesLogic_15_10 + _zz_s0_countOnesLogic_15_12);
+ assign _zz_s0_countOnesLogic_15_14 = (_zz_s0_countOnesLogic_15_15 + _zz_s0_countOnesLogic_15_17);
+ assign _zz_s0_countOnesLogic_15_19 = (_zz_s0_countOnesLogic_15_20 + _zz_s0_countOnesLogic_15_22);
+ assign _zz_s0_countOnesLogic_15_24 = s0_input_payload_mask[15];
+ assign _zz_s0_countOnesLogic_15_23 = {2'd0, _zz_s0_countOnesLogic_15_24};
+ assign _zz_s1_offsetNext = {1'd0, s1_offset};
+ assign _zz_s1_byteCounter = {8'd0, s1_input_payload_countOnes_15};
+ assign _zz_s1_inputIndexes_1 = {3'd0, s1_input_payload_countOnes_0};
+ assign _zz_s1_inputIndexes_2 = {2'd0, s1_input_payload_countOnes_1};
+ assign _zz_s1_inputIndexes_3 = {2'd0, s1_input_payload_countOnes_2};
+ assign _zz_s1_inputIndexes_4 = {1'd0, s1_input_payload_countOnes_3};
+ assign _zz_s1_inputIndexes_5 = {1'd0, s1_input_payload_countOnes_4};
+ assign _zz_s1_inputIndexes_6 = {1'd0, s1_input_payload_countOnes_5};
+ assign _zz_s1_inputIndexes_7 = {1'd0, s1_input_payload_countOnes_6};
+ assign _zz_when_DmaSg_l1464 = {1'd0, io_burstLength};
+ assign _zz_s0_countOnesLogic_0_2 = _zz_s0_countOnesLogic_0;
+ assign _zz_s0_countOnesLogic_1_2 = {_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0};
+ assign _zz_s0_countOnesLogic_2_2 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_3_10 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_4_10 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_5_10 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_5_12 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_6_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_6_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_7_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_7_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_8_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_8_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_8_15 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_9_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_9_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_9_16 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_10_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_10_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_10_16 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_11_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_11_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_11_16 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_11_18 = {_zz_s0_countOnesLogic_11,{_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9}};
+ assign _zz_s0_countOnesLogic_12_12 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_12_14 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_12_17 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_12_19 = {_zz_s0_countOnesLogic_11,{_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9}};
+ assign _zz_s0_countOnesLogic_13_12 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_13_14 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_13_17 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_13_19 = {_zz_s0_countOnesLogic_11,{_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9}};
+ assign _zz_s0_countOnesLogic_14_12 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_14_14 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_14_17 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_14_19 = {_zz_s0_countOnesLogic_11,{_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9}};
+ assign _zz_s0_countOnesLogic_14_21 = {_zz_s0_countOnesLogic_14,{_zz_s0_countOnesLogic_13,_zz_s0_countOnesLogic_12}};
+ assign _zz_s0_countOnesLogic_15_11 = {_zz_s0_countOnesLogic_2,{_zz_s0_countOnesLogic_1,_zz_s0_countOnesLogic_0}};
+ assign _zz_s0_countOnesLogic_15_13 = {_zz_s0_countOnesLogic_5,{_zz_s0_countOnesLogic_4,_zz_s0_countOnesLogic_3}};
+ assign _zz_s0_countOnesLogic_15_16 = {_zz_s0_countOnesLogic_8,{_zz_s0_countOnesLogic_7,_zz_s0_countOnesLogic_6}};
+ assign _zz_s0_countOnesLogic_15_18 = {_zz_s0_countOnesLogic_11,{_zz_s0_countOnesLogic_10,_zz_s0_countOnesLogic_9}};
+ assign _zz_s0_countOnesLogic_15_21 = {_zz_s0_countOnesLogic_14,{_zz_s0_countOnesLogic_13,_zz_s0_countOnesLogic_12}};
+ assign _zz_io_output_usedUntil_5 = {_zz_io_output_usedUntil_3,{_zz_io_output_usedUntil_2,{_zz_io_output_usedUntil_1,_zz_io_output_usedUntil}}};
+ assign _zz_s1_outputPayload_selValid_240 = _zz_s1_outputPayload_selValid_6;
+ assign _zz_s1_outputPayload_selValid_241 = {_zz_s1_outputPayload_selValid_5,{_zz_s1_outputPayload_selValid_4,{_zz_s1_outputPayload_selValid_3,{_zz_s1_outputPayload_selValid_2,{_zz_s1_outputPayload_selValid_1,{_zz_s1_outputPayload_selValid,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0000))}}}}}};
+ assign _zz_s1_outputPayload_selValid_242 = _zz_s1_outputPayload_selValid_21;
+ assign _zz_s1_outputPayload_selValid_243 = {_zz_s1_outputPayload_selValid_20,{_zz_s1_outputPayload_selValid_19,{_zz_s1_outputPayload_selValid_18,{_zz_s1_outputPayload_selValid_17,{_zz_s1_outputPayload_selValid_16,{_zz_s1_outputPayload_selValid_15,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0001))}}}}}};
+ assign _zz_s1_outputPayload_selValid_244 = _zz_s1_outputPayload_selValid_36;
+ assign _zz_s1_outputPayload_selValid_245 = {_zz_s1_outputPayload_selValid_35,{_zz_s1_outputPayload_selValid_34,{_zz_s1_outputPayload_selValid_33,{_zz_s1_outputPayload_selValid_32,{_zz_s1_outputPayload_selValid_31,{_zz_s1_outputPayload_selValid_30,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0010))}}}}}};
+ assign _zz_s1_outputPayload_selValid_246 = _zz_s1_outputPayload_selValid_51;
+ assign _zz_s1_outputPayload_selValid_247 = {_zz_s1_outputPayload_selValid_50,{_zz_s1_outputPayload_selValid_49,{_zz_s1_outputPayload_selValid_48,{_zz_s1_outputPayload_selValid_47,{_zz_s1_outputPayload_selValid_46,{_zz_s1_outputPayload_selValid_45,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0011))}}}}}};
+ assign _zz_s1_outputPayload_selValid_248 = _zz_s1_outputPayload_selValid_66;
+ assign _zz_s1_outputPayload_selValid_249 = {_zz_s1_outputPayload_selValid_65,{_zz_s1_outputPayload_selValid_64,{_zz_s1_outputPayload_selValid_63,{_zz_s1_outputPayload_selValid_62,{_zz_s1_outputPayload_selValid_61,{_zz_s1_outputPayload_selValid_60,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0100))}}}}}};
+ assign _zz_s1_outputPayload_selValid_250 = _zz_s1_outputPayload_selValid_81;
+ assign _zz_s1_outputPayload_selValid_251 = {_zz_s1_outputPayload_selValid_80,{_zz_s1_outputPayload_selValid_79,{_zz_s1_outputPayload_selValid_78,{_zz_s1_outputPayload_selValid_77,{_zz_s1_outputPayload_selValid_76,{_zz_s1_outputPayload_selValid_75,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0101))}}}}}};
+ assign _zz_s1_outputPayload_selValid_252 = _zz_s1_outputPayload_selValid_96;
+ assign _zz_s1_outputPayload_selValid_253 = {_zz_s1_outputPayload_selValid_95,{_zz_s1_outputPayload_selValid_94,{_zz_s1_outputPayload_selValid_93,{_zz_s1_outputPayload_selValid_92,{_zz_s1_outputPayload_selValid_91,{_zz_s1_outputPayload_selValid_90,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0110))}}}}}};
+ assign _zz_s1_outputPayload_selValid_254 = _zz_s1_outputPayload_selValid_111;
+ assign _zz_s1_outputPayload_selValid_255 = {_zz_s1_outputPayload_selValid_110,{_zz_s1_outputPayload_selValid_109,{_zz_s1_outputPayload_selValid_108,{_zz_s1_outputPayload_selValid_107,{_zz_s1_outputPayload_selValid_106,{_zz_s1_outputPayload_selValid_105,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b0111))}}}}}};
+ assign _zz_s1_outputPayload_selValid_256 = _zz_s1_outputPayload_selValid_126;
+ assign _zz_s1_outputPayload_selValid_257 = {_zz_s1_outputPayload_selValid_125,{_zz_s1_outputPayload_selValid_124,{_zz_s1_outputPayload_selValid_123,{_zz_s1_outputPayload_selValid_122,{_zz_s1_outputPayload_selValid_121,{_zz_s1_outputPayload_selValid_120,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1000))}}}}}};
+ assign _zz_s1_outputPayload_selValid_258 = _zz_s1_outputPayload_selValid_141;
+ assign _zz_s1_outputPayload_selValid_259 = {_zz_s1_outputPayload_selValid_140,{_zz_s1_outputPayload_selValid_139,{_zz_s1_outputPayload_selValid_138,{_zz_s1_outputPayload_selValid_137,{_zz_s1_outputPayload_selValid_136,{_zz_s1_outputPayload_selValid_135,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1001))}}}}}};
+ assign _zz_s1_outputPayload_selValid_260 = _zz_s1_outputPayload_selValid_156;
+ assign _zz_s1_outputPayload_selValid_261 = {_zz_s1_outputPayload_selValid_155,{_zz_s1_outputPayload_selValid_154,{_zz_s1_outputPayload_selValid_153,{_zz_s1_outputPayload_selValid_152,{_zz_s1_outputPayload_selValid_151,{_zz_s1_outputPayload_selValid_150,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1010))}}}}}};
+ assign _zz_s1_outputPayload_selValid_262 = _zz_s1_outputPayload_selValid_171;
+ assign _zz_s1_outputPayload_selValid_263 = {_zz_s1_outputPayload_selValid_170,{_zz_s1_outputPayload_selValid_169,{_zz_s1_outputPayload_selValid_168,{_zz_s1_outputPayload_selValid_167,{_zz_s1_outputPayload_selValid_166,{_zz_s1_outputPayload_selValid_165,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1011))}}}}}};
+ assign _zz_s1_outputPayload_selValid_264 = _zz_s1_outputPayload_selValid_186;
+ assign _zz_s1_outputPayload_selValid_265 = {_zz_s1_outputPayload_selValid_185,{_zz_s1_outputPayload_selValid_184,{_zz_s1_outputPayload_selValid_183,{_zz_s1_outputPayload_selValid_182,{_zz_s1_outputPayload_selValid_181,{_zz_s1_outputPayload_selValid_180,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1100))}}}}}};
+ assign _zz_s1_outputPayload_selValid_266 = _zz_s1_outputPayload_selValid_201;
+ assign _zz_s1_outputPayload_selValid_267 = {_zz_s1_outputPayload_selValid_200,{_zz_s1_outputPayload_selValid_199,{_zz_s1_outputPayload_selValid_198,{_zz_s1_outputPayload_selValid_197,{_zz_s1_outputPayload_selValid_196,{_zz_s1_outputPayload_selValid_195,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1101))}}}}}};
+ assign _zz_s1_outputPayload_selValid_268 = _zz_s1_outputPayload_selValid_216;
+ assign _zz_s1_outputPayload_selValid_269 = {_zz_s1_outputPayload_selValid_215,{_zz_s1_outputPayload_selValid_214,{_zz_s1_outputPayload_selValid_213,{_zz_s1_outputPayload_selValid_212,{_zz_s1_outputPayload_selValid_211,{_zz_s1_outputPayload_selValid_210,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1110))}}}}}};
+ assign _zz_s1_outputPayload_selValid_270 = _zz_s1_outputPayload_selValid_231;
+ assign _zz_s1_outputPayload_selValid_271 = {_zz_s1_outputPayload_selValid_230,{_zz_s1_outputPayload_selValid_229,{_zz_s1_outputPayload_selValid_228,{_zz_s1_outputPayload_selValid_227,{_zz_s1_outputPayload_selValid_226,{_zz_s1_outputPayload_selValid_225,(s1_input_payload_cmd_mask[0] && (s1_inputIndexes_0 == 4'b1111))}}}}}};
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_0_2)
+ 1'b0 : _zz_s0_countOnesLogic_0_1 = 1'b0;
+ default : _zz_s0_countOnesLogic_0_1 = 1'b1;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_1_2)
+ 2'b00 : _zz_s0_countOnesLogic_1_1 = 2'b00;
+ 2'b01 : _zz_s0_countOnesLogic_1_1 = 2'b01;
+ 2'b10 : _zz_s0_countOnesLogic_1_1 = 2'b01;
+ default : _zz_s0_countOnesLogic_1_1 = 2'b10;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_2_2)
+ 3'b000 : _zz_s0_countOnesLogic_2_1 = 2'b00;
+ 3'b001 : _zz_s0_countOnesLogic_2_1 = 2'b01;
+ 3'b010 : _zz_s0_countOnesLogic_2_1 = 2'b01;
+ 3'b011 : _zz_s0_countOnesLogic_2_1 = 2'b10;
+ 3'b100 : _zz_s0_countOnesLogic_2_1 = 2'b01;
+ 3'b101 : _zz_s0_countOnesLogic_2_1 = 2'b10;
+ 3'b110 : _zz_s0_countOnesLogic_2_1 = 2'b10;
+ default : _zz_s0_countOnesLogic_2_1 = 2'b11;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_3_10)
+ 3'b000 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_1;
+ 3'b001 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_2;
+ 3'b010 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_3;
+ 3'b011 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_4;
+ 3'b100 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_5;
+ 3'b101 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_6;
+ 3'b110 : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_7;
+ default : _zz_s0_countOnesLogic_3_9 = _zz_s0_countOnesLogic_3_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_3_12)
+ 3'b000 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_1;
+ 3'b001 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_2;
+ 3'b010 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_3;
+ 3'b011 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_4;
+ 3'b100 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_5;
+ 3'b101 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_6;
+ 3'b110 : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_7;
+ default : _zz_s0_countOnesLogic_3_11 = _zz_s0_countOnesLogic_3_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_4_10)
+ 3'b000 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_1;
+ 3'b001 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_2;
+ 3'b010 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_3;
+ 3'b011 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_4;
+ 3'b100 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_5;
+ 3'b101 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_6;
+ 3'b110 : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_7;
+ default : _zz_s0_countOnesLogic_4_9 = _zz_s0_countOnesLogic_4_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_4_12)
+ 3'b000 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_1;
+ 3'b001 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_2;
+ 3'b010 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_3;
+ 3'b011 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_4;
+ 3'b100 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_5;
+ 3'b101 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_6;
+ 3'b110 : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_7;
+ default : _zz_s0_countOnesLogic_4_11 = _zz_s0_countOnesLogic_4_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_5_10)
+ 3'b000 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_1;
+ 3'b001 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_2;
+ 3'b010 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_3;
+ 3'b011 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_4;
+ 3'b100 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_5;
+ 3'b101 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_6;
+ 3'b110 : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_7;
+ default : _zz_s0_countOnesLogic_5_9 = _zz_s0_countOnesLogic_5_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_5_12)
+ 3'b000 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_1;
+ 3'b001 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_2;
+ 3'b010 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_3;
+ 3'b011 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_4;
+ 3'b100 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_5;
+ 3'b101 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_6;
+ 3'b110 : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_7;
+ default : _zz_s0_countOnesLogic_5_11 = _zz_s0_countOnesLogic_5_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_6_11)
+ 3'b000 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_1;
+ 3'b001 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_2;
+ 3'b010 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_3;
+ 3'b011 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_4;
+ 3'b100 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_5;
+ 3'b101 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_6;
+ 3'b110 : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_7;
+ default : _zz_s0_countOnesLogic_6_10 = _zz_s0_countOnesLogic_6_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_6_13)
+ 3'b000 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_1;
+ 3'b001 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_2;
+ 3'b010 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_3;
+ 3'b011 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_4;
+ 3'b100 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_5;
+ 3'b101 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_6;
+ 3'b110 : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_7;
+ default : _zz_s0_countOnesLogic_6_12 = _zz_s0_countOnesLogic_6_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_6_15)
+ 3'b000 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_1;
+ 3'b001 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_2;
+ 3'b010 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_3;
+ 3'b011 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_4;
+ 3'b100 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_5;
+ 3'b101 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_6;
+ 3'b110 : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_7;
+ default : _zz_s0_countOnesLogic_6_14 = _zz_s0_countOnesLogic_6_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_7_11)
+ 3'b000 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_1;
+ 3'b001 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_2;
+ 3'b010 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_3;
+ 3'b011 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_4;
+ 3'b100 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_5;
+ 3'b101 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_6;
+ 3'b110 : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_7;
+ default : _zz_s0_countOnesLogic_7_10 = _zz_s0_countOnesLogic_7_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_7_13)
+ 3'b000 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_1;
+ 3'b001 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_2;
+ 3'b010 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_3;
+ 3'b011 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_4;
+ 3'b100 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_5;
+ 3'b101 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_6;
+ 3'b110 : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_7;
+ default : _zz_s0_countOnesLogic_7_12 = _zz_s0_countOnesLogic_7_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_7_15)
+ 3'b000 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_1;
+ 3'b001 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_2;
+ 3'b010 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_3;
+ 3'b011 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_4;
+ 3'b100 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_5;
+ 3'b101 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_6;
+ 3'b110 : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_7;
+ default : _zz_s0_countOnesLogic_7_14 = _zz_s0_countOnesLogic_7_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_8_11)
+ 3'b000 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_1;
+ 3'b001 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_2;
+ 3'b010 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_3;
+ 3'b011 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_4;
+ 3'b100 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_5;
+ 3'b101 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_6;
+ 3'b110 : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_7;
+ default : _zz_s0_countOnesLogic_8_10 = _zz_s0_countOnesLogic_8_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_8_13)
+ 3'b000 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_1;
+ 3'b001 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_2;
+ 3'b010 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_3;
+ 3'b011 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_4;
+ 3'b100 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_5;
+ 3'b101 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_6;
+ 3'b110 : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_7;
+ default : _zz_s0_countOnesLogic_8_12 = _zz_s0_countOnesLogic_8_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_8_15)
+ 3'b000 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_1;
+ 3'b001 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_2;
+ 3'b010 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_3;
+ 3'b011 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_4;
+ 3'b100 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_5;
+ 3'b101 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_6;
+ 3'b110 : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_7;
+ default : _zz_s0_countOnesLogic_8_14 = _zz_s0_countOnesLogic_8_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_9_11)
+ 3'b000 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_1;
+ 3'b001 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_2;
+ 3'b010 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_3;
+ 3'b011 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_4;
+ 3'b100 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_5;
+ 3'b101 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_6;
+ 3'b110 : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_7;
+ default : _zz_s0_countOnesLogic_9_10 = _zz_s0_countOnesLogic_9_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_9_13)
+ 3'b000 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_1;
+ 3'b001 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_2;
+ 3'b010 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_3;
+ 3'b011 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_4;
+ 3'b100 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_5;
+ 3'b101 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_6;
+ 3'b110 : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_7;
+ default : _zz_s0_countOnesLogic_9_12 = _zz_s0_countOnesLogic_9_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_9_16)
+ 3'b000 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_1;
+ 3'b001 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_2;
+ 3'b010 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_3;
+ 3'b011 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_4;
+ 3'b100 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_5;
+ 3'b101 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_6;
+ 3'b110 : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_7;
+ default : _zz_s0_countOnesLogic_9_15 = _zz_s0_countOnesLogic_9_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_9_18)
+ 3'b000 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_1;
+ 3'b001 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_2;
+ 3'b010 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_3;
+ 3'b011 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_4;
+ 3'b100 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_5;
+ 3'b101 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_6;
+ 3'b110 : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_7;
+ default : _zz_s0_countOnesLogic_9_17 = _zz_s0_countOnesLogic_9_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_10_11)
+ 3'b000 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_1;
+ 3'b001 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_2;
+ 3'b010 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_3;
+ 3'b011 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_4;
+ 3'b100 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_5;
+ 3'b101 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_6;
+ 3'b110 : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_7;
+ default : _zz_s0_countOnesLogic_10_10 = _zz_s0_countOnesLogic_10_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_10_13)
+ 3'b000 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_1;
+ 3'b001 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_2;
+ 3'b010 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_3;
+ 3'b011 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_4;
+ 3'b100 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_5;
+ 3'b101 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_6;
+ 3'b110 : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_7;
+ default : _zz_s0_countOnesLogic_10_12 = _zz_s0_countOnesLogic_10_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_10_16)
+ 3'b000 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_1;
+ 3'b001 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_2;
+ 3'b010 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_3;
+ 3'b011 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_4;
+ 3'b100 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_5;
+ 3'b101 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_6;
+ 3'b110 : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_7;
+ default : _zz_s0_countOnesLogic_10_15 = _zz_s0_countOnesLogic_10_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_10_18)
+ 3'b000 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_1;
+ 3'b001 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_2;
+ 3'b010 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_3;
+ 3'b011 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_4;
+ 3'b100 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_5;
+ 3'b101 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_6;
+ 3'b110 : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_7;
+ default : _zz_s0_countOnesLogic_10_17 = _zz_s0_countOnesLogic_10_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_11_11)
+ 3'b000 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_1;
+ 3'b001 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_2;
+ 3'b010 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_3;
+ 3'b011 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_4;
+ 3'b100 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_5;
+ 3'b101 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_6;
+ 3'b110 : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_7;
+ default : _zz_s0_countOnesLogic_11_10 = _zz_s0_countOnesLogic_11_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_11_13)
+ 3'b000 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_1;
+ 3'b001 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_2;
+ 3'b010 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_3;
+ 3'b011 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_4;
+ 3'b100 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_5;
+ 3'b101 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_6;
+ 3'b110 : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_7;
+ default : _zz_s0_countOnesLogic_11_12 = _zz_s0_countOnesLogic_11_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_11_16)
+ 3'b000 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_1;
+ 3'b001 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_2;
+ 3'b010 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_3;
+ 3'b011 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_4;
+ 3'b100 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_5;
+ 3'b101 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_6;
+ 3'b110 : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_7;
+ default : _zz_s0_countOnesLogic_11_15 = _zz_s0_countOnesLogic_11_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_11_18)
+ 3'b000 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_1;
+ 3'b001 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_2;
+ 3'b010 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_3;
+ 3'b011 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_4;
+ 3'b100 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_5;
+ 3'b101 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_6;
+ 3'b110 : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_7;
+ default : _zz_s0_countOnesLogic_11_17 = _zz_s0_countOnesLogic_11_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_12_12)
+ 3'b000 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_1;
+ 3'b001 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_2;
+ 3'b010 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_3;
+ 3'b011 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_4;
+ 3'b100 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_5;
+ 3'b101 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_6;
+ 3'b110 : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_7;
+ default : _zz_s0_countOnesLogic_12_11 = _zz_s0_countOnesLogic_12_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_12_14)
+ 3'b000 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_1;
+ 3'b001 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_2;
+ 3'b010 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_3;
+ 3'b011 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_4;
+ 3'b100 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_5;
+ 3'b101 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_6;
+ 3'b110 : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_7;
+ default : _zz_s0_countOnesLogic_12_13 = _zz_s0_countOnesLogic_12_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_12_17)
+ 3'b000 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_1;
+ 3'b001 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_2;
+ 3'b010 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_3;
+ 3'b011 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_4;
+ 3'b100 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_5;
+ 3'b101 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_6;
+ 3'b110 : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_7;
+ default : _zz_s0_countOnesLogic_12_16 = _zz_s0_countOnesLogic_12_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_12_19)
+ 3'b000 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_1;
+ 3'b001 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_2;
+ 3'b010 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_3;
+ 3'b011 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_4;
+ 3'b100 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_5;
+ 3'b101 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_6;
+ 3'b110 : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_7;
+ default : _zz_s0_countOnesLogic_12_18 = _zz_s0_countOnesLogic_12_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_12_21)
+ 3'b000 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_1;
+ 3'b001 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_2;
+ 3'b010 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_3;
+ 3'b011 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_4;
+ 3'b100 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_5;
+ 3'b101 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_6;
+ 3'b110 : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_7;
+ default : _zz_s0_countOnesLogic_12_20 = _zz_s0_countOnesLogic_12_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_13_12)
+ 3'b000 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_1;
+ 3'b001 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_2;
+ 3'b010 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_3;
+ 3'b011 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_4;
+ 3'b100 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_5;
+ 3'b101 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_6;
+ 3'b110 : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_7;
+ default : _zz_s0_countOnesLogic_13_11 = _zz_s0_countOnesLogic_13_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_13_14)
+ 3'b000 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_1;
+ 3'b001 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_2;
+ 3'b010 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_3;
+ 3'b011 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_4;
+ 3'b100 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_5;
+ 3'b101 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_6;
+ 3'b110 : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_7;
+ default : _zz_s0_countOnesLogic_13_13 = _zz_s0_countOnesLogic_13_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_13_17)
+ 3'b000 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_1;
+ 3'b001 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_2;
+ 3'b010 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_3;
+ 3'b011 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_4;
+ 3'b100 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_5;
+ 3'b101 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_6;
+ 3'b110 : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_7;
+ default : _zz_s0_countOnesLogic_13_16 = _zz_s0_countOnesLogic_13_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_13_19)
+ 3'b000 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_1;
+ 3'b001 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_2;
+ 3'b010 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_3;
+ 3'b011 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_4;
+ 3'b100 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_5;
+ 3'b101 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_6;
+ 3'b110 : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_7;
+ default : _zz_s0_countOnesLogic_13_18 = _zz_s0_countOnesLogic_13_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_13_21)
+ 3'b000 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_1;
+ 3'b001 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_2;
+ 3'b010 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_3;
+ 3'b011 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_4;
+ 3'b100 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_5;
+ 3'b101 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_6;
+ 3'b110 : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_7;
+ default : _zz_s0_countOnesLogic_13_20 = _zz_s0_countOnesLogic_13_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_14_12)
+ 3'b000 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_1;
+ 3'b001 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_2;
+ 3'b010 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_3;
+ 3'b011 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_4;
+ 3'b100 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_5;
+ 3'b101 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_6;
+ 3'b110 : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_7;
+ default : _zz_s0_countOnesLogic_14_11 = _zz_s0_countOnesLogic_14_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_14_14)
+ 3'b000 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_1;
+ 3'b001 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_2;
+ 3'b010 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_3;
+ 3'b011 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_4;
+ 3'b100 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_5;
+ 3'b101 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_6;
+ 3'b110 : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_7;
+ default : _zz_s0_countOnesLogic_14_13 = _zz_s0_countOnesLogic_14_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_14_17)
+ 3'b000 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_1;
+ 3'b001 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_2;
+ 3'b010 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_3;
+ 3'b011 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_4;
+ 3'b100 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_5;
+ 3'b101 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_6;
+ 3'b110 : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_7;
+ default : _zz_s0_countOnesLogic_14_16 = _zz_s0_countOnesLogic_14_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_14_19)
+ 3'b000 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_1;
+ 3'b001 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_2;
+ 3'b010 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_3;
+ 3'b011 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_4;
+ 3'b100 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_5;
+ 3'b101 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_6;
+ 3'b110 : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_7;
+ default : _zz_s0_countOnesLogic_14_18 = _zz_s0_countOnesLogic_14_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_14_21)
+ 3'b000 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_1;
+ 3'b001 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_2;
+ 3'b010 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_3;
+ 3'b011 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_4;
+ 3'b100 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_5;
+ 3'b101 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_6;
+ 3'b110 : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_7;
+ default : _zz_s0_countOnesLogic_14_20 = _zz_s0_countOnesLogic_14_8;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_11)
+ 3'b000 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_10 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_13)
+ 3'b000 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_12 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_16)
+ 3'b000 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_15 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_18)
+ 3'b000 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_17 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_21)
+ 3'b000 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_20 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_s0_countOnesLogic_15_23)
+ 3'b000 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15;
+ 3'b001 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_1;
+ 3'b010 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_2;
+ 3'b011 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_3;
+ 3'b100 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_4;
+ 3'b101 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_5;
+ 3'b110 : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_6;
+ default : _zz_s0_countOnesLogic_15_22 = _zz_s0_countOnesLogic_15_7;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_0)
+ 4'b0000 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_0_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_1)
+ 4'b0000 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_1_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_2)
+ 4'b0000 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_2_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_3)
+ 4'b0000 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_3_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_4)
+ 4'b0000 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_4_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_5)
+ 4'b0000 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_5_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_6)
+ 4'b0000 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_6_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_7)
+ 4'b0000 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_7_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_8)
+ 4'b0000 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_8_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_9)
+ 4'b0000 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_9_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_10)
+ 4'b0000 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_10_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_11)
+ 4'b0000 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_11_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_12)
+ 4'b0000 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_12_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_13)
+ 4'b0000 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_13_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_14)
+ 4'b0000 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_14_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(s2_input_payload_sel_15)
+ 4'b0000 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_0;
+ 4'b0001 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_1;
+ 4'b0010 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_2;
+ 4'b0011 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_3;
+ 4'b0100 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_4;
+ 4'b0101 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_5;
+ 4'b0110 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_6;
+ 4'b0111 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_7;
+ 4'b1000 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_8;
+ 4'b1001 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_9;
+ 4'b1010 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_10;
+ 4'b1011 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_11;
+ 4'b1100 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_12;
+ 4'b1101 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_13;
+ 4'b1110 : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_14;
+ default : _zz_s2_byteLogic_15_inputData = s2_inputDataBytes_15;
+ endcase
+ end
+
+ always @(*) begin
+ case(_zz_io_output_usedUntil_5)
+ 4'b0000 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_0;
+ 4'b0001 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_1;
+ 4'b0010 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_2;
+ 4'b0011 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_3;
+ 4'b0100 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_4;
+ 4'b0101 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_5;
+ 4'b0110 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_6;
+ 4'b0111 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_7;
+ 4'b1000 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_8;
+ 4'b1001 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_9;
+ 4'b1010 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_10;
+ 4'b1011 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_11;
+ 4'b1100 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_12;
+ 4'b1101 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_13;
+ 4'b1110 : _zz_io_output_usedUntil_4 = s2_input_payload_sel_14;
+ default : _zz_io_output_usedUntil_4 = s2_input_payload_sel_15;
+ endcase
+ end
+
+ always @(*) begin
+ io_input_ready = s0_input_ready;
+ if(when_Stream_l375) begin
+ io_input_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! s0_input_valid);
+ assign s0_input_valid = io_input_rValid;
+ assign s0_input_payload_data = io_input_rData_data;
+ assign s0_input_payload_mask = io_input_rData_mask;
+ assign _zz_s0_countOnesLogic_0 = s0_input_payload_mask[0];
+ assign _zz_s0_countOnesLogic_1 = s0_input_payload_mask[1];
+ assign _zz_s0_countOnesLogic_2 = s0_input_payload_mask[2];
+ assign _zz_s0_countOnesLogic_3 = s0_input_payload_mask[3];
+ assign _zz_s0_countOnesLogic_4 = s0_input_payload_mask[4];
+ assign _zz_s0_countOnesLogic_5 = s0_input_payload_mask[5];
+ assign _zz_s0_countOnesLogic_6 = s0_input_payload_mask[6];
+ assign _zz_s0_countOnesLogic_7 = s0_input_payload_mask[7];
+ assign _zz_s0_countOnesLogic_8 = s0_input_payload_mask[8];
+ assign _zz_s0_countOnesLogic_9 = s0_input_payload_mask[9];
+ assign _zz_s0_countOnesLogic_10 = s0_input_payload_mask[10];
+ assign _zz_s0_countOnesLogic_11 = s0_input_payload_mask[11];
+ assign _zz_s0_countOnesLogic_12 = s0_input_payload_mask[12];
+ assign _zz_s0_countOnesLogic_13 = s0_input_payload_mask[13];
+ assign _zz_s0_countOnesLogic_14 = s0_input_payload_mask[14];
+ assign s0_countOnesLogic_0 = _zz_s0_countOnesLogic_0_1;
+ assign s0_countOnesLogic_1 = _zz_s0_countOnesLogic_1_1;
+ assign s0_countOnesLogic_2 = _zz_s0_countOnesLogic_2_1;
+ assign _zz_s0_countOnesLogic_3_1 = 3'b000;
+ assign _zz_s0_countOnesLogic_3_2 = 3'b001;
+ assign _zz_s0_countOnesLogic_3_3 = 3'b001;
+ assign _zz_s0_countOnesLogic_3_4 = 3'b010;
+ assign _zz_s0_countOnesLogic_3_5 = 3'b001;
+ assign _zz_s0_countOnesLogic_3_6 = 3'b010;
+ assign _zz_s0_countOnesLogic_3_7 = 3'b010;
+ assign _zz_s0_countOnesLogic_3_8 = 3'b011;
+ assign s0_countOnesLogic_3 = (_zz_s0_countOnesLogic_3_9 + _zz_s0_countOnesLogic_3_11);
+ assign _zz_s0_countOnesLogic_4_1 = 3'b000;
+ assign _zz_s0_countOnesLogic_4_2 = 3'b001;
+ assign _zz_s0_countOnesLogic_4_3 = 3'b001;
+ assign _zz_s0_countOnesLogic_4_4 = 3'b010;
+ assign _zz_s0_countOnesLogic_4_5 = 3'b001;
+ assign _zz_s0_countOnesLogic_4_6 = 3'b010;
+ assign _zz_s0_countOnesLogic_4_7 = 3'b010;
+ assign _zz_s0_countOnesLogic_4_8 = 3'b011;
+ assign s0_countOnesLogic_4 = (_zz_s0_countOnesLogic_4_9 + _zz_s0_countOnesLogic_4_11);
+ assign _zz_s0_countOnesLogic_5_1 = 3'b000;
+ assign _zz_s0_countOnesLogic_5_2 = 3'b001;
+ assign _zz_s0_countOnesLogic_5_3 = 3'b001;
+ assign _zz_s0_countOnesLogic_5_4 = 3'b010;
+ assign _zz_s0_countOnesLogic_5_5 = 3'b001;
+ assign _zz_s0_countOnesLogic_5_6 = 3'b010;
+ assign _zz_s0_countOnesLogic_5_7 = 3'b010;
+ assign _zz_s0_countOnesLogic_5_8 = 3'b011;
+ assign s0_countOnesLogic_5 = (_zz_s0_countOnesLogic_5_9 + _zz_s0_countOnesLogic_5_11);
+ assign _zz_s0_countOnesLogic_6_1 = 3'b000;
+ assign _zz_s0_countOnesLogic_6_2 = 3'b001;
+ assign _zz_s0_countOnesLogic_6_3 = 3'b001;
+ assign _zz_s0_countOnesLogic_6_4 = 3'b010;
+ assign _zz_s0_countOnesLogic_6_5 = 3'b001;
+ assign _zz_s0_countOnesLogic_6_6 = 3'b010;
+ assign _zz_s0_countOnesLogic_6_7 = 3'b010;
+ assign _zz_s0_countOnesLogic_6_8 = 3'b011;
+ assign s0_countOnesLogic_6 = (_zz_s0_countOnesLogic_6_9 + _zz_s0_countOnesLogic_6_14);
+ assign _zz_s0_countOnesLogic_7_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_7_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_7_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_7_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_7_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_7_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_7_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_7_8 = 4'b0011;
+ assign s0_countOnesLogic_7 = (_zz_s0_countOnesLogic_7_9 + _zz_s0_countOnesLogic_7_14);
+ assign _zz_s0_countOnesLogic_8_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_8_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_8_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_8_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_8_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_8_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_8_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_8_8 = 4'b0011;
+ assign s0_countOnesLogic_8 = (_zz_s0_countOnesLogic_8_9 + _zz_s0_countOnesLogic_8_14);
+ assign _zz_s0_countOnesLogic_9_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_9_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_9_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_9_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_9_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_9_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_9_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_9_8 = 4'b0011;
+ assign s0_countOnesLogic_9 = (_zz_s0_countOnesLogic_9_9 + _zz_s0_countOnesLogic_9_14);
+ assign _zz_s0_countOnesLogic_10_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_10_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_10_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_10_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_10_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_10_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_10_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_10_8 = 4'b0011;
+ assign s0_countOnesLogic_10 = (_zz_s0_countOnesLogic_10_9 + _zz_s0_countOnesLogic_10_14);
+ assign _zz_s0_countOnesLogic_11_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_11_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_11_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_11_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_11_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_11_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_11_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_11_8 = 4'b0011;
+ assign s0_countOnesLogic_11 = (_zz_s0_countOnesLogic_11_9 + _zz_s0_countOnesLogic_11_14);
+ assign _zz_s0_countOnesLogic_12_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_12_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_12_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_12_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_12_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_12_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_12_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_12_8 = 4'b0011;
+ assign s0_countOnesLogic_12 = (_zz_s0_countOnesLogic_12_9 + _zz_s0_countOnesLogic_12_20);
+ assign _zz_s0_countOnesLogic_13_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_13_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_13_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_13_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_13_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_13_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_13_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_13_8 = 4'b0011;
+ assign s0_countOnesLogic_13 = (_zz_s0_countOnesLogic_13_9 + _zz_s0_countOnesLogic_13_20);
+ assign _zz_s0_countOnesLogic_14_1 = 4'b0000;
+ assign _zz_s0_countOnesLogic_14_2 = 4'b0001;
+ assign _zz_s0_countOnesLogic_14_3 = 4'b0001;
+ assign _zz_s0_countOnesLogic_14_4 = 4'b0010;
+ assign _zz_s0_countOnesLogic_14_5 = 4'b0001;
+ assign _zz_s0_countOnesLogic_14_6 = 4'b0010;
+ assign _zz_s0_countOnesLogic_14_7 = 4'b0010;
+ assign _zz_s0_countOnesLogic_14_8 = 4'b0011;
+ assign s0_countOnesLogic_14 = (_zz_s0_countOnesLogic_14_9 + _zz_s0_countOnesLogic_14_20);
+ assign _zz_s0_countOnesLogic_15 = 5'h0;
+ assign _zz_s0_countOnesLogic_15_1 = 5'h01;
+ assign _zz_s0_countOnesLogic_15_2 = 5'h01;
+ assign _zz_s0_countOnesLogic_15_3 = 5'h02;
+ assign _zz_s0_countOnesLogic_15_4 = 5'h01;
+ assign _zz_s0_countOnesLogic_15_5 = 5'h02;
+ assign _zz_s0_countOnesLogic_15_6 = 5'h02;
+ assign _zz_s0_countOnesLogic_15_7 = 5'h03;
+ assign s0_countOnesLogic_15 = (_zz_s0_countOnesLogic_15_8 + _zz_s0_countOnesLogic_15_19);
+ assign s0_outputPayload_cmd_data = s0_input_payload_data;
+ assign s0_outputPayload_cmd_mask = s0_input_payload_mask;
+ assign s0_outputPayload_countOnes_0 = s0_countOnesLogic_0;
+ assign s0_outputPayload_countOnes_1 = s0_countOnesLogic_1;
+ assign s0_outputPayload_countOnes_2 = s0_countOnesLogic_2;
+ assign s0_outputPayload_countOnes_3 = s0_countOnesLogic_3;
+ assign s0_outputPayload_countOnes_4 = s0_countOnesLogic_4;
+ assign s0_outputPayload_countOnes_5 = s0_countOnesLogic_5;
+ assign s0_outputPayload_countOnes_6 = s0_countOnesLogic_6;
+ assign s0_outputPayload_countOnes_7 = s0_countOnesLogic_7;
+ assign s0_outputPayload_countOnes_8 = s0_countOnesLogic_8;
+ assign s0_outputPayload_countOnes_9 = s0_countOnesLogic_9;
+ assign s0_outputPayload_countOnes_10 = s0_countOnesLogic_10;
+ assign s0_outputPayload_countOnes_11 = s0_countOnesLogic_11;
+ assign s0_outputPayload_countOnes_12 = s0_countOnesLogic_12;
+ assign s0_outputPayload_countOnes_13 = s0_countOnesLogic_13;
+ assign s0_outputPayload_countOnes_14 = s0_countOnesLogic_14;
+ assign s0_outputPayload_countOnes_15 = s0_countOnesLogic_15;
+ assign s0_output_valid = s0_input_valid;
+ assign s0_input_ready = s0_output_ready;
+ assign s0_output_payload_cmd_data = s0_outputPayload_cmd_data;
+ assign s0_output_payload_cmd_mask = s0_outputPayload_cmd_mask;
+ assign s0_output_payload_countOnes_0 = s0_outputPayload_countOnes_0;
+ assign s0_output_payload_countOnes_1 = s0_outputPayload_countOnes_1;
+ assign s0_output_payload_countOnes_2 = s0_outputPayload_countOnes_2;
+ assign s0_output_payload_countOnes_3 = s0_outputPayload_countOnes_3;
+ assign s0_output_payload_countOnes_4 = s0_outputPayload_countOnes_4;
+ assign s0_output_payload_countOnes_5 = s0_outputPayload_countOnes_5;
+ assign s0_output_payload_countOnes_6 = s0_outputPayload_countOnes_6;
+ assign s0_output_payload_countOnes_7 = s0_outputPayload_countOnes_7;
+ assign s0_output_payload_countOnes_8 = s0_outputPayload_countOnes_8;
+ assign s0_output_payload_countOnes_9 = s0_outputPayload_countOnes_9;
+ assign s0_output_payload_countOnes_10 = s0_outputPayload_countOnes_10;
+ assign s0_output_payload_countOnes_11 = s0_outputPayload_countOnes_11;
+ assign s0_output_payload_countOnes_12 = s0_outputPayload_countOnes_12;
+ assign s0_output_payload_countOnes_13 = s0_outputPayload_countOnes_13;
+ assign s0_output_payload_countOnes_14 = s0_outputPayload_countOnes_14;
+ assign s0_output_payload_countOnes_15 = s0_outputPayload_countOnes_15;
+ always @(*) begin
+ s0_output_ready = s1_input_ready;
+ if(when_Stream_l375_1) begin
+ s0_output_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_1 = (! s1_input_valid);
+ assign s1_input_valid = s0_output_rValid;
+ assign s1_input_payload_cmd_data = s0_output_rData_cmd_data;
+ assign s1_input_payload_cmd_mask = s0_output_rData_cmd_mask;
+ assign s1_input_payload_countOnes_0 = s0_output_rData_countOnes_0;
+ assign s1_input_payload_countOnes_1 = s0_output_rData_countOnes_1;
+ assign s1_input_payload_countOnes_2 = s0_output_rData_countOnes_2;
+ assign s1_input_payload_countOnes_3 = s0_output_rData_countOnes_3;
+ assign s1_input_payload_countOnes_4 = s0_output_rData_countOnes_4;
+ assign s1_input_payload_countOnes_5 = s0_output_rData_countOnes_5;
+ assign s1_input_payload_countOnes_6 = s0_output_rData_countOnes_6;
+ assign s1_input_payload_countOnes_7 = s0_output_rData_countOnes_7;
+ assign s1_input_payload_countOnes_8 = s0_output_rData_countOnes_8;
+ assign s1_input_payload_countOnes_9 = s0_output_rData_countOnes_9;
+ assign s1_input_payload_countOnes_10 = s0_output_rData_countOnes_10;
+ assign s1_input_payload_countOnes_11 = s0_output_rData_countOnes_11;
+ assign s1_input_payload_countOnes_12 = s0_output_rData_countOnes_12;
+ assign s1_input_payload_countOnes_13 = s0_output_rData_countOnes_13;
+ assign s1_input_payload_countOnes_14 = s0_output_rData_countOnes_14;
+ assign s1_input_payload_countOnes_15 = s0_output_rData_countOnes_15;
+ assign s1_offsetNext = (_zz_s1_offsetNext + s1_input_payload_countOnes_15);
+ assign s1_input_fire = (s1_input_valid && s1_input_ready);
+ assign s1_inputIndexes_0 = (4'b0000 + s1_offset);
+ assign s1_inputIndexes_1 = (_zz_s1_inputIndexes_1 + s1_offset);
+ assign s1_inputIndexes_2 = (_zz_s1_inputIndexes_2 + s1_offset);
+ assign s1_inputIndexes_3 = (_zz_s1_inputIndexes_3 + s1_offset);
+ assign s1_inputIndexes_4 = (_zz_s1_inputIndexes_4 + s1_offset);
+ assign s1_inputIndexes_5 = (_zz_s1_inputIndexes_5 + s1_offset);
+ assign s1_inputIndexes_6 = (_zz_s1_inputIndexes_6 + s1_offset);
+ assign s1_inputIndexes_7 = (_zz_s1_inputIndexes_7 + s1_offset);
+ assign s1_inputIndexes_8 = (s1_input_payload_countOnes_7 + s1_offset);
+ assign s1_inputIndexes_9 = (s1_input_payload_countOnes_8 + s1_offset);
+ assign s1_inputIndexes_10 = (s1_input_payload_countOnes_9 + s1_offset);
+ assign s1_inputIndexes_11 = (s1_input_payload_countOnes_10 + s1_offset);
+ assign s1_inputIndexes_12 = (s1_input_payload_countOnes_11 + s1_offset);
+ assign s1_inputIndexes_13 = (s1_input_payload_countOnes_12 + s1_offset);
+ assign s1_inputIndexes_14 = (s1_input_payload_countOnes_13 + s1_offset);
+ assign s1_inputIndexes_15 = (s1_input_payload_countOnes_14 + s1_offset);
+ assign s1_outputPayload_cmd_data = s1_input_payload_cmd_data;
+ assign s1_outputPayload_cmd_mask = s1_input_payload_cmd_mask;
+ assign s1_outputPayload_index_0 = s1_inputIndexes_0;
+ assign s1_outputPayload_index_1 = s1_inputIndexes_1;
+ assign s1_outputPayload_index_2 = s1_inputIndexes_2;
+ assign s1_outputPayload_index_3 = s1_inputIndexes_3;
+ assign s1_outputPayload_index_4 = s1_inputIndexes_4;
+ assign s1_outputPayload_index_5 = s1_inputIndexes_5;
+ assign s1_outputPayload_index_6 = s1_inputIndexes_6;
+ assign s1_outputPayload_index_7 = s1_inputIndexes_7;
+ assign s1_outputPayload_index_8 = s1_inputIndexes_8;
+ assign s1_outputPayload_index_9 = s1_inputIndexes_9;
+ assign s1_outputPayload_index_10 = s1_inputIndexes_10;
+ assign s1_outputPayload_index_11 = s1_inputIndexes_11;
+ assign s1_outputPayload_index_12 = s1_inputIndexes_12;
+ assign s1_outputPayload_index_13 = s1_inputIndexes_13;
+ assign s1_outputPayload_index_14 = s1_inputIndexes_14;
+ assign s1_outputPayload_index_15 = s1_inputIndexes_15;
+ assign s1_outputPayload_last = s1_offsetNext[4];
+ assign _zz_s1_outputPayload_selValid = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_1 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_2 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_3 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_4 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_5 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_6 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_7 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_8 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_9 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_10 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_11 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_12 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_13 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0000));
+ assign _zz_s1_outputPayload_selValid_14 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0000));
+ assign _zz_s1_outputPayload_sel_0 = (((((((_zz_s1_outputPayload_selValid || _zz_s1_outputPayload_selValid_2) || _zz_s1_outputPayload_selValid_4) || _zz_s1_outputPayload_selValid_6) || _zz_s1_outputPayload_selValid_8) || _zz_s1_outputPayload_selValid_10) || _zz_s1_outputPayload_selValid_12) || _zz_s1_outputPayload_selValid_14);
+ assign _zz_s1_outputPayload_sel_0_1 = (((((((_zz_s1_outputPayload_selValid_1 || _zz_s1_outputPayload_selValid_2) || _zz_s1_outputPayload_selValid_5) || _zz_s1_outputPayload_selValid_6) || _zz_s1_outputPayload_selValid_9) || _zz_s1_outputPayload_selValid_10) || _zz_s1_outputPayload_selValid_13) || _zz_s1_outputPayload_selValid_14);
+ assign _zz_s1_outputPayload_sel_0_2 = (((((((_zz_s1_outputPayload_selValid_3 || _zz_s1_outputPayload_selValid_4) || _zz_s1_outputPayload_selValid_5) || _zz_s1_outputPayload_selValid_6) || _zz_s1_outputPayload_selValid_11) || _zz_s1_outputPayload_selValid_12) || _zz_s1_outputPayload_selValid_13) || _zz_s1_outputPayload_selValid_14);
+ assign _zz_s1_outputPayload_sel_0_3 = (((((((_zz_s1_outputPayload_selValid_7 || _zz_s1_outputPayload_selValid_8) || _zz_s1_outputPayload_selValid_9) || _zz_s1_outputPayload_selValid_10) || _zz_s1_outputPayload_selValid_11) || _zz_s1_outputPayload_selValid_12) || _zz_s1_outputPayload_selValid_13) || _zz_s1_outputPayload_selValid_14);
+ assign s1_outputPayload_sel_0 = {_zz_s1_outputPayload_sel_0_3,{_zz_s1_outputPayload_sel_0_2,{_zz_s1_outputPayload_sel_0_1,_zz_s1_outputPayload_sel_0}}};
+ always @(*) begin
+ s1_outputPayload_selValid[0] = ((|{_zz_s1_outputPayload_selValid_14,{_zz_s1_outputPayload_selValid_13,{_zz_s1_outputPayload_selValid_12,{_zz_s1_outputPayload_selValid_11,{_zz_s1_outputPayload_selValid_10,{_zz_s1_outputPayload_selValid_9,{_zz_s1_outputPayload_selValid_8,{_zz_s1_outputPayload_selValid_7,{_zz_s1_outputPayload_selValid_240,_zz_s1_outputPayload_selValid_241}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_0]);
+ s1_outputPayload_selValid[1] = ((|{_zz_s1_outputPayload_selValid_29,{_zz_s1_outputPayload_selValid_28,{_zz_s1_outputPayload_selValid_27,{_zz_s1_outputPayload_selValid_26,{_zz_s1_outputPayload_selValid_25,{_zz_s1_outputPayload_selValid_24,{_zz_s1_outputPayload_selValid_23,{_zz_s1_outputPayload_selValid_22,{_zz_s1_outputPayload_selValid_242,_zz_s1_outputPayload_selValid_243}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_1]);
+ s1_outputPayload_selValid[2] = ((|{_zz_s1_outputPayload_selValid_44,{_zz_s1_outputPayload_selValid_43,{_zz_s1_outputPayload_selValid_42,{_zz_s1_outputPayload_selValid_41,{_zz_s1_outputPayload_selValid_40,{_zz_s1_outputPayload_selValid_39,{_zz_s1_outputPayload_selValid_38,{_zz_s1_outputPayload_selValid_37,{_zz_s1_outputPayload_selValid_244,_zz_s1_outputPayload_selValid_245}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_2]);
+ s1_outputPayload_selValid[3] = ((|{_zz_s1_outputPayload_selValid_59,{_zz_s1_outputPayload_selValid_58,{_zz_s1_outputPayload_selValid_57,{_zz_s1_outputPayload_selValid_56,{_zz_s1_outputPayload_selValid_55,{_zz_s1_outputPayload_selValid_54,{_zz_s1_outputPayload_selValid_53,{_zz_s1_outputPayload_selValid_52,{_zz_s1_outputPayload_selValid_246,_zz_s1_outputPayload_selValid_247}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_3]);
+ s1_outputPayload_selValid[4] = ((|{_zz_s1_outputPayload_selValid_74,{_zz_s1_outputPayload_selValid_73,{_zz_s1_outputPayload_selValid_72,{_zz_s1_outputPayload_selValid_71,{_zz_s1_outputPayload_selValid_70,{_zz_s1_outputPayload_selValid_69,{_zz_s1_outputPayload_selValid_68,{_zz_s1_outputPayload_selValid_67,{_zz_s1_outputPayload_selValid_248,_zz_s1_outputPayload_selValid_249}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_4]);
+ s1_outputPayload_selValid[5] = ((|{_zz_s1_outputPayload_selValid_89,{_zz_s1_outputPayload_selValid_88,{_zz_s1_outputPayload_selValid_87,{_zz_s1_outputPayload_selValid_86,{_zz_s1_outputPayload_selValid_85,{_zz_s1_outputPayload_selValid_84,{_zz_s1_outputPayload_selValid_83,{_zz_s1_outputPayload_selValid_82,{_zz_s1_outputPayload_selValid_250,_zz_s1_outputPayload_selValid_251}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_5]);
+ s1_outputPayload_selValid[6] = ((|{_zz_s1_outputPayload_selValid_104,{_zz_s1_outputPayload_selValid_103,{_zz_s1_outputPayload_selValid_102,{_zz_s1_outputPayload_selValid_101,{_zz_s1_outputPayload_selValid_100,{_zz_s1_outputPayload_selValid_99,{_zz_s1_outputPayload_selValid_98,{_zz_s1_outputPayload_selValid_97,{_zz_s1_outputPayload_selValid_252,_zz_s1_outputPayload_selValid_253}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_6]);
+ s1_outputPayload_selValid[7] = ((|{_zz_s1_outputPayload_selValid_119,{_zz_s1_outputPayload_selValid_118,{_zz_s1_outputPayload_selValid_117,{_zz_s1_outputPayload_selValid_116,{_zz_s1_outputPayload_selValid_115,{_zz_s1_outputPayload_selValid_114,{_zz_s1_outputPayload_selValid_113,{_zz_s1_outputPayload_selValid_112,{_zz_s1_outputPayload_selValid_254,_zz_s1_outputPayload_selValid_255}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_7]);
+ s1_outputPayload_selValid[8] = ((|{_zz_s1_outputPayload_selValid_134,{_zz_s1_outputPayload_selValid_133,{_zz_s1_outputPayload_selValid_132,{_zz_s1_outputPayload_selValid_131,{_zz_s1_outputPayload_selValid_130,{_zz_s1_outputPayload_selValid_129,{_zz_s1_outputPayload_selValid_128,{_zz_s1_outputPayload_selValid_127,{_zz_s1_outputPayload_selValid_256,_zz_s1_outputPayload_selValid_257}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_8]);
+ s1_outputPayload_selValid[9] = ((|{_zz_s1_outputPayload_selValid_149,{_zz_s1_outputPayload_selValid_148,{_zz_s1_outputPayload_selValid_147,{_zz_s1_outputPayload_selValid_146,{_zz_s1_outputPayload_selValid_145,{_zz_s1_outputPayload_selValid_144,{_zz_s1_outputPayload_selValid_143,{_zz_s1_outputPayload_selValid_142,{_zz_s1_outputPayload_selValid_258,_zz_s1_outputPayload_selValid_259}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_9]);
+ s1_outputPayload_selValid[10] = ((|{_zz_s1_outputPayload_selValid_164,{_zz_s1_outputPayload_selValid_163,{_zz_s1_outputPayload_selValid_162,{_zz_s1_outputPayload_selValid_161,{_zz_s1_outputPayload_selValid_160,{_zz_s1_outputPayload_selValid_159,{_zz_s1_outputPayload_selValid_158,{_zz_s1_outputPayload_selValid_157,{_zz_s1_outputPayload_selValid_260,_zz_s1_outputPayload_selValid_261}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_10]);
+ s1_outputPayload_selValid[11] = ((|{_zz_s1_outputPayload_selValid_179,{_zz_s1_outputPayload_selValid_178,{_zz_s1_outputPayload_selValid_177,{_zz_s1_outputPayload_selValid_176,{_zz_s1_outputPayload_selValid_175,{_zz_s1_outputPayload_selValid_174,{_zz_s1_outputPayload_selValid_173,{_zz_s1_outputPayload_selValid_172,{_zz_s1_outputPayload_selValid_262,_zz_s1_outputPayload_selValid_263}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_11]);
+ s1_outputPayload_selValid[12] = ((|{_zz_s1_outputPayload_selValid_194,{_zz_s1_outputPayload_selValid_193,{_zz_s1_outputPayload_selValid_192,{_zz_s1_outputPayload_selValid_191,{_zz_s1_outputPayload_selValid_190,{_zz_s1_outputPayload_selValid_189,{_zz_s1_outputPayload_selValid_188,{_zz_s1_outputPayload_selValid_187,{_zz_s1_outputPayload_selValid_264,_zz_s1_outputPayload_selValid_265}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_12]);
+ s1_outputPayload_selValid[13] = ((|{_zz_s1_outputPayload_selValid_209,{_zz_s1_outputPayload_selValid_208,{_zz_s1_outputPayload_selValid_207,{_zz_s1_outputPayload_selValid_206,{_zz_s1_outputPayload_selValid_205,{_zz_s1_outputPayload_selValid_204,{_zz_s1_outputPayload_selValid_203,{_zz_s1_outputPayload_selValid_202,{_zz_s1_outputPayload_selValid_266,_zz_s1_outputPayload_selValid_267}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_13]);
+ s1_outputPayload_selValid[14] = ((|{_zz_s1_outputPayload_selValid_224,{_zz_s1_outputPayload_selValid_223,{_zz_s1_outputPayload_selValid_222,{_zz_s1_outputPayload_selValid_221,{_zz_s1_outputPayload_selValid_220,{_zz_s1_outputPayload_selValid_219,{_zz_s1_outputPayload_selValid_218,{_zz_s1_outputPayload_selValid_217,{_zz_s1_outputPayload_selValid_268,_zz_s1_outputPayload_selValid_269}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_14]);
+ s1_outputPayload_selValid[15] = ((|{_zz_s1_outputPayload_selValid_239,{_zz_s1_outputPayload_selValid_238,{_zz_s1_outputPayload_selValid_237,{_zz_s1_outputPayload_selValid_236,{_zz_s1_outputPayload_selValid_235,{_zz_s1_outputPayload_selValid_234,{_zz_s1_outputPayload_selValid_233,{_zz_s1_outputPayload_selValid_232,{_zz_s1_outputPayload_selValid_270,_zz_s1_outputPayload_selValid_271}}}}}}}}}) && s1_outputPayload_cmd_mask[s1_outputPayload_sel_15]);
+ end
+
+ assign _zz_s1_outputPayload_selValid_15 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_16 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_17 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_18 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_19 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_20 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_21 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_22 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_23 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_24 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_25 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_26 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_27 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_28 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0001));
+ assign _zz_s1_outputPayload_selValid_29 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0001));
+ assign _zz_s1_outputPayload_sel_1 = (((((((_zz_s1_outputPayload_selValid_15 || _zz_s1_outputPayload_selValid_17) || _zz_s1_outputPayload_selValid_19) || _zz_s1_outputPayload_selValid_21) || _zz_s1_outputPayload_selValid_23) || _zz_s1_outputPayload_selValid_25) || _zz_s1_outputPayload_selValid_27) || _zz_s1_outputPayload_selValid_29);
+ assign _zz_s1_outputPayload_sel_1_1 = (((((((_zz_s1_outputPayload_selValid_16 || _zz_s1_outputPayload_selValid_17) || _zz_s1_outputPayload_selValid_20) || _zz_s1_outputPayload_selValid_21) || _zz_s1_outputPayload_selValid_24) || _zz_s1_outputPayload_selValid_25) || _zz_s1_outputPayload_selValid_28) || _zz_s1_outputPayload_selValid_29);
+ assign _zz_s1_outputPayload_sel_1_2 = (((((((_zz_s1_outputPayload_selValid_18 || _zz_s1_outputPayload_selValid_19) || _zz_s1_outputPayload_selValid_20) || _zz_s1_outputPayload_selValid_21) || _zz_s1_outputPayload_selValid_26) || _zz_s1_outputPayload_selValid_27) || _zz_s1_outputPayload_selValid_28) || _zz_s1_outputPayload_selValid_29);
+ assign _zz_s1_outputPayload_sel_1_3 = (((((((_zz_s1_outputPayload_selValid_22 || _zz_s1_outputPayload_selValid_23) || _zz_s1_outputPayload_selValid_24) || _zz_s1_outputPayload_selValid_25) || _zz_s1_outputPayload_selValid_26) || _zz_s1_outputPayload_selValid_27) || _zz_s1_outputPayload_selValid_28) || _zz_s1_outputPayload_selValid_29);
+ assign s1_outputPayload_sel_1 = {_zz_s1_outputPayload_sel_1_3,{_zz_s1_outputPayload_sel_1_2,{_zz_s1_outputPayload_sel_1_1,_zz_s1_outputPayload_sel_1}}};
+ assign _zz_s1_outputPayload_selValid_30 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_31 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_32 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_33 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_34 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_35 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_36 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_37 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_38 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_39 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_40 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_41 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_42 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_43 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0010));
+ assign _zz_s1_outputPayload_selValid_44 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0010));
+ assign _zz_s1_outputPayload_sel_2 = (((((((_zz_s1_outputPayload_selValid_30 || _zz_s1_outputPayload_selValid_32) || _zz_s1_outputPayload_selValid_34) || _zz_s1_outputPayload_selValid_36) || _zz_s1_outputPayload_selValid_38) || _zz_s1_outputPayload_selValid_40) || _zz_s1_outputPayload_selValid_42) || _zz_s1_outputPayload_selValid_44);
+ assign _zz_s1_outputPayload_sel_2_1 = (((((((_zz_s1_outputPayload_selValid_31 || _zz_s1_outputPayload_selValid_32) || _zz_s1_outputPayload_selValid_35) || _zz_s1_outputPayload_selValid_36) || _zz_s1_outputPayload_selValid_39) || _zz_s1_outputPayload_selValid_40) || _zz_s1_outputPayload_selValid_43) || _zz_s1_outputPayload_selValid_44);
+ assign _zz_s1_outputPayload_sel_2_2 = (((((((_zz_s1_outputPayload_selValid_33 || _zz_s1_outputPayload_selValid_34) || _zz_s1_outputPayload_selValid_35) || _zz_s1_outputPayload_selValid_36) || _zz_s1_outputPayload_selValid_41) || _zz_s1_outputPayload_selValid_42) || _zz_s1_outputPayload_selValid_43) || _zz_s1_outputPayload_selValid_44);
+ assign _zz_s1_outputPayload_sel_2_3 = (((((((_zz_s1_outputPayload_selValid_37 || _zz_s1_outputPayload_selValid_38) || _zz_s1_outputPayload_selValid_39) || _zz_s1_outputPayload_selValid_40) || _zz_s1_outputPayload_selValid_41) || _zz_s1_outputPayload_selValid_42) || _zz_s1_outputPayload_selValid_43) || _zz_s1_outputPayload_selValid_44);
+ assign s1_outputPayload_sel_2 = {_zz_s1_outputPayload_sel_2_3,{_zz_s1_outputPayload_sel_2_2,{_zz_s1_outputPayload_sel_2_1,_zz_s1_outputPayload_sel_2}}};
+ assign _zz_s1_outputPayload_selValid_45 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_46 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_47 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_48 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_49 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_50 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_51 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_52 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_53 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_54 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_55 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_56 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_57 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_58 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0011));
+ assign _zz_s1_outputPayload_selValid_59 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0011));
+ assign _zz_s1_outputPayload_sel_3 = (((((((_zz_s1_outputPayload_selValid_45 || _zz_s1_outputPayload_selValid_47) || _zz_s1_outputPayload_selValid_49) || _zz_s1_outputPayload_selValid_51) || _zz_s1_outputPayload_selValid_53) || _zz_s1_outputPayload_selValid_55) || _zz_s1_outputPayload_selValid_57) || _zz_s1_outputPayload_selValid_59);
+ assign _zz_s1_outputPayload_sel_3_1 = (((((((_zz_s1_outputPayload_selValid_46 || _zz_s1_outputPayload_selValid_47) || _zz_s1_outputPayload_selValid_50) || _zz_s1_outputPayload_selValid_51) || _zz_s1_outputPayload_selValid_54) || _zz_s1_outputPayload_selValid_55) || _zz_s1_outputPayload_selValid_58) || _zz_s1_outputPayload_selValid_59);
+ assign _zz_s1_outputPayload_sel_3_2 = (((((((_zz_s1_outputPayload_selValid_48 || _zz_s1_outputPayload_selValid_49) || _zz_s1_outputPayload_selValid_50) || _zz_s1_outputPayload_selValid_51) || _zz_s1_outputPayload_selValid_56) || _zz_s1_outputPayload_selValid_57) || _zz_s1_outputPayload_selValid_58) || _zz_s1_outputPayload_selValid_59);
+ assign _zz_s1_outputPayload_sel_3_3 = (((((((_zz_s1_outputPayload_selValid_52 || _zz_s1_outputPayload_selValid_53) || _zz_s1_outputPayload_selValid_54) || _zz_s1_outputPayload_selValid_55) || _zz_s1_outputPayload_selValid_56) || _zz_s1_outputPayload_selValid_57) || _zz_s1_outputPayload_selValid_58) || _zz_s1_outputPayload_selValid_59);
+ assign s1_outputPayload_sel_3 = {_zz_s1_outputPayload_sel_3_3,{_zz_s1_outputPayload_sel_3_2,{_zz_s1_outputPayload_sel_3_1,_zz_s1_outputPayload_sel_3}}};
+ assign _zz_s1_outputPayload_selValid_60 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_61 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_62 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_63 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_64 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_65 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_66 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_67 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_68 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_69 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_70 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_71 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_72 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_73 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0100));
+ assign _zz_s1_outputPayload_selValid_74 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0100));
+ assign _zz_s1_outputPayload_sel_4 = (((((((_zz_s1_outputPayload_selValid_60 || _zz_s1_outputPayload_selValid_62) || _zz_s1_outputPayload_selValid_64) || _zz_s1_outputPayload_selValid_66) || _zz_s1_outputPayload_selValid_68) || _zz_s1_outputPayload_selValid_70) || _zz_s1_outputPayload_selValid_72) || _zz_s1_outputPayload_selValid_74);
+ assign _zz_s1_outputPayload_sel_4_1 = (((((((_zz_s1_outputPayload_selValid_61 || _zz_s1_outputPayload_selValid_62) || _zz_s1_outputPayload_selValid_65) || _zz_s1_outputPayload_selValid_66) || _zz_s1_outputPayload_selValid_69) || _zz_s1_outputPayload_selValid_70) || _zz_s1_outputPayload_selValid_73) || _zz_s1_outputPayload_selValid_74);
+ assign _zz_s1_outputPayload_sel_4_2 = (((((((_zz_s1_outputPayload_selValid_63 || _zz_s1_outputPayload_selValid_64) || _zz_s1_outputPayload_selValid_65) || _zz_s1_outputPayload_selValid_66) || _zz_s1_outputPayload_selValid_71) || _zz_s1_outputPayload_selValid_72) || _zz_s1_outputPayload_selValid_73) || _zz_s1_outputPayload_selValid_74);
+ assign _zz_s1_outputPayload_sel_4_3 = (((((((_zz_s1_outputPayload_selValid_67 || _zz_s1_outputPayload_selValid_68) || _zz_s1_outputPayload_selValid_69) || _zz_s1_outputPayload_selValid_70) || _zz_s1_outputPayload_selValid_71) || _zz_s1_outputPayload_selValid_72) || _zz_s1_outputPayload_selValid_73) || _zz_s1_outputPayload_selValid_74);
+ assign s1_outputPayload_sel_4 = {_zz_s1_outputPayload_sel_4_3,{_zz_s1_outputPayload_sel_4_2,{_zz_s1_outputPayload_sel_4_1,_zz_s1_outputPayload_sel_4}}};
+ assign _zz_s1_outputPayload_selValid_75 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_76 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_77 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_78 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_79 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_80 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_81 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_82 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_83 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_84 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_85 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_86 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_87 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_88 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0101));
+ assign _zz_s1_outputPayload_selValid_89 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0101));
+ assign _zz_s1_outputPayload_sel_5 = (((((((_zz_s1_outputPayload_selValid_75 || _zz_s1_outputPayload_selValid_77) || _zz_s1_outputPayload_selValid_79) || _zz_s1_outputPayload_selValid_81) || _zz_s1_outputPayload_selValid_83) || _zz_s1_outputPayload_selValid_85) || _zz_s1_outputPayload_selValid_87) || _zz_s1_outputPayload_selValid_89);
+ assign _zz_s1_outputPayload_sel_5_1 = (((((((_zz_s1_outputPayload_selValid_76 || _zz_s1_outputPayload_selValid_77) || _zz_s1_outputPayload_selValid_80) || _zz_s1_outputPayload_selValid_81) || _zz_s1_outputPayload_selValid_84) || _zz_s1_outputPayload_selValid_85) || _zz_s1_outputPayload_selValid_88) || _zz_s1_outputPayload_selValid_89);
+ assign _zz_s1_outputPayload_sel_5_2 = (((((((_zz_s1_outputPayload_selValid_78 || _zz_s1_outputPayload_selValid_79) || _zz_s1_outputPayload_selValid_80) || _zz_s1_outputPayload_selValid_81) || _zz_s1_outputPayload_selValid_86) || _zz_s1_outputPayload_selValid_87) || _zz_s1_outputPayload_selValid_88) || _zz_s1_outputPayload_selValid_89);
+ assign _zz_s1_outputPayload_sel_5_3 = (((((((_zz_s1_outputPayload_selValid_82 || _zz_s1_outputPayload_selValid_83) || _zz_s1_outputPayload_selValid_84) || _zz_s1_outputPayload_selValid_85) || _zz_s1_outputPayload_selValid_86) || _zz_s1_outputPayload_selValid_87) || _zz_s1_outputPayload_selValid_88) || _zz_s1_outputPayload_selValid_89);
+ assign s1_outputPayload_sel_5 = {_zz_s1_outputPayload_sel_5_3,{_zz_s1_outputPayload_sel_5_2,{_zz_s1_outputPayload_sel_5_1,_zz_s1_outputPayload_sel_5}}};
+ assign _zz_s1_outputPayload_selValid_90 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_91 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_92 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_93 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_94 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_95 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_96 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_97 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_98 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_99 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_100 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_101 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_102 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_103 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0110));
+ assign _zz_s1_outputPayload_selValid_104 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0110));
+ assign _zz_s1_outputPayload_sel_6 = (((((((_zz_s1_outputPayload_selValid_90 || _zz_s1_outputPayload_selValid_92) || _zz_s1_outputPayload_selValid_94) || _zz_s1_outputPayload_selValid_96) || _zz_s1_outputPayload_selValid_98) || _zz_s1_outputPayload_selValid_100) || _zz_s1_outputPayload_selValid_102) || _zz_s1_outputPayload_selValid_104);
+ assign _zz_s1_outputPayload_sel_6_1 = (((((((_zz_s1_outputPayload_selValid_91 || _zz_s1_outputPayload_selValid_92) || _zz_s1_outputPayload_selValid_95) || _zz_s1_outputPayload_selValid_96) || _zz_s1_outputPayload_selValid_99) || _zz_s1_outputPayload_selValid_100) || _zz_s1_outputPayload_selValid_103) || _zz_s1_outputPayload_selValid_104);
+ assign _zz_s1_outputPayload_sel_6_2 = (((((((_zz_s1_outputPayload_selValid_93 || _zz_s1_outputPayload_selValid_94) || _zz_s1_outputPayload_selValid_95) || _zz_s1_outputPayload_selValid_96) || _zz_s1_outputPayload_selValid_101) || _zz_s1_outputPayload_selValid_102) || _zz_s1_outputPayload_selValid_103) || _zz_s1_outputPayload_selValid_104);
+ assign _zz_s1_outputPayload_sel_6_3 = (((((((_zz_s1_outputPayload_selValid_97 || _zz_s1_outputPayload_selValid_98) || _zz_s1_outputPayload_selValid_99) || _zz_s1_outputPayload_selValid_100) || _zz_s1_outputPayload_selValid_101) || _zz_s1_outputPayload_selValid_102) || _zz_s1_outputPayload_selValid_103) || _zz_s1_outputPayload_selValid_104);
+ assign s1_outputPayload_sel_6 = {_zz_s1_outputPayload_sel_6_3,{_zz_s1_outputPayload_sel_6_2,{_zz_s1_outputPayload_sel_6_1,_zz_s1_outputPayload_sel_6}}};
+ assign _zz_s1_outputPayload_selValid_105 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_106 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_107 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_108 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_109 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_110 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_111 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_112 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_113 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_114 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_115 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_116 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_117 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_118 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b0111));
+ assign _zz_s1_outputPayload_selValid_119 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b0111));
+ assign _zz_s1_outputPayload_sel_7 = (((((((_zz_s1_outputPayload_selValid_105 || _zz_s1_outputPayload_selValid_107) || _zz_s1_outputPayload_selValid_109) || _zz_s1_outputPayload_selValid_111) || _zz_s1_outputPayload_selValid_113) || _zz_s1_outputPayload_selValid_115) || _zz_s1_outputPayload_selValid_117) || _zz_s1_outputPayload_selValid_119);
+ assign _zz_s1_outputPayload_sel_7_1 = (((((((_zz_s1_outputPayload_selValid_106 || _zz_s1_outputPayload_selValid_107) || _zz_s1_outputPayload_selValid_110) || _zz_s1_outputPayload_selValid_111) || _zz_s1_outputPayload_selValid_114) || _zz_s1_outputPayload_selValid_115) || _zz_s1_outputPayload_selValid_118) || _zz_s1_outputPayload_selValid_119);
+ assign _zz_s1_outputPayload_sel_7_2 = (((((((_zz_s1_outputPayload_selValid_108 || _zz_s1_outputPayload_selValid_109) || _zz_s1_outputPayload_selValid_110) || _zz_s1_outputPayload_selValid_111) || _zz_s1_outputPayload_selValid_116) || _zz_s1_outputPayload_selValid_117) || _zz_s1_outputPayload_selValid_118) || _zz_s1_outputPayload_selValid_119);
+ assign _zz_s1_outputPayload_sel_7_3 = (((((((_zz_s1_outputPayload_selValid_112 || _zz_s1_outputPayload_selValid_113) || _zz_s1_outputPayload_selValid_114) || _zz_s1_outputPayload_selValid_115) || _zz_s1_outputPayload_selValid_116) || _zz_s1_outputPayload_selValid_117) || _zz_s1_outputPayload_selValid_118) || _zz_s1_outputPayload_selValid_119);
+ assign s1_outputPayload_sel_7 = {_zz_s1_outputPayload_sel_7_3,{_zz_s1_outputPayload_sel_7_2,{_zz_s1_outputPayload_sel_7_1,_zz_s1_outputPayload_sel_7}}};
+ assign _zz_s1_outputPayload_selValid_120 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_121 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_122 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_123 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_124 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_125 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_126 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_127 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_128 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_129 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_130 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_131 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_132 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_133 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1000));
+ assign _zz_s1_outputPayload_selValid_134 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1000));
+ assign _zz_s1_outputPayload_sel_8 = (((((((_zz_s1_outputPayload_selValid_120 || _zz_s1_outputPayload_selValid_122) || _zz_s1_outputPayload_selValid_124) || _zz_s1_outputPayload_selValid_126) || _zz_s1_outputPayload_selValid_128) || _zz_s1_outputPayload_selValid_130) || _zz_s1_outputPayload_selValid_132) || _zz_s1_outputPayload_selValid_134);
+ assign _zz_s1_outputPayload_sel_8_1 = (((((((_zz_s1_outputPayload_selValid_121 || _zz_s1_outputPayload_selValid_122) || _zz_s1_outputPayload_selValid_125) || _zz_s1_outputPayload_selValid_126) || _zz_s1_outputPayload_selValid_129) || _zz_s1_outputPayload_selValid_130) || _zz_s1_outputPayload_selValid_133) || _zz_s1_outputPayload_selValid_134);
+ assign _zz_s1_outputPayload_sel_8_2 = (((((((_zz_s1_outputPayload_selValid_123 || _zz_s1_outputPayload_selValid_124) || _zz_s1_outputPayload_selValid_125) || _zz_s1_outputPayload_selValid_126) || _zz_s1_outputPayload_selValid_131) || _zz_s1_outputPayload_selValid_132) || _zz_s1_outputPayload_selValid_133) || _zz_s1_outputPayload_selValid_134);
+ assign _zz_s1_outputPayload_sel_8_3 = (((((((_zz_s1_outputPayload_selValid_127 || _zz_s1_outputPayload_selValid_128) || _zz_s1_outputPayload_selValid_129) || _zz_s1_outputPayload_selValid_130) || _zz_s1_outputPayload_selValid_131) || _zz_s1_outputPayload_selValid_132) || _zz_s1_outputPayload_selValid_133) || _zz_s1_outputPayload_selValid_134);
+ assign s1_outputPayload_sel_8 = {_zz_s1_outputPayload_sel_8_3,{_zz_s1_outputPayload_sel_8_2,{_zz_s1_outputPayload_sel_8_1,_zz_s1_outputPayload_sel_8}}};
+ assign _zz_s1_outputPayload_selValid_135 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_136 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_137 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_138 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_139 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_140 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_141 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_142 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_143 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_144 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_145 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_146 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_147 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_148 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1001));
+ assign _zz_s1_outputPayload_selValid_149 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1001));
+ assign _zz_s1_outputPayload_sel_9 = (((((((_zz_s1_outputPayload_selValid_135 || _zz_s1_outputPayload_selValid_137) || _zz_s1_outputPayload_selValid_139) || _zz_s1_outputPayload_selValid_141) || _zz_s1_outputPayload_selValid_143) || _zz_s1_outputPayload_selValid_145) || _zz_s1_outputPayload_selValid_147) || _zz_s1_outputPayload_selValid_149);
+ assign _zz_s1_outputPayload_sel_9_1 = (((((((_zz_s1_outputPayload_selValid_136 || _zz_s1_outputPayload_selValid_137) || _zz_s1_outputPayload_selValid_140) || _zz_s1_outputPayload_selValid_141) || _zz_s1_outputPayload_selValid_144) || _zz_s1_outputPayload_selValid_145) || _zz_s1_outputPayload_selValid_148) || _zz_s1_outputPayload_selValid_149);
+ assign _zz_s1_outputPayload_sel_9_2 = (((((((_zz_s1_outputPayload_selValid_138 || _zz_s1_outputPayload_selValid_139) || _zz_s1_outputPayload_selValid_140) || _zz_s1_outputPayload_selValid_141) || _zz_s1_outputPayload_selValid_146) || _zz_s1_outputPayload_selValid_147) || _zz_s1_outputPayload_selValid_148) || _zz_s1_outputPayload_selValid_149);
+ assign _zz_s1_outputPayload_sel_9_3 = (((((((_zz_s1_outputPayload_selValid_142 || _zz_s1_outputPayload_selValid_143) || _zz_s1_outputPayload_selValid_144) || _zz_s1_outputPayload_selValid_145) || _zz_s1_outputPayload_selValid_146) || _zz_s1_outputPayload_selValid_147) || _zz_s1_outputPayload_selValid_148) || _zz_s1_outputPayload_selValid_149);
+ assign s1_outputPayload_sel_9 = {_zz_s1_outputPayload_sel_9_3,{_zz_s1_outputPayload_sel_9_2,{_zz_s1_outputPayload_sel_9_1,_zz_s1_outputPayload_sel_9}}};
+ assign _zz_s1_outputPayload_selValid_150 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_151 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_152 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_153 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_154 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_155 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_156 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_157 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_158 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_159 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_160 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_161 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_162 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_163 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1010));
+ assign _zz_s1_outputPayload_selValid_164 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1010));
+ assign _zz_s1_outputPayload_sel_10 = (((((((_zz_s1_outputPayload_selValid_150 || _zz_s1_outputPayload_selValid_152) || _zz_s1_outputPayload_selValid_154) || _zz_s1_outputPayload_selValid_156) || _zz_s1_outputPayload_selValid_158) || _zz_s1_outputPayload_selValid_160) || _zz_s1_outputPayload_selValid_162) || _zz_s1_outputPayload_selValid_164);
+ assign _zz_s1_outputPayload_sel_10_1 = (((((((_zz_s1_outputPayload_selValid_151 || _zz_s1_outputPayload_selValid_152) || _zz_s1_outputPayload_selValid_155) || _zz_s1_outputPayload_selValid_156) || _zz_s1_outputPayload_selValid_159) || _zz_s1_outputPayload_selValid_160) || _zz_s1_outputPayload_selValid_163) || _zz_s1_outputPayload_selValid_164);
+ assign _zz_s1_outputPayload_sel_10_2 = (((((((_zz_s1_outputPayload_selValid_153 || _zz_s1_outputPayload_selValid_154) || _zz_s1_outputPayload_selValid_155) || _zz_s1_outputPayload_selValid_156) || _zz_s1_outputPayload_selValid_161) || _zz_s1_outputPayload_selValid_162) || _zz_s1_outputPayload_selValid_163) || _zz_s1_outputPayload_selValid_164);
+ assign _zz_s1_outputPayload_sel_10_3 = (((((((_zz_s1_outputPayload_selValid_157 || _zz_s1_outputPayload_selValid_158) || _zz_s1_outputPayload_selValid_159) || _zz_s1_outputPayload_selValid_160) || _zz_s1_outputPayload_selValid_161) || _zz_s1_outputPayload_selValid_162) || _zz_s1_outputPayload_selValid_163) || _zz_s1_outputPayload_selValid_164);
+ assign s1_outputPayload_sel_10 = {_zz_s1_outputPayload_sel_10_3,{_zz_s1_outputPayload_sel_10_2,{_zz_s1_outputPayload_sel_10_1,_zz_s1_outputPayload_sel_10}}};
+ assign _zz_s1_outputPayload_selValid_165 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_166 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_167 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_168 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_169 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_170 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_171 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_172 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_173 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_174 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_175 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_176 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_177 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_178 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1011));
+ assign _zz_s1_outputPayload_selValid_179 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1011));
+ assign _zz_s1_outputPayload_sel_11 = (((((((_zz_s1_outputPayload_selValid_165 || _zz_s1_outputPayload_selValid_167) || _zz_s1_outputPayload_selValid_169) || _zz_s1_outputPayload_selValid_171) || _zz_s1_outputPayload_selValid_173) || _zz_s1_outputPayload_selValid_175) || _zz_s1_outputPayload_selValid_177) || _zz_s1_outputPayload_selValid_179);
+ assign _zz_s1_outputPayload_sel_11_1 = (((((((_zz_s1_outputPayload_selValid_166 || _zz_s1_outputPayload_selValid_167) || _zz_s1_outputPayload_selValid_170) || _zz_s1_outputPayload_selValid_171) || _zz_s1_outputPayload_selValid_174) || _zz_s1_outputPayload_selValid_175) || _zz_s1_outputPayload_selValid_178) || _zz_s1_outputPayload_selValid_179);
+ assign _zz_s1_outputPayload_sel_11_2 = (((((((_zz_s1_outputPayload_selValid_168 || _zz_s1_outputPayload_selValid_169) || _zz_s1_outputPayload_selValid_170) || _zz_s1_outputPayload_selValid_171) || _zz_s1_outputPayload_selValid_176) || _zz_s1_outputPayload_selValid_177) || _zz_s1_outputPayload_selValid_178) || _zz_s1_outputPayload_selValid_179);
+ assign _zz_s1_outputPayload_sel_11_3 = (((((((_zz_s1_outputPayload_selValid_172 || _zz_s1_outputPayload_selValid_173) || _zz_s1_outputPayload_selValid_174) || _zz_s1_outputPayload_selValid_175) || _zz_s1_outputPayload_selValid_176) || _zz_s1_outputPayload_selValid_177) || _zz_s1_outputPayload_selValid_178) || _zz_s1_outputPayload_selValid_179);
+ assign s1_outputPayload_sel_11 = {_zz_s1_outputPayload_sel_11_3,{_zz_s1_outputPayload_sel_11_2,{_zz_s1_outputPayload_sel_11_1,_zz_s1_outputPayload_sel_11}}};
+ assign _zz_s1_outputPayload_selValid_180 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_181 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_182 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_183 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_184 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_185 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_186 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_187 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_188 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_189 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_190 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_191 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_192 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_193 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1100));
+ assign _zz_s1_outputPayload_selValid_194 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1100));
+ assign _zz_s1_outputPayload_sel_12 = (((((((_zz_s1_outputPayload_selValid_180 || _zz_s1_outputPayload_selValid_182) || _zz_s1_outputPayload_selValid_184) || _zz_s1_outputPayload_selValid_186) || _zz_s1_outputPayload_selValid_188) || _zz_s1_outputPayload_selValid_190) || _zz_s1_outputPayload_selValid_192) || _zz_s1_outputPayload_selValid_194);
+ assign _zz_s1_outputPayload_sel_12_1 = (((((((_zz_s1_outputPayload_selValid_181 || _zz_s1_outputPayload_selValid_182) || _zz_s1_outputPayload_selValid_185) || _zz_s1_outputPayload_selValid_186) || _zz_s1_outputPayload_selValid_189) || _zz_s1_outputPayload_selValid_190) || _zz_s1_outputPayload_selValid_193) || _zz_s1_outputPayload_selValid_194);
+ assign _zz_s1_outputPayload_sel_12_2 = (((((((_zz_s1_outputPayload_selValid_183 || _zz_s1_outputPayload_selValid_184) || _zz_s1_outputPayload_selValid_185) || _zz_s1_outputPayload_selValid_186) || _zz_s1_outputPayload_selValid_191) || _zz_s1_outputPayload_selValid_192) || _zz_s1_outputPayload_selValid_193) || _zz_s1_outputPayload_selValid_194);
+ assign _zz_s1_outputPayload_sel_12_3 = (((((((_zz_s1_outputPayload_selValid_187 || _zz_s1_outputPayload_selValid_188) || _zz_s1_outputPayload_selValid_189) || _zz_s1_outputPayload_selValid_190) || _zz_s1_outputPayload_selValid_191) || _zz_s1_outputPayload_selValid_192) || _zz_s1_outputPayload_selValid_193) || _zz_s1_outputPayload_selValid_194);
+ assign s1_outputPayload_sel_12 = {_zz_s1_outputPayload_sel_12_3,{_zz_s1_outputPayload_sel_12_2,{_zz_s1_outputPayload_sel_12_1,_zz_s1_outputPayload_sel_12}}};
+ assign _zz_s1_outputPayload_selValid_195 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_196 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_197 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_198 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_199 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_200 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_201 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_202 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_203 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_204 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_205 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_206 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_207 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_208 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1101));
+ assign _zz_s1_outputPayload_selValid_209 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1101));
+ assign _zz_s1_outputPayload_sel_13 = (((((((_zz_s1_outputPayload_selValid_195 || _zz_s1_outputPayload_selValid_197) || _zz_s1_outputPayload_selValid_199) || _zz_s1_outputPayload_selValid_201) || _zz_s1_outputPayload_selValid_203) || _zz_s1_outputPayload_selValid_205) || _zz_s1_outputPayload_selValid_207) || _zz_s1_outputPayload_selValid_209);
+ assign _zz_s1_outputPayload_sel_13_1 = (((((((_zz_s1_outputPayload_selValid_196 || _zz_s1_outputPayload_selValid_197) || _zz_s1_outputPayload_selValid_200) || _zz_s1_outputPayload_selValid_201) || _zz_s1_outputPayload_selValid_204) || _zz_s1_outputPayload_selValid_205) || _zz_s1_outputPayload_selValid_208) || _zz_s1_outputPayload_selValid_209);
+ assign _zz_s1_outputPayload_sel_13_2 = (((((((_zz_s1_outputPayload_selValid_198 || _zz_s1_outputPayload_selValid_199) || _zz_s1_outputPayload_selValid_200) || _zz_s1_outputPayload_selValid_201) || _zz_s1_outputPayload_selValid_206) || _zz_s1_outputPayload_selValid_207) || _zz_s1_outputPayload_selValid_208) || _zz_s1_outputPayload_selValid_209);
+ assign _zz_s1_outputPayload_sel_13_3 = (((((((_zz_s1_outputPayload_selValid_202 || _zz_s1_outputPayload_selValid_203) || _zz_s1_outputPayload_selValid_204) || _zz_s1_outputPayload_selValid_205) || _zz_s1_outputPayload_selValid_206) || _zz_s1_outputPayload_selValid_207) || _zz_s1_outputPayload_selValid_208) || _zz_s1_outputPayload_selValid_209);
+ assign s1_outputPayload_sel_13 = {_zz_s1_outputPayload_sel_13_3,{_zz_s1_outputPayload_sel_13_2,{_zz_s1_outputPayload_sel_13_1,_zz_s1_outputPayload_sel_13}}};
+ assign _zz_s1_outputPayload_selValid_210 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_211 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_212 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_213 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_214 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_215 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_216 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_217 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_218 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_219 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_220 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_221 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_222 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_223 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1110));
+ assign _zz_s1_outputPayload_selValid_224 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1110));
+ assign _zz_s1_outputPayload_sel_14 = (((((((_zz_s1_outputPayload_selValid_210 || _zz_s1_outputPayload_selValid_212) || _zz_s1_outputPayload_selValid_214) || _zz_s1_outputPayload_selValid_216) || _zz_s1_outputPayload_selValid_218) || _zz_s1_outputPayload_selValid_220) || _zz_s1_outputPayload_selValid_222) || _zz_s1_outputPayload_selValid_224);
+ assign _zz_s1_outputPayload_sel_14_1 = (((((((_zz_s1_outputPayload_selValid_211 || _zz_s1_outputPayload_selValid_212) || _zz_s1_outputPayload_selValid_215) || _zz_s1_outputPayload_selValid_216) || _zz_s1_outputPayload_selValid_219) || _zz_s1_outputPayload_selValid_220) || _zz_s1_outputPayload_selValid_223) || _zz_s1_outputPayload_selValid_224);
+ assign _zz_s1_outputPayload_sel_14_2 = (((((((_zz_s1_outputPayload_selValid_213 || _zz_s1_outputPayload_selValid_214) || _zz_s1_outputPayload_selValid_215) || _zz_s1_outputPayload_selValid_216) || _zz_s1_outputPayload_selValid_221) || _zz_s1_outputPayload_selValid_222) || _zz_s1_outputPayload_selValid_223) || _zz_s1_outputPayload_selValid_224);
+ assign _zz_s1_outputPayload_sel_14_3 = (((((((_zz_s1_outputPayload_selValid_217 || _zz_s1_outputPayload_selValid_218) || _zz_s1_outputPayload_selValid_219) || _zz_s1_outputPayload_selValid_220) || _zz_s1_outputPayload_selValid_221) || _zz_s1_outputPayload_selValid_222) || _zz_s1_outputPayload_selValid_223) || _zz_s1_outputPayload_selValid_224);
+ assign s1_outputPayload_sel_14 = {_zz_s1_outputPayload_sel_14_3,{_zz_s1_outputPayload_sel_14_2,{_zz_s1_outputPayload_sel_14_1,_zz_s1_outputPayload_sel_14}}};
+ assign _zz_s1_outputPayload_selValid_225 = (s1_input_payload_cmd_mask[1] && (s1_inputIndexes_1 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_226 = (s1_input_payload_cmd_mask[2] && (s1_inputIndexes_2 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_227 = (s1_input_payload_cmd_mask[3] && (s1_inputIndexes_3 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_228 = (s1_input_payload_cmd_mask[4] && (s1_inputIndexes_4 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_229 = (s1_input_payload_cmd_mask[5] && (s1_inputIndexes_5 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_230 = (s1_input_payload_cmd_mask[6] && (s1_inputIndexes_6 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_231 = (s1_input_payload_cmd_mask[7] && (s1_inputIndexes_7 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_232 = (s1_input_payload_cmd_mask[8] && (s1_inputIndexes_8 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_233 = (s1_input_payload_cmd_mask[9] && (s1_inputIndexes_9 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_234 = (s1_input_payload_cmd_mask[10] && (s1_inputIndexes_10 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_235 = (s1_input_payload_cmd_mask[11] && (s1_inputIndexes_11 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_236 = (s1_input_payload_cmd_mask[12] && (s1_inputIndexes_12 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_237 = (s1_input_payload_cmd_mask[13] && (s1_inputIndexes_13 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_238 = (s1_input_payload_cmd_mask[14] && (s1_inputIndexes_14 == 4'b1111));
+ assign _zz_s1_outputPayload_selValid_239 = (s1_input_payload_cmd_mask[15] && (s1_inputIndexes_15 == 4'b1111));
+ assign _zz_s1_outputPayload_sel_15 = (((((((_zz_s1_outputPayload_selValid_225 || _zz_s1_outputPayload_selValid_227) || _zz_s1_outputPayload_selValid_229) || _zz_s1_outputPayload_selValid_231) || _zz_s1_outputPayload_selValid_233) || _zz_s1_outputPayload_selValid_235) || _zz_s1_outputPayload_selValid_237) || _zz_s1_outputPayload_selValid_239);
+ assign _zz_s1_outputPayload_sel_15_1 = (((((((_zz_s1_outputPayload_selValid_226 || _zz_s1_outputPayload_selValid_227) || _zz_s1_outputPayload_selValid_230) || _zz_s1_outputPayload_selValid_231) || _zz_s1_outputPayload_selValid_234) || _zz_s1_outputPayload_selValid_235) || _zz_s1_outputPayload_selValid_238) || _zz_s1_outputPayload_selValid_239);
+ assign _zz_s1_outputPayload_sel_15_2 = (((((((_zz_s1_outputPayload_selValid_228 || _zz_s1_outputPayload_selValid_229) || _zz_s1_outputPayload_selValid_230) || _zz_s1_outputPayload_selValid_231) || _zz_s1_outputPayload_selValid_236) || _zz_s1_outputPayload_selValid_237) || _zz_s1_outputPayload_selValid_238) || _zz_s1_outputPayload_selValid_239);
+ assign _zz_s1_outputPayload_sel_15_3 = (((((((_zz_s1_outputPayload_selValid_232 || _zz_s1_outputPayload_selValid_233) || _zz_s1_outputPayload_selValid_234) || _zz_s1_outputPayload_selValid_235) || _zz_s1_outputPayload_selValid_236) || _zz_s1_outputPayload_selValid_237) || _zz_s1_outputPayload_selValid_238) || _zz_s1_outputPayload_selValid_239);
+ assign s1_outputPayload_sel_15 = {_zz_s1_outputPayload_sel_15_3,{_zz_s1_outputPayload_sel_15_2,{_zz_s1_outputPayload_sel_15_1,_zz_s1_outputPayload_sel_15}}};
+ assign s1_output_valid = s1_input_valid;
+ assign s1_input_ready = s1_output_ready;
+ assign s1_output_payload_cmd_data = s1_outputPayload_cmd_data;
+ assign s1_output_payload_cmd_mask = s1_outputPayload_cmd_mask;
+ assign s1_output_payload_index_0 = s1_outputPayload_index_0;
+ assign s1_output_payload_index_1 = s1_outputPayload_index_1;
+ assign s1_output_payload_index_2 = s1_outputPayload_index_2;
+ assign s1_output_payload_index_3 = s1_outputPayload_index_3;
+ assign s1_output_payload_index_4 = s1_outputPayload_index_4;
+ assign s1_output_payload_index_5 = s1_outputPayload_index_5;
+ assign s1_output_payload_index_6 = s1_outputPayload_index_6;
+ assign s1_output_payload_index_7 = s1_outputPayload_index_7;
+ assign s1_output_payload_index_8 = s1_outputPayload_index_8;
+ assign s1_output_payload_index_9 = s1_outputPayload_index_9;
+ assign s1_output_payload_index_10 = s1_outputPayload_index_10;
+ assign s1_output_payload_index_11 = s1_outputPayload_index_11;
+ assign s1_output_payload_index_12 = s1_outputPayload_index_12;
+ assign s1_output_payload_index_13 = s1_outputPayload_index_13;
+ assign s1_output_payload_index_14 = s1_outputPayload_index_14;
+ assign s1_output_payload_index_15 = s1_outputPayload_index_15;
+ assign s1_output_payload_last = s1_outputPayload_last;
+ assign s1_output_payload_sel_0 = s1_outputPayload_sel_0;
+ assign s1_output_payload_sel_1 = s1_outputPayload_sel_1;
+ assign s1_output_payload_sel_2 = s1_outputPayload_sel_2;
+ assign s1_output_payload_sel_3 = s1_outputPayload_sel_3;
+ assign s1_output_payload_sel_4 = s1_outputPayload_sel_4;
+ assign s1_output_payload_sel_5 = s1_outputPayload_sel_5;
+ assign s1_output_payload_sel_6 = s1_outputPayload_sel_6;
+ assign s1_output_payload_sel_7 = s1_outputPayload_sel_7;
+ assign s1_output_payload_sel_8 = s1_outputPayload_sel_8;
+ assign s1_output_payload_sel_9 = s1_outputPayload_sel_9;
+ assign s1_output_payload_sel_10 = s1_outputPayload_sel_10;
+ assign s1_output_payload_sel_11 = s1_outputPayload_sel_11;
+ assign s1_output_payload_sel_12 = s1_outputPayload_sel_12;
+ assign s1_output_payload_sel_13 = s1_outputPayload_sel_13;
+ assign s1_output_payload_sel_14 = s1_outputPayload_sel_14;
+ assign s1_output_payload_sel_15 = s1_outputPayload_sel_15;
+ assign s1_output_payload_selValid = s1_outputPayload_selValid;
+ always @(*) begin
+ s1_output_ready = s2_input_ready;
+ if(when_Stream_l375_2) begin
+ s1_output_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375_2 = (! s2_input_valid);
+ assign s2_input_valid = s1_output_rValid;
+ assign s2_input_payload_cmd_data = s1_output_rData_cmd_data;
+ assign s2_input_payload_cmd_mask = s1_output_rData_cmd_mask;
+ assign s2_input_payload_index_0 = s1_output_rData_index_0;
+ assign s2_input_payload_index_1 = s1_output_rData_index_1;
+ assign s2_input_payload_index_2 = s1_output_rData_index_2;
+ assign s2_input_payload_index_3 = s1_output_rData_index_3;
+ assign s2_input_payload_index_4 = s1_output_rData_index_4;
+ assign s2_input_payload_index_5 = s1_output_rData_index_5;
+ assign s2_input_payload_index_6 = s1_output_rData_index_6;
+ assign s2_input_payload_index_7 = s1_output_rData_index_7;
+ assign s2_input_payload_index_8 = s1_output_rData_index_8;
+ assign s2_input_payload_index_9 = s1_output_rData_index_9;
+ assign s2_input_payload_index_10 = s1_output_rData_index_10;
+ assign s2_input_payload_index_11 = s1_output_rData_index_11;
+ assign s2_input_payload_index_12 = s1_output_rData_index_12;
+ assign s2_input_payload_index_13 = s1_output_rData_index_13;
+ assign s2_input_payload_index_14 = s1_output_rData_index_14;
+ assign s2_input_payload_index_15 = s1_output_rData_index_15;
+ assign s2_input_payload_last = s1_output_rData_last;
+ assign s2_input_payload_sel_0 = s1_output_rData_sel_0;
+ assign s2_input_payload_sel_1 = s1_output_rData_sel_1;
+ assign s2_input_payload_sel_2 = s1_output_rData_sel_2;
+ assign s2_input_payload_sel_3 = s1_output_rData_sel_3;
+ assign s2_input_payload_sel_4 = s1_output_rData_sel_4;
+ assign s2_input_payload_sel_5 = s1_output_rData_sel_5;
+ assign s2_input_payload_sel_6 = s1_output_rData_sel_6;
+ assign s2_input_payload_sel_7 = s1_output_rData_sel_7;
+ assign s2_input_payload_sel_8 = s1_output_rData_sel_8;
+ assign s2_input_payload_sel_9 = s1_output_rData_sel_9;
+ assign s2_input_payload_sel_10 = s1_output_rData_sel_10;
+ assign s2_input_payload_sel_11 = s1_output_rData_sel_11;
+ assign s2_input_payload_sel_12 = s1_output_rData_sel_12;
+ assign s2_input_payload_sel_13 = s1_output_rData_sel_13;
+ assign s2_input_payload_sel_14 = s1_output_rData_sel_14;
+ assign s2_input_payload_sel_15 = s1_output_rData_sel_15;
+ assign s2_input_payload_selValid = s1_output_rData_selValid;
+ always @(*) begin
+ s2_input_ready = ((! io_output_enough) || io_output_consume);
+ if(when_DmaSg_l1464) begin
+ s2_input_ready = 1'b0;
+ end
+ end
+
+ assign when_DmaSg_l1464 = (_zz_when_DmaSg_l1464 < s1_byteCounter);
+ assign s2_input_fire = (s2_input_valid && s2_input_ready);
+ assign io_output_consumed = s2_input_fire;
+ assign s2_inputDataBytes_0 = s2_input_payload_cmd_data[7 : 0];
+ assign s2_inputDataBytes_1 = s2_input_payload_cmd_data[15 : 8];
+ assign s2_inputDataBytes_2 = s2_input_payload_cmd_data[23 : 16];
+ assign s2_inputDataBytes_3 = s2_input_payload_cmd_data[31 : 24];
+ assign s2_inputDataBytes_4 = s2_input_payload_cmd_data[39 : 32];
+ assign s2_inputDataBytes_5 = s2_input_payload_cmd_data[47 : 40];
+ assign s2_inputDataBytes_6 = s2_input_payload_cmd_data[55 : 48];
+ assign s2_inputDataBytes_7 = s2_input_payload_cmd_data[63 : 56];
+ assign s2_inputDataBytes_8 = s2_input_payload_cmd_data[71 : 64];
+ assign s2_inputDataBytes_9 = s2_input_payload_cmd_data[79 : 72];
+ assign s2_inputDataBytes_10 = s2_input_payload_cmd_data[87 : 80];
+ assign s2_inputDataBytes_11 = s2_input_payload_cmd_data[95 : 88];
+ assign s2_inputDataBytes_12 = s2_input_payload_cmd_data[103 : 96];
+ assign s2_inputDataBytes_13 = s2_input_payload_cmd_data[111 : 104];
+ assign s2_inputDataBytes_14 = s2_input_payload_cmd_data[119 : 112];
+ assign s2_inputDataBytes_15 = s2_input_payload_cmd_data[127 : 120];
+ assign s2_byteLogic_0_lastUsed = (4'b0000 == io_output_lastByteUsed);
+ assign s2_byteLogic_0_inputMask = s2_input_payload_selValid[0];
+ assign s2_byteLogic_0_inputData = _zz_s2_byteLogic_0_inputData;
+ assign s2_byteLogic_0_outputMask = (s2_byteLogic_0_buffer_valid || (s2_input_valid && s2_byteLogic_0_inputMask));
+ assign s2_byteLogic_0_outputData = (s2_byteLogic_0_buffer_valid ? s2_byteLogic_0_buffer_data : s2_byteLogic_0_inputData);
+ always @(*) begin
+ io_output_mask[0] = s2_byteLogic_0_outputMask;
+ io_output_mask[1] = s2_byteLogic_1_outputMask;
+ io_output_mask[2] = s2_byteLogic_2_outputMask;
+ io_output_mask[3] = s2_byteLogic_3_outputMask;
+ io_output_mask[4] = s2_byteLogic_4_outputMask;
+ io_output_mask[5] = s2_byteLogic_5_outputMask;
+ io_output_mask[6] = s2_byteLogic_6_outputMask;
+ io_output_mask[7] = s2_byteLogic_7_outputMask;
+ io_output_mask[8] = s2_byteLogic_8_outputMask;
+ io_output_mask[9] = s2_byteLogic_9_outputMask;
+ io_output_mask[10] = s2_byteLogic_10_outputMask;
+ io_output_mask[11] = s2_byteLogic_11_outputMask;
+ io_output_mask[12] = s2_byteLogic_12_outputMask;
+ io_output_mask[13] = s2_byteLogic_13_outputMask;
+ io_output_mask[14] = s2_byteLogic_14_outputMask;
+ io_output_mask[15] = s2_byteLogic_15_outputMask;
+ end
+
+ always @(*) begin
+ io_output_data[7 : 0] = s2_byteLogic_0_outputData;
+ io_output_data[15 : 8] = s2_byteLogic_1_outputData;
+ io_output_data[23 : 16] = s2_byteLogic_2_outputData;
+ io_output_data[31 : 24] = s2_byteLogic_3_outputData;
+ io_output_data[39 : 32] = s2_byteLogic_4_outputData;
+ io_output_data[47 : 40] = s2_byteLogic_5_outputData;
+ io_output_data[55 : 48] = s2_byteLogic_6_outputData;
+ io_output_data[63 : 56] = s2_byteLogic_7_outputData;
+ io_output_data[71 : 64] = s2_byteLogic_8_outputData;
+ io_output_data[79 : 72] = s2_byteLogic_9_outputData;
+ io_output_data[87 : 80] = s2_byteLogic_10_outputData;
+ io_output_data[95 : 88] = s2_byteLogic_11_outputData;
+ io_output_data[103 : 96] = s2_byteLogic_12_outputData;
+ io_output_data[111 : 104] = s2_byteLogic_13_outputData;
+ io_output_data[119 : 112] = s2_byteLogic_14_outputData;
+ io_output_data[127 : 120] = s2_byteLogic_15_outputData;
+ end
+
+ assign when_DmaSg_l1493 = (s2_byteLogic_0_inputMask && ((! io_output_consume) || s2_byteLogic_0_buffer_valid));
+ assign s2_byteLogic_1_lastUsed = (4'b0001 == io_output_lastByteUsed);
+ assign s2_byteLogic_1_inputMask = s2_input_payload_selValid[1];
+ assign s2_byteLogic_1_inputData = _zz_s2_byteLogic_1_inputData;
+ assign s2_byteLogic_1_outputMask = (s2_byteLogic_1_buffer_valid || (s2_input_valid && s2_byteLogic_1_inputMask));
+ assign s2_byteLogic_1_outputData = (s2_byteLogic_1_buffer_valid ? s2_byteLogic_1_buffer_data : s2_byteLogic_1_inputData);
+ assign when_DmaSg_l1493_1 = (s2_byteLogic_1_inputMask && ((! io_output_consume) || s2_byteLogic_1_buffer_valid));
+ assign s2_byteLogic_2_lastUsed = (4'b0010 == io_output_lastByteUsed);
+ assign s2_byteLogic_2_inputMask = s2_input_payload_selValid[2];
+ assign s2_byteLogic_2_inputData = _zz_s2_byteLogic_2_inputData;
+ assign s2_byteLogic_2_outputMask = (s2_byteLogic_2_buffer_valid || (s2_input_valid && s2_byteLogic_2_inputMask));
+ assign s2_byteLogic_2_outputData = (s2_byteLogic_2_buffer_valid ? s2_byteLogic_2_buffer_data : s2_byteLogic_2_inputData);
+ assign when_DmaSg_l1493_2 = (s2_byteLogic_2_inputMask && ((! io_output_consume) || s2_byteLogic_2_buffer_valid));
+ assign s2_byteLogic_3_lastUsed = (4'b0011 == io_output_lastByteUsed);
+ assign s2_byteLogic_3_inputMask = s2_input_payload_selValid[3];
+ assign s2_byteLogic_3_inputData = _zz_s2_byteLogic_3_inputData;
+ assign s2_byteLogic_3_outputMask = (s2_byteLogic_3_buffer_valid || (s2_input_valid && s2_byteLogic_3_inputMask));
+ assign s2_byteLogic_3_outputData = (s2_byteLogic_3_buffer_valid ? s2_byteLogic_3_buffer_data : s2_byteLogic_3_inputData);
+ assign when_DmaSg_l1493_3 = (s2_byteLogic_3_inputMask && ((! io_output_consume) || s2_byteLogic_3_buffer_valid));
+ assign s2_byteLogic_4_lastUsed = (4'b0100 == io_output_lastByteUsed);
+ assign s2_byteLogic_4_inputMask = s2_input_payload_selValid[4];
+ assign s2_byteLogic_4_inputData = _zz_s2_byteLogic_4_inputData;
+ assign s2_byteLogic_4_outputMask = (s2_byteLogic_4_buffer_valid || (s2_input_valid && s2_byteLogic_4_inputMask));
+ assign s2_byteLogic_4_outputData = (s2_byteLogic_4_buffer_valid ? s2_byteLogic_4_buffer_data : s2_byteLogic_4_inputData);
+ assign when_DmaSg_l1493_4 = (s2_byteLogic_4_inputMask && ((! io_output_consume) || s2_byteLogic_4_buffer_valid));
+ assign s2_byteLogic_5_lastUsed = (4'b0101 == io_output_lastByteUsed);
+ assign s2_byteLogic_5_inputMask = s2_input_payload_selValid[5];
+ assign s2_byteLogic_5_inputData = _zz_s2_byteLogic_5_inputData;
+ assign s2_byteLogic_5_outputMask = (s2_byteLogic_5_buffer_valid || (s2_input_valid && s2_byteLogic_5_inputMask));
+ assign s2_byteLogic_5_outputData = (s2_byteLogic_5_buffer_valid ? s2_byteLogic_5_buffer_data : s2_byteLogic_5_inputData);
+ assign when_DmaSg_l1493_5 = (s2_byteLogic_5_inputMask && ((! io_output_consume) || s2_byteLogic_5_buffer_valid));
+ assign s2_byteLogic_6_lastUsed = (4'b0110 == io_output_lastByteUsed);
+ assign s2_byteLogic_6_inputMask = s2_input_payload_selValid[6];
+ assign s2_byteLogic_6_inputData = _zz_s2_byteLogic_6_inputData;
+ assign s2_byteLogic_6_outputMask = (s2_byteLogic_6_buffer_valid || (s2_input_valid && s2_byteLogic_6_inputMask));
+ assign s2_byteLogic_6_outputData = (s2_byteLogic_6_buffer_valid ? s2_byteLogic_6_buffer_data : s2_byteLogic_6_inputData);
+ assign when_DmaSg_l1493_6 = (s2_byteLogic_6_inputMask && ((! io_output_consume) || s2_byteLogic_6_buffer_valid));
+ assign s2_byteLogic_7_lastUsed = (4'b0111 == io_output_lastByteUsed);
+ assign s2_byteLogic_7_inputMask = s2_input_payload_selValid[7];
+ assign s2_byteLogic_7_inputData = _zz_s2_byteLogic_7_inputData;
+ assign s2_byteLogic_7_outputMask = (s2_byteLogic_7_buffer_valid || (s2_input_valid && s2_byteLogic_7_inputMask));
+ assign s2_byteLogic_7_outputData = (s2_byteLogic_7_buffer_valid ? s2_byteLogic_7_buffer_data : s2_byteLogic_7_inputData);
+ assign when_DmaSg_l1493_7 = (s2_byteLogic_7_inputMask && ((! io_output_consume) || s2_byteLogic_7_buffer_valid));
+ assign s2_byteLogic_8_lastUsed = (4'b1000 == io_output_lastByteUsed);
+ assign s2_byteLogic_8_inputMask = s2_input_payload_selValid[8];
+ assign s2_byteLogic_8_inputData = _zz_s2_byteLogic_8_inputData;
+ assign s2_byteLogic_8_outputMask = (s2_byteLogic_8_buffer_valid || (s2_input_valid && s2_byteLogic_8_inputMask));
+ assign s2_byteLogic_8_outputData = (s2_byteLogic_8_buffer_valid ? s2_byteLogic_8_buffer_data : s2_byteLogic_8_inputData);
+ assign when_DmaSg_l1493_8 = (s2_byteLogic_8_inputMask && ((! io_output_consume) || s2_byteLogic_8_buffer_valid));
+ assign s2_byteLogic_9_lastUsed = (4'b1001 == io_output_lastByteUsed);
+ assign s2_byteLogic_9_inputMask = s2_input_payload_selValid[9];
+ assign s2_byteLogic_9_inputData = _zz_s2_byteLogic_9_inputData;
+ assign s2_byteLogic_9_outputMask = (s2_byteLogic_9_buffer_valid || (s2_input_valid && s2_byteLogic_9_inputMask));
+ assign s2_byteLogic_9_outputData = (s2_byteLogic_9_buffer_valid ? s2_byteLogic_9_buffer_data : s2_byteLogic_9_inputData);
+ assign when_DmaSg_l1493_9 = (s2_byteLogic_9_inputMask && ((! io_output_consume) || s2_byteLogic_9_buffer_valid));
+ assign s2_byteLogic_10_lastUsed = (4'b1010 == io_output_lastByteUsed);
+ assign s2_byteLogic_10_inputMask = s2_input_payload_selValid[10];
+ assign s2_byteLogic_10_inputData = _zz_s2_byteLogic_10_inputData;
+ assign s2_byteLogic_10_outputMask = (s2_byteLogic_10_buffer_valid || (s2_input_valid && s2_byteLogic_10_inputMask));
+ assign s2_byteLogic_10_outputData = (s2_byteLogic_10_buffer_valid ? s2_byteLogic_10_buffer_data : s2_byteLogic_10_inputData);
+ assign when_DmaSg_l1493_10 = (s2_byteLogic_10_inputMask && ((! io_output_consume) || s2_byteLogic_10_buffer_valid));
+ assign s2_byteLogic_11_lastUsed = (4'b1011 == io_output_lastByteUsed);
+ assign s2_byteLogic_11_inputMask = s2_input_payload_selValid[11];
+ assign s2_byteLogic_11_inputData = _zz_s2_byteLogic_11_inputData;
+ assign s2_byteLogic_11_outputMask = (s2_byteLogic_11_buffer_valid || (s2_input_valid && s2_byteLogic_11_inputMask));
+ assign s2_byteLogic_11_outputData = (s2_byteLogic_11_buffer_valid ? s2_byteLogic_11_buffer_data : s2_byteLogic_11_inputData);
+ assign when_DmaSg_l1493_11 = (s2_byteLogic_11_inputMask && ((! io_output_consume) || s2_byteLogic_11_buffer_valid));
+ assign s2_byteLogic_12_lastUsed = (4'b1100 == io_output_lastByteUsed);
+ assign s2_byteLogic_12_inputMask = s2_input_payload_selValid[12];
+ assign s2_byteLogic_12_inputData = _zz_s2_byteLogic_12_inputData;
+ assign s2_byteLogic_12_outputMask = (s2_byteLogic_12_buffer_valid || (s2_input_valid && s2_byteLogic_12_inputMask));
+ assign s2_byteLogic_12_outputData = (s2_byteLogic_12_buffer_valid ? s2_byteLogic_12_buffer_data : s2_byteLogic_12_inputData);
+ assign when_DmaSg_l1493_12 = (s2_byteLogic_12_inputMask && ((! io_output_consume) || s2_byteLogic_12_buffer_valid));
+ assign s2_byteLogic_13_lastUsed = (4'b1101 == io_output_lastByteUsed);
+ assign s2_byteLogic_13_inputMask = s2_input_payload_selValid[13];
+ assign s2_byteLogic_13_inputData = _zz_s2_byteLogic_13_inputData;
+ assign s2_byteLogic_13_outputMask = (s2_byteLogic_13_buffer_valid || (s2_input_valid && s2_byteLogic_13_inputMask));
+ assign s2_byteLogic_13_outputData = (s2_byteLogic_13_buffer_valid ? s2_byteLogic_13_buffer_data : s2_byteLogic_13_inputData);
+ assign when_DmaSg_l1493_13 = (s2_byteLogic_13_inputMask && ((! io_output_consume) || s2_byteLogic_13_buffer_valid));
+ assign s2_byteLogic_14_lastUsed = (4'b1110 == io_output_lastByteUsed);
+ assign s2_byteLogic_14_inputMask = s2_input_payload_selValid[14];
+ assign s2_byteLogic_14_inputData = _zz_s2_byteLogic_14_inputData;
+ assign s2_byteLogic_14_outputMask = (s2_byteLogic_14_buffer_valid || (s2_input_valid && s2_byteLogic_14_inputMask));
+ assign s2_byteLogic_14_outputData = (s2_byteLogic_14_buffer_valid ? s2_byteLogic_14_buffer_data : s2_byteLogic_14_inputData);
+ assign when_DmaSg_l1493_14 = (s2_byteLogic_14_inputMask && ((! io_output_consume) || s2_byteLogic_14_buffer_valid));
+ assign s2_byteLogic_15_lastUsed = (4'b1111 == io_output_lastByteUsed);
+ assign s2_byteLogic_15_inputMask = s2_input_payload_selValid[15];
+ assign s2_byteLogic_15_inputData = _zz_s2_byteLogic_15_inputData;
+ assign s2_byteLogic_15_outputMask = (s2_byteLogic_15_buffer_valid || (s2_input_valid && s2_byteLogic_15_inputMask));
+ assign s2_byteLogic_15_outputData = (s2_byteLogic_15_buffer_valid ? s2_byteLogic_15_buffer_data : s2_byteLogic_15_inputData);
+ assign when_DmaSg_l1493_15 = (s2_byteLogic_15_inputMask && ((! io_output_consume) || s2_byteLogic_15_buffer_valid));
+ assign _zz_io_output_usedUntil = (((((((s2_byteLogic_1_lastUsed || s2_byteLogic_3_lastUsed) || s2_byteLogic_5_lastUsed) || s2_byteLogic_7_lastUsed) || s2_byteLogic_9_lastUsed) || s2_byteLogic_11_lastUsed) || s2_byteLogic_13_lastUsed) || s2_byteLogic_15_lastUsed);
+ assign _zz_io_output_usedUntil_1 = (((((((s2_byteLogic_2_lastUsed || s2_byteLogic_3_lastUsed) || s2_byteLogic_6_lastUsed) || s2_byteLogic_7_lastUsed) || s2_byteLogic_10_lastUsed) || s2_byteLogic_11_lastUsed) || s2_byteLogic_14_lastUsed) || s2_byteLogic_15_lastUsed);
+ assign _zz_io_output_usedUntil_2 = (((((((s2_byteLogic_4_lastUsed || s2_byteLogic_5_lastUsed) || s2_byteLogic_6_lastUsed) || s2_byteLogic_7_lastUsed) || s2_byteLogic_12_lastUsed) || s2_byteLogic_13_lastUsed) || s2_byteLogic_14_lastUsed) || s2_byteLogic_15_lastUsed);
+ assign _zz_io_output_usedUntil_3 = (((((((s2_byteLogic_8_lastUsed || s2_byteLogic_9_lastUsed) || s2_byteLogic_10_lastUsed) || s2_byteLogic_11_lastUsed) || s2_byteLogic_12_lastUsed) || s2_byteLogic_13_lastUsed) || s2_byteLogic_14_lastUsed) || s2_byteLogic_15_lastUsed);
+ assign io_output_usedUntil = _zz_io_output_usedUntil_4;
+ always @(posedge clk) begin
+ if(reset) begin
+ io_input_rValid <= 1'b0;
+ s0_output_rValid <= 1'b0;
+ s1_output_rValid <= 1'b0;
+ end else begin
+ if(io_input_ready) begin
+ io_input_rValid <= io_input_valid;
+ end
+ if(io_flush) begin
+ io_input_rValid <= 1'b0;
+ end
+ if(s0_output_ready) begin
+ s0_output_rValid <= s0_output_valid;
+ end
+ if(io_flush) begin
+ s0_output_rValid <= 1'b0;
+ end
+ if(s1_output_ready) begin
+ s1_output_rValid <= s1_output_valid;
+ end
+ if(io_flush) begin
+ s1_output_rValid <= 1'b0;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_input_ready) begin
+ io_input_rData_data <= io_input_payload_data;
+ io_input_rData_mask <= io_input_payload_mask;
+ end
+ if(s0_output_ready) begin
+ s0_output_rData_cmd_data <= s0_output_payload_cmd_data;
+ s0_output_rData_cmd_mask <= s0_output_payload_cmd_mask;
+ s0_output_rData_countOnes_0 <= s0_output_payload_countOnes_0;
+ s0_output_rData_countOnes_1 <= s0_output_payload_countOnes_1;
+ s0_output_rData_countOnes_2 <= s0_output_payload_countOnes_2;
+ s0_output_rData_countOnes_3 <= s0_output_payload_countOnes_3;
+ s0_output_rData_countOnes_4 <= s0_output_payload_countOnes_4;
+ s0_output_rData_countOnes_5 <= s0_output_payload_countOnes_5;
+ s0_output_rData_countOnes_6 <= s0_output_payload_countOnes_6;
+ s0_output_rData_countOnes_7 <= s0_output_payload_countOnes_7;
+ s0_output_rData_countOnes_8 <= s0_output_payload_countOnes_8;
+ s0_output_rData_countOnes_9 <= s0_output_payload_countOnes_9;
+ s0_output_rData_countOnes_10 <= s0_output_payload_countOnes_10;
+ s0_output_rData_countOnes_11 <= s0_output_payload_countOnes_11;
+ s0_output_rData_countOnes_12 <= s0_output_payload_countOnes_12;
+ s0_output_rData_countOnes_13 <= s0_output_payload_countOnes_13;
+ s0_output_rData_countOnes_14 <= s0_output_payload_countOnes_14;
+ s0_output_rData_countOnes_15 <= s0_output_payload_countOnes_15;
+ end
+ if(s1_input_fire) begin
+ s1_offset <= s1_offsetNext[3:0];
+ end
+ if(io_flush) begin
+ s1_offset <= io_offset;
+ end
+ if(s1_input_fire) begin
+ s1_byteCounter <= (s1_byteCounter + _zz_s1_byteCounter);
+ end
+ if(io_flush) begin
+ s1_byteCounter <= 13'h0;
+ end
+ if(s1_output_ready) begin
+ s1_output_rData_cmd_data <= s1_output_payload_cmd_data;
+ s1_output_rData_cmd_mask <= s1_output_payload_cmd_mask;
+ s1_output_rData_index_0 <= s1_output_payload_index_0;
+ s1_output_rData_index_1 <= s1_output_payload_index_1;
+ s1_output_rData_index_2 <= s1_output_payload_index_2;
+ s1_output_rData_index_3 <= s1_output_payload_index_3;
+ s1_output_rData_index_4 <= s1_output_payload_index_4;
+ s1_output_rData_index_5 <= s1_output_payload_index_5;
+ s1_output_rData_index_6 <= s1_output_payload_index_6;
+ s1_output_rData_index_7 <= s1_output_payload_index_7;
+ s1_output_rData_index_8 <= s1_output_payload_index_8;
+ s1_output_rData_index_9 <= s1_output_payload_index_9;
+ s1_output_rData_index_10 <= s1_output_payload_index_10;
+ s1_output_rData_index_11 <= s1_output_payload_index_11;
+ s1_output_rData_index_12 <= s1_output_payload_index_12;
+ s1_output_rData_index_13 <= s1_output_payload_index_13;
+ s1_output_rData_index_14 <= s1_output_payload_index_14;
+ s1_output_rData_index_15 <= s1_output_payload_index_15;
+ s1_output_rData_last <= s1_output_payload_last;
+ s1_output_rData_sel_0 <= s1_output_payload_sel_0;
+ s1_output_rData_sel_1 <= s1_output_payload_sel_1;
+ s1_output_rData_sel_2 <= s1_output_payload_sel_2;
+ s1_output_rData_sel_3 <= s1_output_payload_sel_3;
+ s1_output_rData_sel_4 <= s1_output_payload_sel_4;
+ s1_output_rData_sel_5 <= s1_output_payload_sel_5;
+ s1_output_rData_sel_6 <= s1_output_payload_sel_6;
+ s1_output_rData_sel_7 <= s1_output_payload_sel_7;
+ s1_output_rData_sel_8 <= s1_output_payload_sel_8;
+ s1_output_rData_sel_9 <= s1_output_payload_sel_9;
+ s1_output_rData_sel_10 <= s1_output_payload_sel_10;
+ s1_output_rData_sel_11 <= s1_output_payload_sel_11;
+ s1_output_rData_sel_12 <= s1_output_payload_sel_12;
+ s1_output_rData_sel_13 <= s1_output_payload_sel_13;
+ s1_output_rData_sel_14 <= s1_output_payload_sel_14;
+ s1_output_rData_sel_15 <= s1_output_payload_sel_15;
+ s1_output_rData_selValid <= s1_output_payload_selValid;
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_0_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_0_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493) begin
+ s2_byteLogic_0_buffer_valid <= 1'b1;
+ s2_byteLogic_0_buffer_data <= s2_byteLogic_0_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_0_buffer_valid <= (4'b0000 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_1_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_1_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_1) begin
+ s2_byteLogic_1_buffer_valid <= 1'b1;
+ s2_byteLogic_1_buffer_data <= s2_byteLogic_1_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_1_buffer_valid <= (4'b0001 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_2_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_2_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_2) begin
+ s2_byteLogic_2_buffer_valid <= 1'b1;
+ s2_byteLogic_2_buffer_data <= s2_byteLogic_2_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_2_buffer_valid <= (4'b0010 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_3_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_3_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_3) begin
+ s2_byteLogic_3_buffer_valid <= 1'b1;
+ s2_byteLogic_3_buffer_data <= s2_byteLogic_3_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_3_buffer_valid <= (4'b0011 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_4_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_4_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_4) begin
+ s2_byteLogic_4_buffer_valid <= 1'b1;
+ s2_byteLogic_4_buffer_data <= s2_byteLogic_4_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_4_buffer_valid <= (4'b0100 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_5_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_5_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_5) begin
+ s2_byteLogic_5_buffer_valid <= 1'b1;
+ s2_byteLogic_5_buffer_data <= s2_byteLogic_5_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_5_buffer_valid <= (4'b0101 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_6_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_6_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_6) begin
+ s2_byteLogic_6_buffer_valid <= 1'b1;
+ s2_byteLogic_6_buffer_data <= s2_byteLogic_6_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_6_buffer_valid <= (4'b0110 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_7_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_7_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_7) begin
+ s2_byteLogic_7_buffer_valid <= 1'b1;
+ s2_byteLogic_7_buffer_data <= s2_byteLogic_7_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_7_buffer_valid <= (4'b0111 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_8_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_8_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_8) begin
+ s2_byteLogic_8_buffer_valid <= 1'b1;
+ s2_byteLogic_8_buffer_data <= s2_byteLogic_8_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_8_buffer_valid <= (4'b1000 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_9_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_9_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_9) begin
+ s2_byteLogic_9_buffer_valid <= 1'b1;
+ s2_byteLogic_9_buffer_data <= s2_byteLogic_9_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_9_buffer_valid <= (4'b1001 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_10_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_10_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_10) begin
+ s2_byteLogic_10_buffer_valid <= 1'b1;
+ s2_byteLogic_10_buffer_data <= s2_byteLogic_10_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_10_buffer_valid <= (4'b1010 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_11_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_11_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_11) begin
+ s2_byteLogic_11_buffer_valid <= 1'b1;
+ s2_byteLogic_11_buffer_data <= s2_byteLogic_11_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_11_buffer_valid <= (4'b1011 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_12_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_12_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_12) begin
+ s2_byteLogic_12_buffer_valid <= 1'b1;
+ s2_byteLogic_12_buffer_data <= s2_byteLogic_12_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_12_buffer_valid <= (4'b1100 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_13_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_13_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_13) begin
+ s2_byteLogic_13_buffer_valid <= 1'b1;
+ s2_byteLogic_13_buffer_data <= s2_byteLogic_13_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_13_buffer_valid <= (4'b1101 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_14_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_14_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_14) begin
+ s2_byteLogic_14_buffer_valid <= 1'b1;
+ s2_byteLogic_14_buffer_data <= s2_byteLogic_14_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_14_buffer_valid <= (4'b1110 < io_offset);
+ end
+ if(io_output_consume) begin
+ s2_byteLogic_15_buffer_valid <= 1'b0;
+ end
+ if(s2_input_fire) begin
+ if(s2_input_payload_last) begin
+ s2_byteLogic_15_buffer_valid <= 1'b0;
+ end
+ if(when_DmaSg_l1493_15) begin
+ s2_byteLogic_15_buffer_valid <= 1'b1;
+ s2_byteLogic_15_buffer_data <= s2_byteLogic_15_inputData;
+ end
+ end
+ if(io_flush) begin
+ s2_byteLogic_15_buffer_valid <= (4'b1111 < io_offset);
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_DmaMemoryCore (
+ input wire io_writes_0_cmd_valid,
+ output wire io_writes_0_cmd_ready,
+ input wire [9:0] io_writes_0_cmd_payload_address,
+ input wire [63:0] io_writes_0_cmd_payload_data,
+ input wire [7:0] io_writes_0_cmd_payload_mask,
+ input wire [1:0] io_writes_0_cmd_payload_priority,
+ input wire [6:0] io_writes_0_cmd_payload_context,
+ output wire io_writes_0_rsp_valid,
+ output wire [6:0] io_writes_0_rsp_payload_context,
+ input wire io_writes_1_cmd_valid,
+ output wire io_writes_1_cmd_ready,
+ input wire [9:0] io_writes_1_cmd_payload_address,
+ input wire [127:0] io_writes_1_cmd_payload_data,
+ input wire [15:0] io_writes_1_cmd_payload_mask,
+ input wire [6:0] io_writes_1_cmd_payload_context,
+ output wire io_writes_1_rsp_valid,
+ output wire [6:0] io_writes_1_rsp_payload_context,
+ input wire io_reads_0_cmd_valid,
+ output wire io_reads_0_cmd_ready,
+ input wire [9:0] io_reads_0_cmd_payload_address,
+ input wire [1:0] io_reads_0_cmd_payload_priority,
+ input wire [2:0] io_reads_0_cmd_payload_context,
+ output wire io_reads_0_rsp_valid,
+ input wire io_reads_0_rsp_ready,
+ output wire [63:0] io_reads_0_rsp_payload_data,
+ output wire [7:0] io_reads_0_rsp_payload_mask,
+ output wire [2:0] io_reads_0_rsp_payload_context,
+ input wire io_reads_1_cmd_valid,
+ output wire io_reads_1_cmd_ready,
+ input wire [9:0] io_reads_1_cmd_payload_address,
+ input wire [11:0] io_reads_1_cmd_payload_context,
+ output wire io_reads_1_rsp_valid,
+ input wire io_reads_1_rsp_ready,
+ output wire [127:0] io_reads_1_rsp_payload_data,
+ output wire [15:0] io_reads_1_rsp_payload_mask,
+ output wire [11:0] io_reads_1_rsp_payload_context,
+ input wire clk,
+ input wire reset
+);
+
+ reg [71:0] banks_0_ram_spinal_port1;
+ reg [71:0] banks_1_ram_spinal_port1;
+ wire [71:0] _zz_banks_0_ram_port;
+ wire [71:0] _zz_banks_1_ram_port;
+ wire [3:0] _zz_write_ports_0_priority_value;
+ wire [9:0] _zz_when_MemoryCore_l136;
+ wire [9:0] _zz_when_MemoryCore_l136_1;
+ reg [63:0] _zz_read_ports_0_buffer_bufferIn_payload_data;
+ reg [7:0] _zz_read_ports_0_buffer_bufferIn_payload_mask;
+ wire [3:0] _zz_read_ports_0_priority_value;
+ wire [9:0] _zz_when_MemoryCore_l221;
+ wire [9:0] _zz_when_MemoryCore_l221_1;
+ reg _zz_1;
+ reg _zz_2;
+ reg banks_0_write_valid;
+ reg [8:0] banks_0_write_payload_address;
+ reg [63:0] banks_0_write_payload_data_data;
+ reg [7:0] banks_0_write_payload_data_mask;
+ wire banks_0_read_cmd_valid;
+ wire [8:0] banks_0_read_cmd_payload;
+ wire [63:0] banks_0_read_rsp_data;
+ wire [7:0] banks_0_read_rsp_mask;
+ wire [71:0] _zz_banks_0_read_rsp_data;
+ wire banks_0_writeOr_value_valid;
+ wire [8:0] banks_0_writeOr_value_payload_address;
+ wire [63:0] banks_0_writeOr_value_payload_data_data;
+ wire [7:0] banks_0_writeOr_value_payload_data_mask;
+ wire banks_0_readOr_value_valid;
+ wire [8:0] banks_0_readOr_value_payload;
+ reg banks_1_write_valid;
+ reg [8:0] banks_1_write_payload_address;
+ reg [63:0] banks_1_write_payload_data_data;
+ reg [7:0] banks_1_write_payload_data_mask;
+ wire banks_1_read_cmd_valid;
+ wire [8:0] banks_1_read_cmd_payload;
+ wire [63:0] banks_1_read_rsp_data;
+ wire [7:0] banks_1_read_rsp_mask;
+ wire [71:0] _zz_banks_1_read_rsp_data;
+ wire banks_1_writeOr_value_valid;
+ wire [8:0] banks_1_writeOr_value_payload_address;
+ wire [63:0] banks_1_writeOr_value_payload_data_data;
+ wire [7:0] banks_1_writeOr_value_payload_data_mask;
+ wire banks_1_readOr_value_valid;
+ wire [8:0] banks_1_readOr_value_payload;
+ reg [3:0] write_ports_0_priority_value;
+ wire write_nodes_0_0_priority;
+ wire write_nodes_0_0_conflict;
+ wire write_nodes_0_1_priority;
+ wire write_nodes_0_1_conflict;
+ wire write_nodes_1_0_priority;
+ wire write_nodes_1_0_conflict;
+ wire write_nodes_1_1_priority;
+ wire write_nodes_1_1_conflict;
+ wire [0:0] write_arbiter_0_losedAgainst;
+ reg write_arbiter_0_doIt;
+ reg _zz_banks_0_writeOr_value_valid;
+ reg [8:0] _zz_banks_0_writeOr_value_valid_1;
+ reg [63:0] _zz_banks_0_writeOr_value_valid_2;
+ reg [7:0] _zz_banks_0_writeOr_value_valid_3;
+ wire when_MemoryCore_l136;
+ reg _zz_banks_1_writeOr_value_valid;
+ reg [8:0] _zz_banks_1_writeOr_value_valid_1;
+ reg [63:0] _zz_banks_1_writeOr_value_valid_2;
+ reg [7:0] _zz_banks_1_writeOr_value_valid_3;
+ wire when_MemoryCore_l136_1;
+ reg write_arbiter_0_doIt_regNext;
+ reg [6:0] io_writes_0_cmd_payload_context_regNext;
+ wire [0:0] write_arbiter_1_losedAgainst;
+ reg write_arbiter_1_doIt;
+ reg _zz_banks_0_writeOr_value_valid_4;
+ reg [8:0] _zz_banks_0_writeOr_value_valid_5;
+ reg [63:0] _zz_banks_0_writeOr_value_valid_6;
+ reg [7:0] _zz_banks_0_writeOr_value_valid_7;
+ wire when_MemoryCore_l136_2;
+ reg _zz_banks_1_writeOr_value_valid_4;
+ reg [8:0] _zz_banks_1_writeOr_value_valid_5;
+ reg [63:0] _zz_banks_1_writeOr_value_valid_6;
+ reg [7:0] _zz_banks_1_writeOr_value_valid_7;
+ wire when_MemoryCore_l136_3;
+ reg write_arbiter_1_doIt_regNext;
+ reg [6:0] io_writes_1_cmd_payload_context_regNext;
+ wire read_ports_0_buffer_s0_valid;
+ wire [2:0] read_ports_0_buffer_s0_payload_context;
+ wire [9:0] read_ports_0_buffer_s0_payload_address;
+ reg read_ports_0_buffer_s1_valid;
+ reg [2:0] read_ports_0_buffer_s1_payload_context;
+ reg [9:0] read_ports_0_buffer_s1_payload_address;
+ wire [0:0] read_ports_0_buffer_groupSel;
+ wire read_ports_0_buffer_bufferIn_valid;
+ wire read_ports_0_buffer_bufferIn_ready;
+ wire [63:0] read_ports_0_buffer_bufferIn_payload_data;
+ wire [7:0] read_ports_0_buffer_bufferIn_payload_mask;
+ wire [2:0] read_ports_0_buffer_bufferIn_payload_context;
+ wire read_ports_0_buffer_bufferOut_valid;
+ wire read_ports_0_buffer_bufferOut_ready;
+ wire [63:0] read_ports_0_buffer_bufferOut_payload_data;
+ wire [7:0] read_ports_0_buffer_bufferOut_payload_mask;
+ wire [2:0] read_ports_0_buffer_bufferOut_payload_context;
+ reg read_ports_0_buffer_bufferIn_rValidN;
+ reg [63:0] read_ports_0_buffer_bufferIn_rData_data;
+ reg [7:0] read_ports_0_buffer_bufferIn_rData_mask;
+ reg [2:0] read_ports_0_buffer_bufferIn_rData_context;
+ wire read_ports_0_buffer_full;
+ wire _zz_io_reads_0_cmd_ready;
+ wire read_ports_0_cmd_valid;
+ wire read_ports_0_cmd_ready;
+ wire [9:0] read_ports_0_cmd_payload_address;
+ wire [1:0] read_ports_0_cmd_payload_priority;
+ wire [2:0] read_ports_0_cmd_payload_context;
+ reg [3:0] read_ports_0_priority_value;
+ wire read_ports_1_buffer_s0_valid;
+ wire [11:0] read_ports_1_buffer_s0_payload_context;
+ wire [9:0] read_ports_1_buffer_s0_payload_address;
+ reg read_ports_1_buffer_s1_valid;
+ reg [11:0] read_ports_1_buffer_s1_payload_context;
+ reg [9:0] read_ports_1_buffer_s1_payload_address;
+ wire read_ports_1_buffer_bufferIn_valid;
+ wire read_ports_1_buffer_bufferIn_ready;
+ wire [127:0] read_ports_1_buffer_bufferIn_payload_data;
+ wire [15:0] read_ports_1_buffer_bufferIn_payload_mask;
+ wire [11:0] read_ports_1_buffer_bufferIn_payload_context;
+ wire read_ports_1_buffer_bufferOut_valid;
+ wire read_ports_1_buffer_bufferOut_ready;
+ wire [127:0] read_ports_1_buffer_bufferOut_payload_data;
+ wire [15:0] read_ports_1_buffer_bufferOut_payload_mask;
+ wire [11:0] read_ports_1_buffer_bufferOut_payload_context;
+ reg read_ports_1_buffer_bufferIn_rValidN;
+ reg [127:0] read_ports_1_buffer_bufferIn_rData_data;
+ reg [15:0] read_ports_1_buffer_bufferIn_rData_mask;
+ reg [11:0] read_ports_1_buffer_bufferIn_rData_context;
+ wire read_ports_1_buffer_full;
+ wire _zz_io_reads_1_cmd_ready;
+ wire read_ports_1_cmd_valid;
+ wire read_ports_1_cmd_ready;
+ wire [9:0] read_ports_1_cmd_payload_address;
+ wire [11:0] read_ports_1_cmd_payload_context;
+ wire read_nodes_0_0_priority;
+ wire read_nodes_0_0_conflict;
+ wire read_nodes_0_1_priority;
+ wire read_nodes_0_1_conflict;
+ wire read_nodes_1_0_priority;
+ wire read_nodes_1_0_conflict;
+ wire read_nodes_1_1_priority;
+ wire read_nodes_1_1_conflict;
+ wire [0:0] read_arbiter_0_losedAgainst;
+ wire read_arbiter_0_doIt;
+ reg _zz_banks_0_readOr_value_valid;
+ reg [8:0] _zz_banks_0_readOr_value_valid_1;
+ wire when_MemoryCore_l221;
+ reg _zz_banks_1_readOr_value_valid;
+ reg [8:0] _zz_banks_1_readOr_value_valid_1;
+ wire when_MemoryCore_l221_1;
+ wire [0:0] read_arbiter_1_losedAgainst;
+ wire read_arbiter_1_doIt;
+ reg _zz_banks_0_readOr_value_valid_2;
+ reg [8:0] _zz_banks_0_readOr_value_valid_3;
+ wire when_MemoryCore_l221_2;
+ reg _zz_banks_1_readOr_value_valid_2;
+ reg [8:0] _zz_banks_1_readOr_value_valid_3;
+ wire when_MemoryCore_l221_3;
+ reg [9:0] initialiser_counter;
+ wire initialiser_done;
+ wire when_MemoryCore_l239;
+ wire [71:0] _zz_banks_0_write_payload_data_data;
+ wire [71:0] _zz_banks_1_write_payload_data_data;
+ wire [81:0] _zz_banks_0_writeOr_value_valid_8;
+ wire [80:0] _zz_banks_0_writeOr_value_payload_address;
+ wire [71:0] _zz_banks_0_writeOr_value_payload_data_data;
+ wire [9:0] _zz_banks_0_readOr_value_valid_4;
+ wire [81:0] _zz_banks_1_writeOr_value_valid_8;
+ wire [80:0] _zz_banks_1_writeOr_value_payload_address;
+ wire [71:0] _zz_banks_1_writeOr_value_payload_data_data;
+ wire [9:0] _zz_banks_1_readOr_value_valid_4;
+ (* ram_style = "block" *) reg [71:0] banks_0_ram [0:511];
+ (* ram_style = "block" *) reg [71:0] banks_1_ram [0:511];
+
+ assign _zz_write_ports_0_priority_value = {2'd0, io_writes_0_cmd_payload_priority};
+ assign _zz_when_MemoryCore_l136 = (io_writes_0_cmd_payload_address ^ 10'h0);
+ assign _zz_when_MemoryCore_l136_1 = (io_writes_0_cmd_payload_address ^ 10'h001);
+ assign _zz_read_ports_0_priority_value = {2'd0, read_ports_0_cmd_payload_priority};
+ assign _zz_when_MemoryCore_l221 = (read_ports_0_cmd_payload_address ^ 10'h0);
+ assign _zz_when_MemoryCore_l221_1 = (read_ports_0_cmd_payload_address ^ 10'h001);
+ assign _zz_banks_0_ram_port = {banks_0_write_payload_data_mask,banks_0_write_payload_data_data};
+ assign _zz_banks_1_ram_port = {banks_1_write_payload_data_mask,banks_1_write_payload_data_data};
+ always @(posedge clk) begin
+ if(_zz_2) begin
+ banks_0_ram[banks_0_write_payload_address] <= _zz_banks_0_ram_port;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(banks_0_read_cmd_valid) begin
+ banks_0_ram_spinal_port1 <= banks_0_ram[banks_0_read_cmd_payload];
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ banks_1_ram[banks_1_write_payload_address] <= _zz_banks_1_ram_port;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(banks_1_read_cmd_valid) begin
+ banks_1_ram_spinal_port1 <= banks_1_ram[banks_1_read_cmd_payload];
+ end
+ end
+
+ initial begin
+ `ifndef SYNTHESIS
+ write_ports_0_priority_value = {$urandom};
+ read_ports_0_priority_value = {$urandom};
+ `endif
+ end
+
+ always @(*) begin
+ case(read_ports_0_buffer_groupSel)
+ 1'b0 : begin
+ _zz_read_ports_0_buffer_bufferIn_payload_data = banks_0_read_rsp_data;
+ _zz_read_ports_0_buffer_bufferIn_payload_mask = banks_0_read_rsp_mask;
+ end
+ default : begin
+ _zz_read_ports_0_buffer_bufferIn_payload_data = banks_1_read_rsp_data;
+ _zz_read_ports_0_buffer_bufferIn_payload_mask = banks_1_read_rsp_mask;
+ end
+ endcase
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(banks_1_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ _zz_2 = 1'b0;
+ if(banks_0_write_valid) begin
+ _zz_2 = 1'b1;
+ end
+ end
+
+ assign _zz_banks_0_read_rsp_data = banks_0_ram_spinal_port1;
+ assign banks_0_read_rsp_data = _zz_banks_0_read_rsp_data[63 : 0];
+ assign banks_0_read_rsp_mask = _zz_banks_0_read_rsp_data[71 : 64];
+ always @(*) begin
+ banks_0_write_valid = banks_0_writeOr_value_valid;
+ if(when_MemoryCore_l239) begin
+ banks_0_write_valid = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ banks_0_write_payload_address = banks_0_writeOr_value_payload_address;
+ if(when_MemoryCore_l239) begin
+ banks_0_write_payload_address = initialiser_counter[8:0];
+ end
+ end
+
+ always @(*) begin
+ banks_0_write_payload_data_data = banks_0_writeOr_value_payload_data_data;
+ if(when_MemoryCore_l239) begin
+ banks_0_write_payload_data_data = _zz_banks_0_write_payload_data_data[63 : 0];
+ end
+ end
+
+ always @(*) begin
+ banks_0_write_payload_data_mask = banks_0_writeOr_value_payload_data_mask;
+ if(when_MemoryCore_l239) begin
+ banks_0_write_payload_data_mask = _zz_banks_0_write_payload_data_data[71 : 64];
+ end
+ end
+
+ assign banks_0_read_cmd_valid = banks_0_readOr_value_valid;
+ assign banks_0_read_cmd_payload = banks_0_readOr_value_payload;
+ assign _zz_banks_1_read_rsp_data = banks_1_ram_spinal_port1;
+ assign banks_1_read_rsp_data = _zz_banks_1_read_rsp_data[63 : 0];
+ assign banks_1_read_rsp_mask = _zz_banks_1_read_rsp_data[71 : 64];
+ always @(*) begin
+ banks_1_write_valid = banks_1_writeOr_value_valid;
+ if(when_MemoryCore_l239) begin
+ banks_1_write_valid = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ banks_1_write_payload_address = banks_1_writeOr_value_payload_address;
+ if(when_MemoryCore_l239) begin
+ banks_1_write_payload_address = initialiser_counter[8:0];
+ end
+ end
+
+ always @(*) begin
+ banks_1_write_payload_data_data = banks_1_writeOr_value_payload_data_data;
+ if(when_MemoryCore_l239) begin
+ banks_1_write_payload_data_data = _zz_banks_1_write_payload_data_data[63 : 0];
+ end
+ end
+
+ always @(*) begin
+ banks_1_write_payload_data_mask = banks_1_writeOr_value_payload_data_mask;
+ if(when_MemoryCore_l239) begin
+ banks_1_write_payload_data_mask = _zz_banks_1_write_payload_data_data[71 : 64];
+ end
+ end
+
+ assign banks_1_read_cmd_valid = banks_1_readOr_value_valid;
+ assign banks_1_read_cmd_payload = banks_1_readOr_value_payload;
+ assign write_nodes_0_1_priority = 1'b0;
+ assign write_nodes_1_0_priority = 1'b1;
+ assign write_nodes_0_1_conflict = ((io_writes_0_cmd_valid && io_writes_1_cmd_valid) && (((io_writes_0_cmd_payload_address ^ io_writes_1_cmd_payload_address) & 10'h0) == 10'h0));
+ assign write_nodes_1_0_conflict = write_nodes_0_1_conflict;
+ assign write_arbiter_0_losedAgainst = (write_nodes_0_1_conflict && (! write_nodes_0_1_priority));
+ always @(*) begin
+ write_arbiter_0_doIt = (io_writes_0_cmd_valid && (write_arbiter_0_losedAgainst == 1'b0));
+ if(when_MemoryCore_l239) begin
+ write_arbiter_0_doIt = 1'b0;
+ end
+ end
+
+ assign when_MemoryCore_l136 = (write_arbiter_0_doIt && (_zz_when_MemoryCore_l136[0 : 0] == 1'b0));
+ always @(*) begin
+ if(when_MemoryCore_l136) begin
+ _zz_banks_0_writeOr_value_valid = 1'b1;
+ end else begin
+ _zz_banks_0_writeOr_value_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136) begin
+ _zz_banks_0_writeOr_value_valid_1 = (io_writes_0_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_0_writeOr_value_valid_1 = 9'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136) begin
+ _zz_banks_0_writeOr_value_valid_2 = io_writes_0_cmd_payload_data[63 : 0];
+ end else begin
+ _zz_banks_0_writeOr_value_valid_2 = 64'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136) begin
+ _zz_banks_0_writeOr_value_valid_3 = io_writes_0_cmd_payload_mask[7 : 0];
+ end else begin
+ _zz_banks_0_writeOr_value_valid_3 = 8'h0;
+ end
+ end
+
+ assign when_MemoryCore_l136_1 = (write_arbiter_0_doIt && (_zz_when_MemoryCore_l136_1[0 : 0] == 1'b0));
+ always @(*) begin
+ if(when_MemoryCore_l136_1) begin
+ _zz_banks_1_writeOr_value_valid = 1'b1;
+ end else begin
+ _zz_banks_1_writeOr_value_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_1) begin
+ _zz_banks_1_writeOr_value_valid_1 = (io_writes_0_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_1_writeOr_value_valid_1 = 9'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_1) begin
+ _zz_banks_1_writeOr_value_valid_2 = io_writes_0_cmd_payload_data[63 : 0];
+ end else begin
+ _zz_banks_1_writeOr_value_valid_2 = 64'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_1) begin
+ _zz_banks_1_writeOr_value_valid_3 = io_writes_0_cmd_payload_mask[7 : 0];
+ end else begin
+ _zz_banks_1_writeOr_value_valid_3 = 8'h0;
+ end
+ end
+
+ assign io_writes_0_cmd_ready = write_arbiter_0_doIt;
+ assign io_writes_0_rsp_valid = write_arbiter_0_doIt_regNext;
+ assign io_writes_0_rsp_payload_context = io_writes_0_cmd_payload_context_regNext;
+ assign write_arbiter_1_losedAgainst = (write_nodes_1_0_conflict && (! write_nodes_1_0_priority));
+ always @(*) begin
+ write_arbiter_1_doIt = (io_writes_1_cmd_valid && (write_arbiter_1_losedAgainst == 1'b0));
+ if(when_MemoryCore_l239) begin
+ write_arbiter_1_doIt = 1'b0;
+ end
+ end
+
+ assign when_MemoryCore_l136_2 = (write_arbiter_1_doIt && 1'b1);
+ always @(*) begin
+ if(when_MemoryCore_l136_2) begin
+ _zz_banks_0_writeOr_value_valid_4 = 1'b1;
+ end else begin
+ _zz_banks_0_writeOr_value_valid_4 = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_2) begin
+ _zz_banks_0_writeOr_value_valid_5 = (io_writes_1_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_0_writeOr_value_valid_5 = 9'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_2) begin
+ _zz_banks_0_writeOr_value_valid_6 = io_writes_1_cmd_payload_data[63 : 0];
+ end else begin
+ _zz_banks_0_writeOr_value_valid_6 = 64'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_2) begin
+ _zz_banks_0_writeOr_value_valid_7 = io_writes_1_cmd_payload_mask[7 : 0];
+ end else begin
+ _zz_banks_0_writeOr_value_valid_7 = 8'h0;
+ end
+ end
+
+ assign when_MemoryCore_l136_3 = (write_arbiter_1_doIt && 1'b1);
+ always @(*) begin
+ if(when_MemoryCore_l136_3) begin
+ _zz_banks_1_writeOr_value_valid_4 = 1'b1;
+ end else begin
+ _zz_banks_1_writeOr_value_valid_4 = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_3) begin
+ _zz_banks_1_writeOr_value_valid_5 = (io_writes_1_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_1_writeOr_value_valid_5 = 9'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_3) begin
+ _zz_banks_1_writeOr_value_valid_6 = io_writes_1_cmd_payload_data[127 : 64];
+ end else begin
+ _zz_banks_1_writeOr_value_valid_6 = 64'h0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l136_3) begin
+ _zz_banks_1_writeOr_value_valid_7 = io_writes_1_cmd_payload_mask[15 : 8];
+ end else begin
+ _zz_banks_1_writeOr_value_valid_7 = 8'h0;
+ end
+ end
+
+ assign io_writes_1_cmd_ready = write_arbiter_1_doIt;
+ assign io_writes_1_rsp_valid = write_arbiter_1_doIt_regNext;
+ assign io_writes_1_rsp_payload_context = io_writes_1_cmd_payload_context_regNext;
+ assign read_ports_0_buffer_groupSel = read_ports_0_buffer_s1_payload_address[0 : 0];
+ assign read_ports_0_buffer_bufferIn_valid = read_ports_0_buffer_s1_valid;
+ assign read_ports_0_buffer_bufferIn_payload_context = read_ports_0_buffer_s1_payload_context;
+ assign read_ports_0_buffer_bufferIn_payload_data = _zz_read_ports_0_buffer_bufferIn_payload_data;
+ assign read_ports_0_buffer_bufferIn_payload_mask = _zz_read_ports_0_buffer_bufferIn_payload_mask;
+ assign read_ports_0_buffer_bufferIn_ready = read_ports_0_buffer_bufferIn_rValidN;
+ assign read_ports_0_buffer_bufferOut_valid = (read_ports_0_buffer_bufferIn_valid || (! read_ports_0_buffer_bufferIn_rValidN));
+ assign read_ports_0_buffer_bufferOut_payload_data = (read_ports_0_buffer_bufferIn_rValidN ? read_ports_0_buffer_bufferIn_payload_data : read_ports_0_buffer_bufferIn_rData_data);
+ assign read_ports_0_buffer_bufferOut_payload_mask = (read_ports_0_buffer_bufferIn_rValidN ? read_ports_0_buffer_bufferIn_payload_mask : read_ports_0_buffer_bufferIn_rData_mask);
+ assign read_ports_0_buffer_bufferOut_payload_context = (read_ports_0_buffer_bufferIn_rValidN ? read_ports_0_buffer_bufferIn_payload_context : read_ports_0_buffer_bufferIn_rData_context);
+ assign io_reads_0_rsp_valid = read_ports_0_buffer_bufferOut_valid;
+ assign read_ports_0_buffer_bufferOut_ready = io_reads_0_rsp_ready;
+ assign io_reads_0_rsp_payload_data = read_ports_0_buffer_bufferOut_payload_data;
+ assign io_reads_0_rsp_payload_mask = read_ports_0_buffer_bufferOut_payload_mask;
+ assign io_reads_0_rsp_payload_context = read_ports_0_buffer_bufferOut_payload_context;
+ assign read_ports_0_buffer_full = (read_ports_0_buffer_bufferOut_valid && (! read_ports_0_buffer_bufferOut_ready));
+ assign _zz_io_reads_0_cmd_ready = (! read_ports_0_buffer_full);
+ assign read_ports_0_cmd_valid = (io_reads_0_cmd_valid && _zz_io_reads_0_cmd_ready);
+ assign io_reads_0_cmd_ready = (read_ports_0_cmd_ready && _zz_io_reads_0_cmd_ready);
+ assign read_ports_0_cmd_payload_address = io_reads_0_cmd_payload_address;
+ assign read_ports_0_cmd_payload_priority = io_reads_0_cmd_payload_priority;
+ assign read_ports_0_cmd_payload_context = io_reads_0_cmd_payload_context;
+ assign read_ports_1_buffer_bufferIn_valid = read_ports_1_buffer_s1_valid;
+ assign read_ports_1_buffer_bufferIn_payload_context = read_ports_1_buffer_s1_payload_context;
+ assign read_ports_1_buffer_bufferIn_payload_data = {banks_1_read_rsp_data,banks_0_read_rsp_data};
+ assign read_ports_1_buffer_bufferIn_payload_mask = {banks_1_read_rsp_mask,banks_0_read_rsp_mask};
+ assign read_ports_1_buffer_bufferIn_ready = read_ports_1_buffer_bufferIn_rValidN;
+ assign read_ports_1_buffer_bufferOut_valid = (read_ports_1_buffer_bufferIn_valid || (! read_ports_1_buffer_bufferIn_rValidN));
+ assign read_ports_1_buffer_bufferOut_payload_data = (read_ports_1_buffer_bufferIn_rValidN ? read_ports_1_buffer_bufferIn_payload_data : read_ports_1_buffer_bufferIn_rData_data);
+ assign read_ports_1_buffer_bufferOut_payload_mask = (read_ports_1_buffer_bufferIn_rValidN ? read_ports_1_buffer_bufferIn_payload_mask : read_ports_1_buffer_bufferIn_rData_mask);
+ assign read_ports_1_buffer_bufferOut_payload_context = (read_ports_1_buffer_bufferIn_rValidN ? read_ports_1_buffer_bufferIn_payload_context : read_ports_1_buffer_bufferIn_rData_context);
+ assign io_reads_1_rsp_valid = read_ports_1_buffer_bufferOut_valid;
+ assign read_ports_1_buffer_bufferOut_ready = io_reads_1_rsp_ready;
+ assign io_reads_1_rsp_payload_data = read_ports_1_buffer_bufferOut_payload_data;
+ assign io_reads_1_rsp_payload_mask = read_ports_1_buffer_bufferOut_payload_mask;
+ assign io_reads_1_rsp_payload_context = read_ports_1_buffer_bufferOut_payload_context;
+ assign read_ports_1_buffer_full = (read_ports_1_buffer_bufferOut_valid && (! read_ports_1_buffer_bufferOut_ready));
+ assign _zz_io_reads_1_cmd_ready = (! read_ports_1_buffer_full);
+ assign read_ports_1_cmd_valid = (io_reads_1_cmd_valid && _zz_io_reads_1_cmd_ready);
+ assign io_reads_1_cmd_ready = (read_ports_1_cmd_ready && _zz_io_reads_1_cmd_ready);
+ assign read_ports_1_cmd_payload_address = io_reads_1_cmd_payload_address;
+ assign read_ports_1_cmd_payload_context = io_reads_1_cmd_payload_context;
+ assign read_nodes_0_1_priority = 1'b0;
+ assign read_nodes_1_0_priority = 1'b1;
+ assign read_nodes_0_1_conflict = ((read_ports_0_cmd_valid && read_ports_1_cmd_valid) && (((read_ports_0_cmd_payload_address ^ io_reads_1_cmd_payload_address) & 10'h0) == 10'h0));
+ assign read_nodes_1_0_conflict = read_nodes_0_1_conflict;
+ assign read_arbiter_0_losedAgainst = (read_nodes_0_1_conflict && (! read_nodes_0_1_priority));
+ assign read_arbiter_0_doIt = (read_ports_0_cmd_valid && (read_arbiter_0_losedAgainst == 1'b0));
+ assign when_MemoryCore_l221 = (read_arbiter_0_doIt && (_zz_when_MemoryCore_l221[0 : 0] == 1'b0));
+ always @(*) begin
+ if(when_MemoryCore_l221) begin
+ _zz_banks_0_readOr_value_valid = 1'b1;
+ end else begin
+ _zz_banks_0_readOr_value_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l221) begin
+ _zz_banks_0_readOr_value_valid_1 = (read_ports_0_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_0_readOr_value_valid_1 = 9'h0;
+ end
+ end
+
+ assign when_MemoryCore_l221_1 = (read_arbiter_0_doIt && (_zz_when_MemoryCore_l221_1[0 : 0] == 1'b0));
+ always @(*) begin
+ if(when_MemoryCore_l221_1) begin
+ _zz_banks_1_readOr_value_valid = 1'b1;
+ end else begin
+ _zz_banks_1_readOr_value_valid = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l221_1) begin
+ _zz_banks_1_readOr_value_valid_1 = (read_ports_0_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_1_readOr_value_valid_1 = 9'h0;
+ end
+ end
+
+ assign read_ports_0_cmd_ready = read_arbiter_0_doIt;
+ assign read_ports_0_buffer_s0_valid = read_arbiter_0_doIt;
+ assign read_ports_0_buffer_s0_payload_context = read_ports_0_cmd_payload_context;
+ assign read_ports_0_buffer_s0_payload_address = read_ports_0_cmd_payload_address;
+ assign read_arbiter_1_losedAgainst = (read_nodes_1_0_conflict && (! read_nodes_1_0_priority));
+ assign read_arbiter_1_doIt = (read_ports_1_cmd_valid && (read_arbiter_1_losedAgainst == 1'b0));
+ assign when_MemoryCore_l221_2 = (read_arbiter_1_doIt && 1'b1);
+ always @(*) begin
+ if(when_MemoryCore_l221_2) begin
+ _zz_banks_0_readOr_value_valid_2 = 1'b1;
+ end else begin
+ _zz_banks_0_readOr_value_valid_2 = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l221_2) begin
+ _zz_banks_0_readOr_value_valid_3 = (read_ports_1_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_0_readOr_value_valid_3 = 9'h0;
+ end
+ end
+
+ assign when_MemoryCore_l221_3 = (read_arbiter_1_doIt && 1'b1);
+ always @(*) begin
+ if(when_MemoryCore_l221_3) begin
+ _zz_banks_1_readOr_value_valid_2 = 1'b1;
+ end else begin
+ _zz_banks_1_readOr_value_valid_2 = 1'b0;
+ end
+ end
+
+ always @(*) begin
+ if(when_MemoryCore_l221_3) begin
+ _zz_banks_1_readOr_value_valid_3 = (read_ports_1_cmd_payload_address >>> 1'd1);
+ end else begin
+ _zz_banks_1_readOr_value_valid_3 = 9'h0;
+ end
+ end
+
+ assign read_ports_1_cmd_ready = read_arbiter_1_doIt;
+ assign read_ports_1_buffer_s0_valid = read_arbiter_1_doIt;
+ assign read_ports_1_buffer_s0_payload_context = read_ports_1_cmd_payload_context;
+ assign read_ports_1_buffer_s0_payload_address = read_ports_1_cmd_payload_address;
+ assign initialiser_done = initialiser_counter[9];
+ assign when_MemoryCore_l239 = (! initialiser_done);
+ assign _zz_banks_0_write_payload_data_data = 72'h0;
+ assign _zz_banks_1_write_payload_data_data = 72'h0;
+ assign _zz_banks_0_writeOr_value_valid_8 = ({{{_zz_banks_0_writeOr_value_valid_3,_zz_banks_0_writeOr_value_valid_2},_zz_banks_0_writeOr_value_valid_1},_zz_banks_0_writeOr_value_valid} | {{{_zz_banks_0_writeOr_value_valid_7,_zz_banks_0_writeOr_value_valid_6},_zz_banks_0_writeOr_value_valid_5},_zz_banks_0_writeOr_value_valid_4});
+ assign banks_0_writeOr_value_valid = _zz_banks_0_writeOr_value_valid_8[0];
+ assign _zz_banks_0_writeOr_value_payload_address = _zz_banks_0_writeOr_value_valid_8[81 : 1];
+ assign banks_0_writeOr_value_payload_address = _zz_banks_0_writeOr_value_payload_address[8 : 0];
+ assign _zz_banks_0_writeOr_value_payload_data_data = _zz_banks_0_writeOr_value_payload_address[80 : 9];
+ assign banks_0_writeOr_value_payload_data_data = _zz_banks_0_writeOr_value_payload_data_data[63 : 0];
+ assign banks_0_writeOr_value_payload_data_mask = _zz_banks_0_writeOr_value_payload_data_data[71 : 64];
+ assign _zz_banks_0_readOr_value_valid_4 = ({_zz_banks_0_readOr_value_valid_1,_zz_banks_0_readOr_value_valid} | {_zz_banks_0_readOr_value_valid_3,_zz_banks_0_readOr_value_valid_2});
+ assign banks_0_readOr_value_valid = _zz_banks_0_readOr_value_valid_4[0];
+ assign banks_0_readOr_value_payload = _zz_banks_0_readOr_value_valid_4[9 : 1];
+ assign _zz_banks_1_writeOr_value_valid_8 = ({{{_zz_banks_1_writeOr_value_valid_3,_zz_banks_1_writeOr_value_valid_2},_zz_banks_1_writeOr_value_valid_1},_zz_banks_1_writeOr_value_valid} | {{{_zz_banks_1_writeOr_value_valid_7,_zz_banks_1_writeOr_value_valid_6},_zz_banks_1_writeOr_value_valid_5},_zz_banks_1_writeOr_value_valid_4});
+ assign banks_1_writeOr_value_valid = _zz_banks_1_writeOr_value_valid_8[0];
+ assign _zz_banks_1_writeOr_value_payload_address = _zz_banks_1_writeOr_value_valid_8[81 : 1];
+ assign banks_1_writeOr_value_payload_address = _zz_banks_1_writeOr_value_payload_address[8 : 0];
+ assign _zz_banks_1_writeOr_value_payload_data_data = _zz_banks_1_writeOr_value_payload_address[80 : 9];
+ assign banks_1_writeOr_value_payload_data_data = _zz_banks_1_writeOr_value_payload_data_data[63 : 0];
+ assign banks_1_writeOr_value_payload_data_mask = _zz_banks_1_writeOr_value_payload_data_data[71 : 64];
+ assign _zz_banks_1_readOr_value_valid_4 = ({_zz_banks_1_readOr_value_valid_1,_zz_banks_1_readOr_value_valid} | {_zz_banks_1_readOr_value_valid_3,_zz_banks_1_readOr_value_valid_2});
+ assign banks_1_readOr_value_valid = _zz_banks_1_readOr_value_valid_4[0];
+ assign banks_1_readOr_value_payload = _zz_banks_1_readOr_value_valid_4[9 : 1];
+ always @(posedge clk) begin
+ if(io_writes_0_cmd_valid) begin
+ write_ports_0_priority_value <= (write_ports_0_priority_value + _zz_write_ports_0_priority_value);
+ if(io_writes_0_cmd_ready) begin
+ write_ports_0_priority_value <= 4'b0000;
+ end
+ end
+ io_writes_0_cmd_payload_context_regNext <= io_writes_0_cmd_payload_context;
+ io_writes_1_cmd_payload_context_regNext <= io_writes_1_cmd_payload_context;
+ read_ports_0_buffer_s1_payload_context <= read_ports_0_buffer_s0_payload_context;
+ read_ports_0_buffer_s1_payload_address <= read_ports_0_buffer_s0_payload_address;
+ if(read_ports_0_buffer_bufferIn_ready) begin
+ read_ports_0_buffer_bufferIn_rData_data <= read_ports_0_buffer_bufferIn_payload_data;
+ read_ports_0_buffer_bufferIn_rData_mask <= read_ports_0_buffer_bufferIn_payload_mask;
+ read_ports_0_buffer_bufferIn_rData_context <= read_ports_0_buffer_bufferIn_payload_context;
+ end
+ if(read_ports_0_cmd_valid) begin
+ read_ports_0_priority_value <= (read_ports_0_priority_value + _zz_read_ports_0_priority_value);
+ if(read_ports_0_cmd_ready) begin
+ read_ports_0_priority_value <= 4'b0000;
+ end
+ end
+ read_ports_1_buffer_s1_payload_context <= read_ports_1_buffer_s0_payload_context;
+ read_ports_1_buffer_s1_payload_address <= read_ports_1_buffer_s0_payload_address;
+ if(read_ports_1_buffer_bufferIn_ready) begin
+ read_ports_1_buffer_bufferIn_rData_data <= read_ports_1_buffer_bufferIn_payload_data;
+ read_ports_1_buffer_bufferIn_rData_mask <= read_ports_1_buffer_bufferIn_payload_mask;
+ read_ports_1_buffer_bufferIn_rData_context <= read_ports_1_buffer_bufferIn_payload_context;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(reset) begin
+ write_arbiter_0_doIt_regNext <= 1'b0;
+ write_arbiter_1_doIt_regNext <= 1'b0;
+ read_ports_0_buffer_s1_valid <= 1'b0;
+ read_ports_0_buffer_bufferIn_rValidN <= 1'b1;
+ read_ports_1_buffer_s1_valid <= 1'b0;
+ read_ports_1_buffer_bufferIn_rValidN <= 1'b1;
+ initialiser_counter <= 10'h0;
+ end else begin
+ write_arbiter_0_doIt_regNext <= write_arbiter_0_doIt;
+ write_arbiter_1_doIt_regNext <= write_arbiter_1_doIt;
+ read_ports_0_buffer_s1_valid <= read_ports_0_buffer_s0_valid;
+ if(read_ports_0_buffer_bufferIn_valid) begin
+ read_ports_0_buffer_bufferIn_rValidN <= 1'b0;
+ end
+ if(read_ports_0_buffer_bufferOut_ready) begin
+ read_ports_0_buffer_bufferIn_rValidN <= 1'b1;
+ end
+ read_ports_1_buffer_s1_valid <= read_ports_1_buffer_s0_valid;
+ if(read_ports_1_buffer_bufferIn_valid) begin
+ read_ports_1_buffer_bufferIn_rValidN <= 1'b0;
+ end
+ if(read_ports_1_buffer_bufferOut_ready) begin
+ read_ports_1_buffer_bufferIn_rValidN <= 1'b1;
+ end
+ if(when_MemoryCore_l239) begin
+ initialiser_counter <= (initialiser_counter + 10'h001);
+ end
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamFifo_1 (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [13:0] io_push_payload_context,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [13:0] io_pop_payload_context,
+ input wire io_flush,
+ output wire [2:0] io_occupancy,
+ output wire [2:0] io_availability,
+ input wire clk,
+ input wire reset
+);
+
+ reg [13:0] logic_ram_spinal_port1;
+ wire [2:0] _zz_logic_ptr_notPow2_counter;
+ wire [2:0] _zz_logic_ptr_notPow2_counter_1;
+ wire [0:0] _zz_logic_ptr_notPow2_counter_2;
+ wire [2:0] _zz_logic_ptr_notPow2_counter_3;
+ wire [0:0] _zz_logic_ptr_notPow2_counter_4;
+ reg _zz_1;
+ wire logic_ptr_doPush;
+ wire logic_ptr_doPop;
+ wire logic_ptr_full;
+ wire logic_ptr_empty;
+ reg [2:0] logic_ptr_push;
+ reg [2:0] logic_ptr_pop;
+ wire [2:0] logic_ptr_occupancy;
+ wire [2:0] logic_ptr_popOnIo;
+ wire when_Stream_l1248;
+ reg logic_ptr_wentUp;
+ wire when_Stream_l1283;
+ wire when_Stream_l1287;
+ reg [2:0] logic_ptr_notPow2_counter;
+ wire io_push_fire;
+ wire io_pop_fire;
+ wire logic_push_onRam_write_valid;
+ wire [2:0] logic_push_onRam_write_payload_address;
+ wire [13:0] logic_push_onRam_write_payload_data_context;
+ wire logic_pop_addressGen_valid;
+ reg logic_pop_addressGen_ready;
+ wire [2:0] logic_pop_addressGen_payload;
+ wire logic_pop_addressGen_fire;
+ wire logic_pop_sync_readArbitation_valid;
+ wire logic_pop_sync_readArbitation_ready;
+ wire [2:0] logic_pop_sync_readArbitation_payload;
+ reg logic_pop_addressGen_rValid;
+ reg [2:0] logic_pop_addressGen_rData;
+ wire when_Stream_l375;
+ wire logic_pop_sync_readPort_cmd_valid;
+ wire [2:0] logic_pop_sync_readPort_cmd_payload;
+ wire [13:0] logic_pop_sync_readPort_rsp_context;
+ wire logic_pop_sync_readArbitation_translated_valid;
+ wire logic_pop_sync_readArbitation_translated_ready;
+ wire [13:0] logic_pop_sync_readArbitation_translated_payload_context;
+ wire logic_pop_sync_readArbitation_fire;
+ reg [2:0] logic_pop_sync_popReg;
+ reg [13:0] logic_ram [0:6];
+
+ assign _zz_logic_ptr_notPow2_counter = (logic_ptr_notPow2_counter + _zz_logic_ptr_notPow2_counter_1);
+ assign _zz_logic_ptr_notPow2_counter_2 = io_push_fire;
+ assign _zz_logic_ptr_notPow2_counter_1 = {2'd0, _zz_logic_ptr_notPow2_counter_2};
+ assign _zz_logic_ptr_notPow2_counter_4 = io_pop_fire;
+ assign _zz_logic_ptr_notPow2_counter_3 = {2'd0, _zz_logic_ptr_notPow2_counter_4};
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_push_onRam_write_payload_address] <= logic_push_onRam_write_payload_data_context;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_sync_readPort_cmd_valid) begin
+ logic_ram_spinal_port1 <= logic_ram[logic_pop_sync_readPort_cmd_payload];
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_push_onRam_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l1248 = (logic_ptr_doPush != logic_ptr_doPop);
+ assign logic_ptr_full = ((logic_ptr_push == logic_ptr_popOnIo) && logic_ptr_wentUp);
+ assign logic_ptr_empty = ((logic_ptr_push == logic_ptr_pop) && (! logic_ptr_wentUp));
+ assign when_Stream_l1283 = (logic_ptr_push == 3'b110);
+ assign when_Stream_l1287 = (logic_ptr_pop == 3'b110);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign io_pop_fire = (io_pop_valid && io_pop_ready);
+ assign logic_ptr_occupancy = logic_ptr_notPow2_counter;
+ assign io_push_ready = (! logic_ptr_full);
+ assign logic_ptr_doPush = io_push_fire;
+ assign logic_push_onRam_write_valid = io_push_fire;
+ assign logic_push_onRam_write_payload_address = logic_ptr_push;
+ assign logic_push_onRam_write_payload_data_context = io_push_payload_context;
+ assign logic_pop_addressGen_valid = (! logic_ptr_empty);
+ assign logic_pop_addressGen_payload = logic_ptr_pop;
+ assign logic_pop_addressGen_fire = (logic_pop_addressGen_valid && logic_pop_addressGen_ready);
+ assign logic_ptr_doPop = logic_pop_addressGen_fire;
+ always @(*) begin
+ logic_pop_addressGen_ready = logic_pop_sync_readArbitation_ready;
+ if(when_Stream_l375) begin
+ logic_pop_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! logic_pop_sync_readArbitation_valid);
+ assign logic_pop_sync_readArbitation_valid = logic_pop_addressGen_rValid;
+ assign logic_pop_sync_readArbitation_payload = logic_pop_addressGen_rData;
+ assign logic_pop_sync_readPort_rsp_context = logic_ram_spinal_port1[13 : 0];
+ assign logic_pop_sync_readPort_cmd_valid = logic_pop_addressGen_fire;
+ assign logic_pop_sync_readPort_cmd_payload = logic_pop_addressGen_payload;
+ assign logic_pop_sync_readArbitation_translated_valid = logic_pop_sync_readArbitation_valid;
+ assign logic_pop_sync_readArbitation_ready = logic_pop_sync_readArbitation_translated_ready;
+ assign logic_pop_sync_readArbitation_translated_payload_context = logic_pop_sync_readPort_rsp_context;
+ assign io_pop_valid = logic_pop_sync_readArbitation_translated_valid;
+ assign logic_pop_sync_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_context = logic_pop_sync_readArbitation_translated_payload_context;
+ assign logic_pop_sync_readArbitation_fire = (logic_pop_sync_readArbitation_valid && logic_pop_sync_readArbitation_ready);
+ assign logic_ptr_popOnIo = logic_pop_sync_popReg;
+ assign io_occupancy = logic_ptr_occupancy;
+ assign io_availability = (3'b111 - logic_ptr_occupancy);
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_ptr_push <= 3'b000;
+ logic_ptr_pop <= 3'b000;
+ logic_ptr_wentUp <= 1'b0;
+ logic_ptr_notPow2_counter <= 3'b000;
+ logic_pop_addressGen_rValid <= 1'b0;
+ logic_pop_sync_popReg <= 3'b000;
+ end else begin
+ if(when_Stream_l1248) begin
+ logic_ptr_wentUp <= logic_ptr_doPush;
+ end
+ if(io_flush) begin
+ logic_ptr_wentUp <= 1'b0;
+ end
+ if(logic_ptr_doPush) begin
+ logic_ptr_push <= (logic_ptr_push + 3'b001);
+ if(when_Stream_l1283) begin
+ logic_ptr_push <= 3'b000;
+ end
+ end
+ if(logic_ptr_doPop) begin
+ logic_ptr_pop <= (logic_ptr_pop + 3'b001);
+ if(when_Stream_l1287) begin
+ logic_ptr_pop <= 3'b000;
+ end
+ end
+ if(io_flush) begin
+ logic_ptr_push <= 3'b000;
+ logic_ptr_pop <= 3'b000;
+ end
+ logic_ptr_notPow2_counter <= (_zz_logic_ptr_notPow2_counter - _zz_logic_ptr_notPow2_counter_3);
+ if(io_flush) begin
+ logic_ptr_notPow2_counter <= 3'b000;
+ end
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rValid <= logic_pop_addressGen_valid;
+ end
+ if(io_flush) begin
+ logic_pop_addressGen_rValid <= 1'b0;
+ end
+ if(logic_pop_sync_readArbitation_fire) begin
+ logic_pop_sync_popReg <= logic_ptr_pop;
+ end
+ if(io_flush) begin
+ logic_pop_sync_popReg <= 3'b000;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rData <= logic_pop_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_StreamFifo (
+ input wire io_push_valid,
+ output wire io_push_ready,
+ input wire [21:0] io_push_payload_context,
+ output wire io_pop_valid,
+ input wire io_pop_ready,
+ output wire [21:0] io_pop_payload_context,
+ input wire io_flush,
+ output wire [2:0] io_occupancy,
+ output wire [2:0] io_availability,
+ input wire clk,
+ input wire reset
+);
+
+ reg [21:0] logic_ram_spinal_port1;
+ wire [2:0] _zz_logic_ptr_notPow2_counter;
+ wire [2:0] _zz_logic_ptr_notPow2_counter_1;
+ wire [0:0] _zz_logic_ptr_notPow2_counter_2;
+ wire [2:0] _zz_logic_ptr_notPow2_counter_3;
+ wire [0:0] _zz_logic_ptr_notPow2_counter_4;
+ reg _zz_1;
+ wire logic_ptr_doPush;
+ wire logic_ptr_doPop;
+ wire logic_ptr_full;
+ wire logic_ptr_empty;
+ reg [2:0] logic_ptr_push;
+ reg [2:0] logic_ptr_pop;
+ wire [2:0] logic_ptr_occupancy;
+ wire [2:0] logic_ptr_popOnIo;
+ wire when_Stream_l1248;
+ reg logic_ptr_wentUp;
+ wire when_Stream_l1283;
+ wire when_Stream_l1287;
+ reg [2:0] logic_ptr_notPow2_counter;
+ wire io_push_fire;
+ wire io_pop_fire;
+ wire logic_push_onRam_write_valid;
+ wire [2:0] logic_push_onRam_write_payload_address;
+ wire [21:0] logic_push_onRam_write_payload_data_context;
+ wire logic_pop_addressGen_valid;
+ reg logic_pop_addressGen_ready;
+ wire [2:0] logic_pop_addressGen_payload;
+ wire logic_pop_addressGen_fire;
+ wire logic_pop_sync_readArbitation_valid;
+ wire logic_pop_sync_readArbitation_ready;
+ wire [2:0] logic_pop_sync_readArbitation_payload;
+ reg logic_pop_addressGen_rValid;
+ reg [2:0] logic_pop_addressGen_rData;
+ wire when_Stream_l375;
+ wire logic_pop_sync_readPort_cmd_valid;
+ wire [2:0] logic_pop_sync_readPort_cmd_payload;
+ wire [21:0] logic_pop_sync_readPort_rsp_context;
+ wire logic_pop_sync_readArbitation_translated_valid;
+ wire logic_pop_sync_readArbitation_translated_ready;
+ wire [21:0] logic_pop_sync_readArbitation_translated_payload_context;
+ wire logic_pop_sync_readArbitation_fire;
+ reg [2:0] logic_pop_sync_popReg;
+ reg [21:0] logic_ram [0:6];
+
+ assign _zz_logic_ptr_notPow2_counter = (logic_ptr_notPow2_counter + _zz_logic_ptr_notPow2_counter_1);
+ assign _zz_logic_ptr_notPow2_counter_2 = io_push_fire;
+ assign _zz_logic_ptr_notPow2_counter_1 = {2'd0, _zz_logic_ptr_notPow2_counter_2};
+ assign _zz_logic_ptr_notPow2_counter_4 = io_pop_fire;
+ assign _zz_logic_ptr_notPow2_counter_3 = {2'd0, _zz_logic_ptr_notPow2_counter_4};
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_push_onRam_write_payload_address] <= logic_push_onRam_write_payload_data_context;
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_sync_readPort_cmd_valid) begin
+ logic_ram_spinal_port1 <= logic_ram[logic_pop_sync_readPort_cmd_payload];
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_push_onRam_write_valid) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ assign when_Stream_l1248 = (logic_ptr_doPush != logic_ptr_doPop);
+ assign logic_ptr_full = ((logic_ptr_push == logic_ptr_popOnIo) && logic_ptr_wentUp);
+ assign logic_ptr_empty = ((logic_ptr_push == logic_ptr_pop) && (! logic_ptr_wentUp));
+ assign when_Stream_l1283 = (logic_ptr_push == 3'b110);
+ assign when_Stream_l1287 = (logic_ptr_pop == 3'b110);
+ assign io_push_fire = (io_push_valid && io_push_ready);
+ assign io_pop_fire = (io_pop_valid && io_pop_ready);
+ assign logic_ptr_occupancy = logic_ptr_notPow2_counter;
+ assign io_push_ready = (! logic_ptr_full);
+ assign logic_ptr_doPush = io_push_fire;
+ assign logic_push_onRam_write_valid = io_push_fire;
+ assign logic_push_onRam_write_payload_address = logic_ptr_push;
+ assign logic_push_onRam_write_payload_data_context = io_push_payload_context;
+ assign logic_pop_addressGen_valid = (! logic_ptr_empty);
+ assign logic_pop_addressGen_payload = logic_ptr_pop;
+ assign logic_pop_addressGen_fire = (logic_pop_addressGen_valid && logic_pop_addressGen_ready);
+ assign logic_ptr_doPop = logic_pop_addressGen_fire;
+ always @(*) begin
+ logic_pop_addressGen_ready = logic_pop_sync_readArbitation_ready;
+ if(when_Stream_l375) begin
+ logic_pop_addressGen_ready = 1'b1;
+ end
+ end
+
+ assign when_Stream_l375 = (! logic_pop_sync_readArbitation_valid);
+ assign logic_pop_sync_readArbitation_valid = logic_pop_addressGen_rValid;
+ assign logic_pop_sync_readArbitation_payload = logic_pop_addressGen_rData;
+ assign logic_pop_sync_readPort_rsp_context = logic_ram_spinal_port1[21 : 0];
+ assign logic_pop_sync_readPort_cmd_valid = logic_pop_addressGen_fire;
+ assign logic_pop_sync_readPort_cmd_payload = logic_pop_addressGen_payload;
+ assign logic_pop_sync_readArbitation_translated_valid = logic_pop_sync_readArbitation_valid;
+ assign logic_pop_sync_readArbitation_ready = logic_pop_sync_readArbitation_translated_ready;
+ assign logic_pop_sync_readArbitation_translated_payload_context = logic_pop_sync_readPort_rsp_context;
+ assign io_pop_valid = logic_pop_sync_readArbitation_translated_valid;
+ assign logic_pop_sync_readArbitation_translated_ready = io_pop_ready;
+ assign io_pop_payload_context = logic_pop_sync_readArbitation_translated_payload_context;
+ assign logic_pop_sync_readArbitation_fire = (logic_pop_sync_readArbitation_valid && logic_pop_sync_readArbitation_ready);
+ assign logic_ptr_popOnIo = logic_pop_sync_popReg;
+ assign io_occupancy = logic_ptr_occupancy;
+ assign io_availability = (3'b111 - logic_ptr_occupancy);
+ always @(posedge clk) begin
+ if(reset) begin
+ logic_ptr_push <= 3'b000;
+ logic_ptr_pop <= 3'b000;
+ logic_ptr_wentUp <= 1'b0;
+ logic_ptr_notPow2_counter <= 3'b000;
+ logic_pop_addressGen_rValid <= 1'b0;
+ logic_pop_sync_popReg <= 3'b000;
+ end else begin
+ if(when_Stream_l1248) begin
+ logic_ptr_wentUp <= logic_ptr_doPush;
+ end
+ if(io_flush) begin
+ logic_ptr_wentUp <= 1'b0;
+ end
+ if(logic_ptr_doPush) begin
+ logic_ptr_push <= (logic_ptr_push + 3'b001);
+ if(when_Stream_l1283) begin
+ logic_ptr_push <= 3'b000;
+ end
+ end
+ if(logic_ptr_doPop) begin
+ logic_ptr_pop <= (logic_ptr_pop + 3'b001);
+ if(when_Stream_l1287) begin
+ logic_ptr_pop <= 3'b000;
+ end
+ end
+ if(io_flush) begin
+ logic_ptr_push <= 3'b000;
+ logic_ptr_pop <= 3'b000;
+ end
+ logic_ptr_notPow2_counter <= (_zz_logic_ptr_notPow2_counter - _zz_logic_ptr_notPow2_counter_3);
+ if(io_flush) begin
+ logic_ptr_notPow2_counter <= 3'b000;
+ end
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rValid <= logic_pop_addressGen_valid;
+ end
+ if(io_flush) begin
+ logic_pop_addressGen_rValid <= 1'b0;
+ end
+ if(logic_pop_sync_readArbitation_fire) begin
+ logic_pop_sync_popReg <= logic_ptr_pop;
+ end
+ if(io_flush) begin
+ logic_pop_sync_popReg <= 3'b000;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(logic_pop_addressGen_ready) begin
+ logic_pop_addressGen_rData <= logic_pop_addressGen_payload;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BufferCC_1 (
+ input wire io_dataIn,
+ output wire io_dataOut,
+ input wire ctrl_clk,
+ input wire ctrl_reset
+);
+
+ (* async_reg = "true" *) reg buffers_0;
+ (* async_reg = "true" *) reg buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge ctrl_clk) begin
+ if(ctrl_reset) begin
+ buffers_0 <= 1'b0;
+ buffers_1 <= 1'b0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
+
+module EfxDMA_BufferCC (
+ input wire io_dataIn,
+ output wire io_dataOut,
+ input wire clk,
+ input wire reset
+);
+
+ (* async_reg = "true" *) reg buffers_0;
+ (* async_reg = "true" *) reg buffers_1;
+
+ assign io_dataOut = buffers_1;
+ always @(posedge clk) begin
+ if(reset) begin
+ buffers_0 <= 1'b0;
+ buffers_1 <= 1'b0;
+ end else begin
+ buffers_0 <= io_dataIn;
+ buffers_1 <= buffers_0;
+ end
+ end
+
+
+endmodule
diff --git a/Ti375C529_devkit/ip/gDMA/source/dma_config.json b/Ti375C529_devkit/ip/gDMA/source/dma_config.json
new file mode 100644
index 0000000..1229f91
--- /dev/null
+++ b/Ti375C529_devkit/ip/gDMA/source/dma_config.json
@@ -0,0 +1,71 @@
+{
+ "name": "EfxDMA",
+ "efinix_ddr": false,
+ "with_sg_bus": false,
+ "with_ddr_write_queue": false,
+ "with_ddr_read_queue": false,
+ "ctrl": {
+ "asynchronous": true
+ },
+ "buffer": {
+ "bank_count": 2,
+ "bank_width": 64,
+ "bank_words": 512
+ },
+ "read": {
+ "address_width": 32,
+ "data_width_external": 128,
+ "data_width_internal": 128
+ },
+ "write": {
+ "address_width": 32,
+ "data_width_external": 128,
+ "data_width_internal": 128
+ },
+ "channels": {
+ "c0": {
+ "progress_probe": true,
+ "direct_ctrl_capable": true,
+ "linked_list_capable": true,
+ "memory_to_memory": false,
+ "inputs": [
+ "dat0_i"
+ ],
+ "half_completion_interrupt": false,
+ "self_restart_capable": false,
+ "bytes_per_burst": 1024,
+ "buffer_address": 0,
+ "buffer_size": 4096
+ },
+ "c1": {
+ "progress_probe": true,
+ "direct_ctrl_capable": true,
+ "linked_list_capable": true,
+ "memory_to_memory": false,
+ "outputs": [
+ "dat1_o"
+ ],
+ "half_completion_interrupt": false,
+ "self_restart_capable": false,
+ "bytes_per_burst": 1024,
+ "buffer_address": 4096,
+ "buffer_size": 4096
+ }
+ },
+ "inputs": {
+ "dat0_i": {
+ "data_width": 8,
+ "tid_width": 0,
+ "tdest_width": 4,
+ "asynchronous": true
+ }
+ },
+ "outputs": {
+ "dat1_o": {
+ "data_width": 8,
+ "tid_width": 0,
+ "tdest_width": 4,
+ "asynchronous": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gSDHC/gSDHC.v b/Ti375C529_devkit/ip/gSDHC/gSDHC.v
new file mode 100644
index 0000000..718f399
--- /dev/null
+++ b/Ti375C529_devkit/ip/gSDHC/gSDHC.v
@@ -0,0 +1,12571 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 6.0
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+`define IP_UUID _5b3f2212c953407c83e1cf8c9cc77ea9
+`define IP_NAME_CONCAT(a,b) a``b
+`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
+module gSDHC
+(
+ input sd_rst,
+ input sd_base_clk,
+ output sd_int,
+ input sd_cd_n,
+ input sd_wp,
+ input [9:0] s_axi_awaddr,
+ input s_axi_aclk,
+ output s_axi_awready,
+ input s_axi_awvalid,
+ input [31:0] s_axi_wdata,
+ output s_axi_wready,
+ input s_axi_wvalid,
+ output [1:0] s_axi_bresp,
+ output s_axi_bvalid,
+ input [9:0] s_axi_araddr,
+ input s_axi_bready,
+ output s_axi_arready,
+ input s_axi_arvalid,
+ output [1:0] s_axi_rresp,
+ output [31:0] s_axi_rdata,
+ output s_axi_rvalid,
+ input s_axi_rready,
+ output [31:0] m_axi_awaddr,
+ output m_axi_awvalid,
+ input m_axi_clk,
+ output [7:0] m_axi_awlen,
+ input m_axi_awready,
+ output [2:0] m_axi_awsize,
+ output [3:0] m_axi_awcache,
+ output [1:0] m_axi_awlock,
+ output [2:0] m_axi_awprot,
+ output m_axi_wlast,
+ output m_axi_wvalid,
+ input m_axi_wready,
+ input [1:0] m_axi_bresp,
+ input m_axi_bvalid,
+ output m_axi_bready,
+ output m_axi_arvalid,
+ output [31:0] m_axi_araddr,
+ output [7:0] m_axi_arlen,
+ output [2:0] m_axi_arsize,
+ output [1:0] m_axi_arburst,
+ output [2:0] m_axi_arprot,
+ output [1:0] m_axi_arlock,
+ output [3:0] m_axi_arcache,
+ input m_axi_arready,
+ input m_axi_rvalid,
+ input m_axi_rlast,
+ input [1:0] m_axi_rresp,
+ output m_axi_rready,
+ output sd_clk_hi,
+ output sd_clk_lo,
+ input sd_cmd_i,
+ output sd_cmd_o,
+ output sd_cmd_oe,
+ input [3:0] sd_dat_i,
+ output [3:0] sd_dat_o,
+ output sd_dat_oe,
+ output [1:0] m_axi_awburst,
+ output [127:0] m_axi_wdata,
+ output [15:0] m_axi_wstrb,
+ input [127:0] m_axi_rdata,
+ input [3:0] s_axi_wstrb
+);
+`IP_MODULE_NAME(sdhc)
+#(
+ .DATA_BUFFER_DEPTH (512),
+ .ADMA_DATA_WIDTH (128)
+)
+u_sdhc
+(
+ .sd_rst ( sd_rst ),
+ .sd_base_clk ( sd_base_clk ),
+ .sd_int ( sd_int ),
+ .sd_cd_n ( sd_cd_n ),
+ .sd_wp ( sd_wp ),
+ .s_axi_awaddr ( s_axi_awaddr ),
+ .s_axi_aclk ( s_axi_aclk ),
+ .s_axi_awready ( s_axi_awready ),
+ .s_axi_awvalid ( s_axi_awvalid ),
+ .s_axi_wdata ( s_axi_wdata ),
+ .s_axi_wready ( s_axi_wready ),
+ .s_axi_wvalid ( s_axi_wvalid ),
+ .s_axi_bresp ( s_axi_bresp ),
+ .s_axi_bvalid ( s_axi_bvalid ),
+ .s_axi_araddr ( s_axi_araddr ),
+ .s_axi_bready ( s_axi_bready ),
+ .s_axi_arready ( s_axi_arready ),
+ .s_axi_arvalid ( s_axi_arvalid ),
+ .s_axi_rresp ( s_axi_rresp ),
+ .s_axi_rdata ( s_axi_rdata ),
+ .s_axi_rvalid ( s_axi_rvalid ),
+ .s_axi_rready ( s_axi_rready ),
+ .m_axi_awaddr ( m_axi_awaddr ),
+ .m_axi_awvalid ( m_axi_awvalid ),
+ .m_axi_clk ( m_axi_clk ),
+ .m_axi_awlen ( m_axi_awlen ),
+ .m_axi_awready ( m_axi_awready ),
+ .m_axi_awsize ( m_axi_awsize ),
+ .m_axi_awcache ( m_axi_awcache ),
+ .m_axi_awlock ( m_axi_awlock ),
+ .m_axi_awprot ( m_axi_awprot ),
+ .m_axi_wlast ( m_axi_wlast ),
+ .m_axi_wvalid ( m_axi_wvalid ),
+ .m_axi_wready ( m_axi_wready ),
+ .m_axi_bresp ( m_axi_bresp ),
+ .m_axi_bvalid ( m_axi_bvalid ),
+ .m_axi_bready ( m_axi_bready ),
+ .m_axi_arvalid ( m_axi_arvalid ),
+ .m_axi_araddr ( m_axi_araddr ),
+ .m_axi_arlen ( m_axi_arlen ),
+ .m_axi_arsize ( m_axi_arsize ),
+ .m_axi_arburst ( m_axi_arburst ),
+ .m_axi_arprot ( m_axi_arprot ),
+ .m_axi_arlock ( m_axi_arlock ),
+ .m_axi_arcache ( m_axi_arcache ),
+ .m_axi_arready ( m_axi_arready ),
+ .m_axi_rvalid ( m_axi_rvalid ),
+ .m_axi_rlast ( m_axi_rlast ),
+ .m_axi_rresp ( m_axi_rresp ),
+ .m_axi_rready ( m_axi_rready ),
+ .sd_clk_hi ( sd_clk_hi ),
+ .sd_clk_lo ( sd_clk_lo ),
+ .sd_cmd_i ( sd_cmd_i ),
+ .sd_cmd_o ( sd_cmd_o ),
+ .sd_cmd_oe ( sd_cmd_oe ),
+ .sd_dat_i ( sd_dat_i ),
+ .sd_dat_o ( sd_dat_o ),
+ .sd_dat_oe ( sd_dat_oe ),
+ .m_axi_awburst ( m_axi_awburst ),
+ .m_axi_wdata ( m_axi_wdata ),
+ .m_axi_wstrb ( m_axi_wstrb ),
+ .m_axi_rdata ( m_axi_rdata ),
+ .s_axi_wstrb ( s_axi_wstrb )
+);
+endmodule
+
+// Generator : SpinalHDL dev git head : 9cdee03b276638ef8e7a948b606bb7acc6e4c8d0
+// Component : Asic32To128UpsizerAxi4Upsizer_5b3f2212c953407c83e1cf8c9cc77ea9
+// Git hash : cd16421fb7a4d44431a2445f9a92b82070ab9b8a
+
+`timescale 1ns/1ps
+
+module Asic32To128UpsizerAxi4Upsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_aw_valid,
+ output io_input_aw_ready,
+ input [31:0] io_input_aw_payload_addr,
+ input [7:0] io_input_aw_payload_id,
+ input [3:0] io_input_aw_payload_region,
+ input [7:0] io_input_aw_payload_len,
+ input [2:0] io_input_aw_payload_size,
+ input [1:0] io_input_aw_payload_burst,
+ input [0:0] io_input_aw_payload_lock,
+ input [3:0] io_input_aw_payload_cache,
+ input [3:0] io_input_aw_payload_qos,
+ input [2:0] io_input_aw_payload_prot,
+ input io_input_w_valid,
+ output io_input_w_ready,
+ input [31:0] io_input_w_payload_data,
+ input [3:0] io_input_w_payload_strb,
+ input io_input_w_payload_last,
+ output io_input_b_valid,
+ input io_input_b_ready,
+ output [7:0] io_input_b_payload_id,
+ output [1:0] io_input_b_payload_resp,
+ input io_input_ar_valid,
+ output io_input_ar_ready,
+ input [31:0] io_input_ar_payload_addr,
+ input [7:0] io_input_ar_payload_id,
+ input [3:0] io_input_ar_payload_region,
+ input [7:0] io_input_ar_payload_len,
+ input [2:0] io_input_ar_payload_size,
+ input [1:0] io_input_ar_payload_burst,
+ input [0:0] io_input_ar_payload_lock,
+ input [3:0] io_input_ar_payload_cache,
+ input [3:0] io_input_ar_payload_qos,
+ input [2:0] io_input_ar_payload_prot,
+ output io_input_r_valid,
+ input io_input_r_ready,
+ output [31:0] io_input_r_payload_data,
+ output [7:0] io_input_r_payload_id,
+ output [1:0] io_input_r_payload_resp,
+ output io_input_r_payload_last,
+ output io_output_aw_valid,
+ input io_output_aw_ready,
+ output [31:0] io_output_aw_payload_addr,
+ output [7:0] io_output_aw_payload_id,
+ output [3:0] io_output_aw_payload_region,
+ output [7:0] io_output_aw_payload_len,
+ output [2:0] io_output_aw_payload_size,
+ output [1:0] io_output_aw_payload_burst,
+ output [0:0] io_output_aw_payload_lock,
+ output [3:0] io_output_aw_payload_cache,
+ output [3:0] io_output_aw_payload_qos,
+ output [2:0] io_output_aw_payload_prot,
+ output io_output_w_valid,
+ input io_output_w_ready,
+ output [127:0] io_output_w_payload_data,
+ output [15:0] io_output_w_payload_strb,
+ output io_output_w_payload_last,
+ input io_output_b_valid,
+ output io_output_b_ready,
+ input [7:0] io_output_b_payload_id,
+ input [1:0] io_output_b_payload_resp,
+ output io_output_ar_valid,
+ input io_output_ar_ready,
+ output [31:0] io_output_ar_payload_addr,
+ output [7:0] io_output_ar_payload_id,
+ output [3:0] io_output_ar_payload_region,
+ output [7:0] io_output_ar_payload_len,
+ output [2:0] io_output_ar_payload_size,
+ output [1:0] io_output_ar_payload_burst,
+ output [0:0] io_output_ar_payload_lock,
+ output [3:0] io_output_ar_payload_cache,
+ output [3:0] io_output_ar_payload_qos,
+ output [2:0] io_output_ar_payload_prot,
+ input io_output_r_valid,
+ output io_output_r_ready,
+ input [127:0] io_output_r_payload_data,
+ input [7:0] io_output_r_payload_id,
+ input [1:0] io_output_r_payload_resp,
+ input io_output_r_payload_last,
+ input clk,
+ input reset
+);
+
+ wire readOnly_io_input_ar_ready;
+ wire readOnly_io_input_r_valid;
+ wire [31:0] readOnly_io_input_r_payload_data;
+ wire [7:0] readOnly_io_input_r_payload_id;
+ wire [1:0] readOnly_io_input_r_payload_resp;
+ wire readOnly_io_input_r_payload_last;
+ wire readOnly_io_output_ar_valid;
+ wire [31:0] readOnly_io_output_ar_payload_addr;
+ wire [7:0] readOnly_io_output_ar_payload_id;
+ wire [3:0] readOnly_io_output_ar_payload_region;
+ wire [7:0] readOnly_io_output_ar_payload_len;
+ wire [2:0] readOnly_io_output_ar_payload_size;
+ wire [1:0] readOnly_io_output_ar_payload_burst;
+ wire [0:0] readOnly_io_output_ar_payload_lock;
+ wire [3:0] readOnly_io_output_ar_payload_cache;
+ wire [3:0] readOnly_io_output_ar_payload_qos;
+ wire [2:0] readOnly_io_output_ar_payload_prot;
+ wire readOnly_io_output_r_ready;
+ wire writeOnly_io_input_aw_ready;
+ wire writeOnly_io_input_w_ready;
+ wire writeOnly_io_input_b_valid;
+ wire [7:0] writeOnly_io_input_b_payload_id;
+ wire [1:0] writeOnly_io_input_b_payload_resp;
+ wire writeOnly_io_output_aw_valid;
+ wire [31:0] writeOnly_io_output_aw_payload_addr;
+ wire [7:0] writeOnly_io_output_aw_payload_id;
+ wire [3:0] writeOnly_io_output_aw_payload_region;
+ wire [7:0] writeOnly_io_output_aw_payload_len;
+ wire [2:0] writeOnly_io_output_aw_payload_size;
+ wire [1:0] writeOnly_io_output_aw_payload_burst;
+ wire [0:0] writeOnly_io_output_aw_payload_lock;
+ wire [3:0] writeOnly_io_output_aw_payload_cache;
+ wire [3:0] writeOnly_io_output_aw_payload_qos;
+ wire [2:0] writeOnly_io_output_aw_payload_prot;
+ wire writeOnly_io_output_w_valid;
+ wire [127:0] writeOnly_io_output_w_payload_data;
+ wire [15:0] writeOnly_io_output_w_payload_strb;
+ wire writeOnly_io_output_w_payload_last;
+ wire writeOnly_io_output_b_ready;
+
+ Asic32To128UpsizerAxi4ReadOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 readOnly (
+ .io_input_ar_valid (io_input_ar_valid ), //i
+ .io_input_ar_ready (readOnly_io_input_ar_ready ), //o
+ .io_input_ar_payload_addr (io_input_ar_payload_addr[31:0] ), //i
+ .io_input_ar_payload_id (io_input_ar_payload_id[7:0] ), //i
+ .io_input_ar_payload_region (io_input_ar_payload_region[3:0] ), //i
+ .io_input_ar_payload_len (io_input_ar_payload_len[7:0] ), //i
+ .io_input_ar_payload_size (io_input_ar_payload_size[2:0] ), //i
+ .io_input_ar_payload_burst (io_input_ar_payload_burst[1:0] ), //i
+ .io_input_ar_payload_lock (io_input_ar_payload_lock ), //i
+ .io_input_ar_payload_cache (io_input_ar_payload_cache[3:0] ), //i
+ .io_input_ar_payload_qos (io_input_ar_payload_qos[3:0] ), //i
+ .io_input_ar_payload_prot (io_input_ar_payload_prot[2:0] ), //i
+ .io_input_r_valid (readOnly_io_input_r_valid ), //o
+ .io_input_r_ready (io_input_r_ready ), //i
+ .io_input_r_payload_data (readOnly_io_input_r_payload_data[31:0] ), //o
+ .io_input_r_payload_id (readOnly_io_input_r_payload_id[7:0] ), //o
+ .io_input_r_payload_resp (readOnly_io_input_r_payload_resp[1:0] ), //o
+ .io_input_r_payload_last (readOnly_io_input_r_payload_last ), //o
+ .io_output_ar_valid (readOnly_io_output_ar_valid ), //o
+ .io_output_ar_ready (io_output_ar_ready ), //i
+ .io_output_ar_payload_addr (readOnly_io_output_ar_payload_addr[31:0] ), //o
+ .io_output_ar_payload_id (readOnly_io_output_ar_payload_id[7:0] ), //o
+ .io_output_ar_payload_region (readOnly_io_output_ar_payload_region[3:0]), //o
+ .io_output_ar_payload_len (readOnly_io_output_ar_payload_len[7:0] ), //o
+ .io_output_ar_payload_size (readOnly_io_output_ar_payload_size[2:0] ), //o
+ .io_output_ar_payload_burst (readOnly_io_output_ar_payload_burst[1:0] ), //o
+ .io_output_ar_payload_lock (readOnly_io_output_ar_payload_lock ), //o
+ .io_output_ar_payload_cache (readOnly_io_output_ar_payload_cache[3:0] ), //o
+ .io_output_ar_payload_qos (readOnly_io_output_ar_payload_qos[3:0] ), //o
+ .io_output_ar_payload_prot (readOnly_io_output_ar_payload_prot[2:0] ), //o
+ .io_output_r_valid (io_output_r_valid ), //i
+ .io_output_r_ready (readOnly_io_output_r_ready ), //o
+ .io_output_r_payload_data (io_output_r_payload_data[127:0] ), //i
+ .io_output_r_payload_id (io_output_r_payload_id[7:0] ), //i
+ .io_output_r_payload_resp (io_output_r_payload_resp[1:0] ), //i
+ .io_output_r_payload_last (io_output_r_payload_last ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Asic32To128UpsizerAxi4WriteOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 writeOnly (
+ .io_input_aw_valid (io_input_aw_valid ), //i
+ .io_input_aw_ready (writeOnly_io_input_aw_ready ), //o
+ .io_input_aw_payload_addr (io_input_aw_payload_addr[31:0] ), //i
+ .io_input_aw_payload_id (io_input_aw_payload_id[7:0] ), //i
+ .io_input_aw_payload_region (io_input_aw_payload_region[3:0] ), //i
+ .io_input_aw_payload_len (io_input_aw_payload_len[7:0] ), //i
+ .io_input_aw_payload_size (io_input_aw_payload_size[2:0] ), //i
+ .io_input_aw_payload_burst (io_input_aw_payload_burst[1:0] ), //i
+ .io_input_aw_payload_lock (io_input_aw_payload_lock ), //i
+ .io_input_aw_payload_cache (io_input_aw_payload_cache[3:0] ), //i
+ .io_input_aw_payload_qos (io_input_aw_payload_qos[3:0] ), //i
+ .io_input_aw_payload_prot (io_input_aw_payload_prot[2:0] ), //i
+ .io_input_w_valid (io_input_w_valid ), //i
+ .io_input_w_ready (writeOnly_io_input_w_ready ), //o
+ .io_input_w_payload_data (io_input_w_payload_data[31:0] ), //i
+ .io_input_w_payload_strb (io_input_w_payload_strb[3:0] ), //i
+ .io_input_w_payload_last (io_input_w_payload_last ), //i
+ .io_input_b_valid (writeOnly_io_input_b_valid ), //o
+ .io_input_b_ready (io_input_b_ready ), //i
+ .io_input_b_payload_id (writeOnly_io_input_b_payload_id[7:0] ), //o
+ .io_input_b_payload_resp (writeOnly_io_input_b_payload_resp[1:0] ), //o
+ .io_output_aw_valid (writeOnly_io_output_aw_valid ), //o
+ .io_output_aw_ready (io_output_aw_ready ), //i
+ .io_output_aw_payload_addr (writeOnly_io_output_aw_payload_addr[31:0] ), //o
+ .io_output_aw_payload_id (writeOnly_io_output_aw_payload_id[7:0] ), //o
+ .io_output_aw_payload_region (writeOnly_io_output_aw_payload_region[3:0]), //o
+ .io_output_aw_payload_len (writeOnly_io_output_aw_payload_len[7:0] ), //o
+ .io_output_aw_payload_size (writeOnly_io_output_aw_payload_size[2:0] ), //o
+ .io_output_aw_payload_burst (writeOnly_io_output_aw_payload_burst[1:0] ), //o
+ .io_output_aw_payload_lock (writeOnly_io_output_aw_payload_lock ), //o
+ .io_output_aw_payload_cache (writeOnly_io_output_aw_payload_cache[3:0] ), //o
+ .io_output_aw_payload_qos (writeOnly_io_output_aw_payload_qos[3:0] ), //o
+ .io_output_aw_payload_prot (writeOnly_io_output_aw_payload_prot[2:0] ), //o
+ .io_output_w_valid (writeOnly_io_output_w_valid ), //o
+ .io_output_w_ready (io_output_w_ready ), //i
+ .io_output_w_payload_data (writeOnly_io_output_w_payload_data[127:0] ), //o
+ .io_output_w_payload_strb (writeOnly_io_output_w_payload_strb[15:0] ), //o
+ .io_output_w_payload_last (writeOnly_io_output_w_payload_last ), //o
+ .io_output_b_valid (io_output_b_valid ), //i
+ .io_output_b_ready (writeOnly_io_output_b_ready ), //o
+ .io_output_b_payload_id (io_output_b_payload_id[7:0] ), //i
+ .io_output_b_payload_resp (io_output_b_payload_resp[1:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign io_input_ar_ready = readOnly_io_input_ar_ready;
+ assign io_input_r_valid = readOnly_io_input_r_valid;
+ assign io_input_r_payload_data = readOnly_io_input_r_payload_data;
+ assign io_input_r_payload_id = readOnly_io_input_r_payload_id;
+ assign io_input_r_payload_resp = readOnly_io_input_r_payload_resp;
+ assign io_input_r_payload_last = readOnly_io_input_r_payload_last;
+ assign io_input_aw_ready = writeOnly_io_input_aw_ready;
+ assign io_input_w_ready = writeOnly_io_input_w_ready;
+ assign io_input_b_valid = writeOnly_io_input_b_valid;
+ assign io_input_b_payload_id = writeOnly_io_input_b_payload_id;
+ assign io_input_b_payload_resp = writeOnly_io_input_b_payload_resp;
+ assign io_output_ar_valid = readOnly_io_output_ar_valid;
+ assign io_output_ar_payload_addr = readOnly_io_output_ar_payload_addr;
+ assign io_output_ar_payload_id = readOnly_io_output_ar_payload_id;
+ assign io_output_ar_payload_region = readOnly_io_output_ar_payload_region;
+ assign io_output_ar_payload_len = readOnly_io_output_ar_payload_len;
+ assign io_output_ar_payload_size = readOnly_io_output_ar_payload_size;
+ assign io_output_ar_payload_burst = readOnly_io_output_ar_payload_burst;
+ assign io_output_ar_payload_lock = readOnly_io_output_ar_payload_lock;
+ assign io_output_ar_payload_cache = readOnly_io_output_ar_payload_cache;
+ assign io_output_ar_payload_qos = readOnly_io_output_ar_payload_qos;
+ assign io_output_ar_payload_prot = readOnly_io_output_ar_payload_prot;
+ assign io_output_r_ready = readOnly_io_output_r_ready;
+ assign io_output_aw_valid = writeOnly_io_output_aw_valid;
+ assign io_output_aw_payload_addr = writeOnly_io_output_aw_payload_addr;
+ assign io_output_aw_payload_id = writeOnly_io_output_aw_payload_id;
+ assign io_output_aw_payload_region = writeOnly_io_output_aw_payload_region;
+ assign io_output_aw_payload_len = writeOnly_io_output_aw_payload_len;
+ assign io_output_aw_payload_size = writeOnly_io_output_aw_payload_size;
+ assign io_output_aw_payload_burst = writeOnly_io_output_aw_payload_burst;
+ assign io_output_aw_payload_lock = writeOnly_io_output_aw_payload_lock;
+ assign io_output_aw_payload_cache = writeOnly_io_output_aw_payload_cache;
+ assign io_output_aw_payload_qos = writeOnly_io_output_aw_payload_qos;
+ assign io_output_aw_payload_prot = writeOnly_io_output_aw_payload_prot;
+ assign io_output_w_valid = writeOnly_io_output_w_valid;
+ assign io_output_w_payload_data = writeOnly_io_output_w_payload_data;
+ assign io_output_w_payload_strb = writeOnly_io_output_w_payload_strb;
+ assign io_output_w_payload_last = writeOnly_io_output_w_payload_last;
+ assign io_output_b_ready = writeOnly_io_output_b_ready;
+
+endmodule
+
+module Asic32To128UpsizerAxi4WriteOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_aw_valid,
+ output reg io_input_aw_ready,
+ input [31:0] io_input_aw_payload_addr,
+ input [7:0] io_input_aw_payload_id,
+ input [3:0] io_input_aw_payload_region,
+ input [7:0] io_input_aw_payload_len,
+ input [2:0] io_input_aw_payload_size,
+ input [1:0] io_input_aw_payload_burst,
+ input [0:0] io_input_aw_payload_lock,
+ input [3:0] io_input_aw_payload_cache,
+ input [3:0] io_input_aw_payload_qos,
+ input [2:0] io_input_aw_payload_prot,
+ input io_input_w_valid,
+ output io_input_w_ready,
+ input [31:0] io_input_w_payload_data,
+ input [3:0] io_input_w_payload_strb,
+ input io_input_w_payload_last,
+ output io_input_b_valid,
+ input io_input_b_ready,
+ output [7:0] io_input_b_payload_id,
+ output [1:0] io_input_b_payload_resp,
+ output io_output_aw_valid,
+ input io_output_aw_ready,
+ output [31:0] io_output_aw_payload_addr,
+ output [7:0] io_output_aw_payload_id,
+ output [3:0] io_output_aw_payload_region,
+ output reg [7:0] io_output_aw_payload_len,
+ output reg [2:0] io_output_aw_payload_size,
+ output [1:0] io_output_aw_payload_burst,
+ output [0:0] io_output_aw_payload_lock,
+ output [3:0] io_output_aw_payload_cache,
+ output [3:0] io_output_aw_payload_qos,
+ output [2:0] io_output_aw_payload_prot,
+ output io_output_w_valid,
+ input io_output_w_ready,
+ output [127:0] io_output_w_payload_data,
+ output [15:0] io_output_w_payload_strb,
+ output io_output_w_payload_last,
+ input io_output_b_valid,
+ output io_output_b_ready,
+ input [7:0] io_output_b_payload_id,
+ input [1:0] io_output_b_payload_resp,
+ input clk,
+ input reset
+);
+
+ wire [14:0] _zz_cmdLogic_byteCount;
+ wire [10:0] _zz_cmdLogic_incrLen;
+ wire [10:0] _zz_cmdLogic_incrLen_1;
+ wire [3:0] _zz_cmdLogic_incrLen_2;
+ wire [4:0] _zz_dataLogic_byteCounterNext;
+ wire [7:0] _zz_dataLogic_byteCounterNext_1;
+ reg [15:0] _zz_dataLogic_byteActivity;
+ wire [1:0] _zz_dataLogic_byteActivity_1;
+ wire cmdLogic_outputFork_valid;
+ wire cmdLogic_outputFork_ready;
+ wire [31:0] cmdLogic_outputFork_payload_addr;
+ wire [7:0] cmdLogic_outputFork_payload_id;
+ wire [3:0] cmdLogic_outputFork_payload_region;
+ wire [7:0] cmdLogic_outputFork_payload_len;
+ wire [2:0] cmdLogic_outputFork_payload_size;
+ wire [1:0] cmdLogic_outputFork_payload_burst;
+ wire [0:0] cmdLogic_outputFork_payload_lock;
+ wire [3:0] cmdLogic_outputFork_payload_cache;
+ wire [3:0] cmdLogic_outputFork_payload_qos;
+ wire [2:0] cmdLogic_outputFork_payload_prot;
+ wire cmdLogic_dataFork_valid;
+ wire cmdLogic_dataFork_ready;
+ wire [31:0] cmdLogic_dataFork_payload_addr;
+ wire [7:0] cmdLogic_dataFork_payload_id;
+ wire [3:0] cmdLogic_dataFork_payload_region;
+ wire [7:0] cmdLogic_dataFork_payload_len;
+ wire [2:0] cmdLogic_dataFork_payload_size;
+ wire [1:0] cmdLogic_dataFork_payload_burst;
+ wire [0:0] cmdLogic_dataFork_payload_lock;
+ wire [3:0] cmdLogic_dataFork_payload_cache;
+ wire [3:0] cmdLogic_dataFork_payload_qos;
+ wire [2:0] cmdLogic_dataFork_payload_prot;
+ reg io_input_aw_fork2_logic_linkEnable_0;
+ reg io_input_aw_fork2_logic_linkEnable_1;
+ wire when_Stream_l993;
+ wire when_Stream_l993_1;
+ wire cmdLogic_outputFork_fire;
+ wire cmdLogic_dataFork_fire;
+ wire [9:0] cmdLogic_byteCount;
+ wire [6:0] cmdLogic_incrLen;
+ wire when_Axi4Upsizer_l21;
+ wire when_Axi4Upsizer_l24;
+ reg [3:0] dataLogic_byteCounter;
+ reg [2:0] dataLogic_size;
+ reg dataLogic_outputValid;
+ reg dataLogic_outputLast;
+ reg dataLogic_busy;
+ reg dataLogic_incrementByteCounter;
+ reg dataLogic_alwaysFire;
+ wire [4:0] dataLogic_byteCounterNext;
+ reg [127:0] dataLogic_dataBuffer;
+ reg [15:0] dataLogic_maskBuffer;
+ wire [15:0] dataLogic_byteActivity;
+ wire io_output_w_fire;
+ wire io_output_w_isStall;
+ wire io_input_w_fire;
+ wire when_Axi4Upsizer_l59;
+ wire when_Axi4Upsizer_l59_1;
+ wire when_Axi4Upsizer_l59_2;
+ wire when_Axi4Upsizer_l59_3;
+ wire when_Axi4Upsizer_l59_4;
+ wire when_Axi4Upsizer_l59_5;
+ wire when_Axi4Upsizer_l59_6;
+ wire when_Axi4Upsizer_l59_7;
+ wire when_Axi4Upsizer_l59_8;
+ wire when_Axi4Upsizer_l59_9;
+ wire when_Axi4Upsizer_l59_10;
+ wire when_Axi4Upsizer_l59_11;
+ wire when_Axi4Upsizer_l59_12;
+ wire when_Axi4Upsizer_l59_13;
+ wire when_Axi4Upsizer_l59_14;
+ wire when_Axi4Upsizer_l59_15;
+ wire cmdLogic_dataFork_fire_1;
+ wire when_Axi4Upsizer_l68;
+ wire when_Axi4Upsizer_l68_1;
+ wire when_Axi4Upsizer_l68_2;
+ wire when_Axi4Upsizer_l68_3;
+
+ assign _zz_cmdLogic_byteCount = ({7'd0,io_input_aw_payload_len} <<< io_input_aw_payload_size);
+ assign _zz_cmdLogic_incrLen = ({1'b0,cmdLogic_byteCount} + _zz_cmdLogic_incrLen_1);
+ assign _zz_cmdLogic_incrLen_2 = io_input_aw_payload_addr[3 : 0];
+ assign _zz_cmdLogic_incrLen_1 = {7'd0, _zz_cmdLogic_incrLen_2};
+ assign _zz_dataLogic_byteCounterNext_1 = ({7'd0,1'b1} <<< dataLogic_size);
+ assign _zz_dataLogic_byteCounterNext = _zz_dataLogic_byteCounterNext_1[4:0];
+ assign _zz_dataLogic_byteActivity_1 = dataLogic_size[1:0];
+ always @(*) begin
+ case(_zz_dataLogic_byteActivity_1)
+ 2'b00 : _zz_dataLogic_byteActivity = 16'h0001;
+ 2'b01 : _zz_dataLogic_byteActivity = 16'h0003;
+ 2'b10 : _zz_dataLogic_byteActivity = 16'h000f;
+ default : _zz_dataLogic_byteActivity = 16'h00ff;
+ endcase
+ end
+
+ always @(*) begin
+ io_input_aw_ready = 1'b1;
+ if(when_Stream_l993) begin
+ io_input_aw_ready = 1'b0;
+ end
+ if(when_Stream_l993_1) begin
+ io_input_aw_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l993 = ((! cmdLogic_outputFork_ready) && io_input_aw_fork2_logic_linkEnable_0);
+ assign when_Stream_l993_1 = ((! cmdLogic_dataFork_ready) && io_input_aw_fork2_logic_linkEnable_1);
+ assign cmdLogic_outputFork_valid = (io_input_aw_valid && io_input_aw_fork2_logic_linkEnable_0);
+ assign cmdLogic_outputFork_payload_addr = io_input_aw_payload_addr;
+ assign cmdLogic_outputFork_payload_id = io_input_aw_payload_id;
+ assign cmdLogic_outputFork_payload_region = io_input_aw_payload_region;
+ assign cmdLogic_outputFork_payload_len = io_input_aw_payload_len;
+ assign cmdLogic_outputFork_payload_size = io_input_aw_payload_size;
+ assign cmdLogic_outputFork_payload_burst = io_input_aw_payload_burst;
+ assign cmdLogic_outputFork_payload_lock = io_input_aw_payload_lock;
+ assign cmdLogic_outputFork_payload_cache = io_input_aw_payload_cache;
+ assign cmdLogic_outputFork_payload_qos = io_input_aw_payload_qos;
+ assign cmdLogic_outputFork_payload_prot = io_input_aw_payload_prot;
+ assign cmdLogic_outputFork_fire = (cmdLogic_outputFork_valid && cmdLogic_outputFork_ready);
+ assign cmdLogic_dataFork_valid = (io_input_aw_valid && io_input_aw_fork2_logic_linkEnable_1);
+ assign cmdLogic_dataFork_payload_addr = io_input_aw_payload_addr;
+ assign cmdLogic_dataFork_payload_id = io_input_aw_payload_id;
+ assign cmdLogic_dataFork_payload_region = io_input_aw_payload_region;
+ assign cmdLogic_dataFork_payload_len = io_input_aw_payload_len;
+ assign cmdLogic_dataFork_payload_size = io_input_aw_payload_size;
+ assign cmdLogic_dataFork_payload_burst = io_input_aw_payload_burst;
+ assign cmdLogic_dataFork_payload_lock = io_input_aw_payload_lock;
+ assign cmdLogic_dataFork_payload_cache = io_input_aw_payload_cache;
+ assign cmdLogic_dataFork_payload_qos = io_input_aw_payload_qos;
+ assign cmdLogic_dataFork_payload_prot = io_input_aw_payload_prot;
+ assign cmdLogic_dataFork_fire = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign io_output_aw_valid = cmdLogic_outputFork_valid;
+ assign cmdLogic_outputFork_ready = io_output_aw_ready;
+ assign io_output_aw_payload_addr = cmdLogic_outputFork_payload_addr;
+ assign io_output_aw_payload_id = cmdLogic_outputFork_payload_id;
+ assign io_output_aw_payload_region = cmdLogic_outputFork_payload_region;
+ always @(*) begin
+ io_output_aw_payload_len = cmdLogic_outputFork_payload_len;
+ if(when_Axi4Upsizer_l21) begin
+ io_output_aw_payload_len = {1'd0, cmdLogic_incrLen};
+ end
+ end
+
+ always @(*) begin
+ io_output_aw_payload_size = cmdLogic_outputFork_payload_size;
+ if(when_Axi4Upsizer_l21) begin
+ io_output_aw_payload_size = 3'b100;
+ if(when_Axi4Upsizer_l24) begin
+ io_output_aw_payload_size = io_input_aw_payload_size;
+ end
+ end
+ end
+
+ assign io_output_aw_payload_burst = cmdLogic_outputFork_payload_burst;
+ assign io_output_aw_payload_lock = cmdLogic_outputFork_payload_lock;
+ assign io_output_aw_payload_cache = cmdLogic_outputFork_payload_cache;
+ assign io_output_aw_payload_qos = cmdLogic_outputFork_payload_qos;
+ assign io_output_aw_payload_prot = cmdLogic_outputFork_payload_prot;
+ assign cmdLogic_byteCount = _zz_cmdLogic_byteCount[9:0];
+ assign cmdLogic_incrLen = _zz_cmdLogic_incrLen[10 : 4];
+ assign when_Axi4Upsizer_l21 = (io_output_aw_payload_burst == 2'b01);
+ assign when_Axi4Upsizer_l24 = (io_input_aw_payload_len == 8'h00);
+ assign dataLogic_byteCounterNext = ({1'b0,dataLogic_byteCounter} + _zz_dataLogic_byteCounterNext);
+ assign dataLogic_byteActivity = (_zz_dataLogic_byteActivity <<< dataLogic_byteCounter);
+ assign io_output_w_fire = (io_output_w_valid && io_output_w_ready);
+ assign io_output_w_valid = dataLogic_outputValid;
+ assign io_output_w_isStall = (io_output_w_valid && (! io_output_w_ready));
+ assign io_input_w_ready = (dataLogic_busy && (! io_output_w_isStall));
+ assign io_output_w_payload_data = dataLogic_dataBuffer;
+ assign io_output_w_payload_strb = dataLogic_maskBuffer;
+ assign io_output_w_payload_last = dataLogic_outputLast;
+ assign io_input_w_fire = (io_input_w_valid && io_input_w_ready);
+ assign when_Axi4Upsizer_l59 = dataLogic_byteActivity[0];
+ assign when_Axi4Upsizer_l59_1 = dataLogic_byteActivity[1];
+ assign when_Axi4Upsizer_l59_2 = dataLogic_byteActivity[2];
+ assign when_Axi4Upsizer_l59_3 = dataLogic_byteActivity[3];
+ assign when_Axi4Upsizer_l59_4 = dataLogic_byteActivity[4];
+ assign when_Axi4Upsizer_l59_5 = dataLogic_byteActivity[5];
+ assign when_Axi4Upsizer_l59_6 = dataLogic_byteActivity[6];
+ assign when_Axi4Upsizer_l59_7 = dataLogic_byteActivity[7];
+ assign when_Axi4Upsizer_l59_8 = dataLogic_byteActivity[8];
+ assign when_Axi4Upsizer_l59_9 = dataLogic_byteActivity[9];
+ assign when_Axi4Upsizer_l59_10 = dataLogic_byteActivity[10];
+ assign when_Axi4Upsizer_l59_11 = dataLogic_byteActivity[11];
+ assign when_Axi4Upsizer_l59_12 = dataLogic_byteActivity[12];
+ assign when_Axi4Upsizer_l59_13 = dataLogic_byteActivity[13];
+ assign when_Axi4Upsizer_l59_14 = dataLogic_byteActivity[14];
+ assign when_Axi4Upsizer_l59_15 = dataLogic_byteActivity[15];
+ assign cmdLogic_dataFork_fire_1 = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign when_Axi4Upsizer_l68 = (3'b000 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_1 = (3'b001 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_2 = (3'b010 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_3 = (3'b011 < cmdLogic_dataFork_payload_size);
+ assign cmdLogic_dataFork_ready = (! dataLogic_busy);
+ assign io_input_b_valid = io_output_b_valid;
+ assign io_output_b_ready = io_input_b_ready;
+ assign io_input_b_payload_id = io_output_b_payload_id;
+ assign io_input_b_payload_resp = io_output_b_payload_resp;
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b1;
+ dataLogic_outputValid <= 1'b0;
+ dataLogic_busy <= 1'b0;
+ dataLogic_maskBuffer <= 16'h0000;
+ end else begin
+ if(cmdLogic_outputFork_fire) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdLogic_dataFork_fire) begin
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_aw_ready) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(io_output_w_ready) begin
+ dataLogic_outputValid <= 1'b0;
+ end
+ if(io_output_w_fire) begin
+ dataLogic_maskBuffer <= 16'h0000;
+ end
+ if(io_input_w_fire) begin
+ dataLogic_outputValid <= ((dataLogic_byteCounterNext[4] || io_input_w_payload_last) || dataLogic_alwaysFire);
+ if(io_input_w_payload_last) begin
+ dataLogic_busy <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l59) begin
+ dataLogic_maskBuffer[0] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_1) begin
+ dataLogic_maskBuffer[1] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_2) begin
+ dataLogic_maskBuffer[2] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_3) begin
+ dataLogic_maskBuffer[3] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_4) begin
+ dataLogic_maskBuffer[4] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_5) begin
+ dataLogic_maskBuffer[5] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_6) begin
+ dataLogic_maskBuffer[6] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_7) begin
+ dataLogic_maskBuffer[7] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_8) begin
+ dataLogic_maskBuffer[8] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_9) begin
+ dataLogic_maskBuffer[9] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_10) begin
+ dataLogic_maskBuffer[10] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_11) begin
+ dataLogic_maskBuffer[11] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_12) begin
+ dataLogic_maskBuffer[12] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_13) begin
+ dataLogic_maskBuffer[13] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_14) begin
+ dataLogic_maskBuffer[14] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_15) begin
+ dataLogic_maskBuffer[15] <= io_input_w_payload_strb[3];
+ end
+ end
+ if(cmdLogic_dataFork_fire_1) begin
+ dataLogic_busy <= 1'b1;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_input_w_fire) begin
+ if(dataLogic_incrementByteCounter) begin
+ dataLogic_byteCounter <= dataLogic_byteCounterNext[3:0];
+ end
+ dataLogic_outputLast <= io_input_w_payload_last;
+ if(when_Axi4Upsizer_l59) begin
+ dataLogic_dataBuffer[7 : 0] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_1) begin
+ dataLogic_dataBuffer[15 : 8] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_2) begin
+ dataLogic_dataBuffer[23 : 16] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_3) begin
+ dataLogic_dataBuffer[31 : 24] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_4) begin
+ dataLogic_dataBuffer[39 : 32] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_5) begin
+ dataLogic_dataBuffer[47 : 40] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_6) begin
+ dataLogic_dataBuffer[55 : 48] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_7) begin
+ dataLogic_dataBuffer[63 : 56] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_8) begin
+ dataLogic_dataBuffer[71 : 64] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_9) begin
+ dataLogic_dataBuffer[79 : 72] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_10) begin
+ dataLogic_dataBuffer[87 : 80] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_11) begin
+ dataLogic_dataBuffer[95 : 88] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_12) begin
+ dataLogic_dataBuffer[103 : 96] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_13) begin
+ dataLogic_dataBuffer[111 : 104] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_14) begin
+ dataLogic_dataBuffer[119 : 112] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_15) begin
+ dataLogic_dataBuffer[127 : 120] <= io_input_w_payload_data[31 : 24];
+ end
+ end
+ if(cmdLogic_dataFork_fire_1) begin
+ dataLogic_byteCounter <= cmdLogic_dataFork_payload_addr[3:0];
+ if(when_Axi4Upsizer_l68) begin
+ dataLogic_byteCounter[0] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_1) begin
+ dataLogic_byteCounter[1] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_2) begin
+ dataLogic_byteCounter[2] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_3) begin
+ dataLogic_byteCounter[3] <= 1'b0;
+ end
+ dataLogic_size <= cmdLogic_dataFork_payload_size;
+ dataLogic_alwaysFire <= (! (cmdLogic_dataFork_payload_burst == 2'b01));
+ dataLogic_incrementByteCounter <= (! (cmdLogic_dataFork_payload_burst == 2'b00));
+ end
+ end
+
+
+endmodule
+
+module Asic32To128UpsizerAxi4ReadOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_ar_valid,
+ output reg io_input_ar_ready,
+ input [31:0] io_input_ar_payload_addr,
+ input [7:0] io_input_ar_payload_id,
+ input [3:0] io_input_ar_payload_region,
+ input [7:0] io_input_ar_payload_len,
+ input [2:0] io_input_ar_payload_size,
+ input [1:0] io_input_ar_payload_burst,
+ input [0:0] io_input_ar_payload_lock,
+ input [3:0] io_input_ar_payload_cache,
+ input [3:0] io_input_ar_payload_qos,
+ input [2:0] io_input_ar_payload_prot,
+ output io_input_r_valid,
+ input io_input_r_ready,
+ output [31:0] io_input_r_payload_data,
+ output [7:0] io_input_r_payload_id,
+ output [1:0] io_input_r_payload_resp,
+ output io_input_r_payload_last,
+ output io_output_ar_valid,
+ input io_output_ar_ready,
+ output [31:0] io_output_ar_payload_addr,
+ output [7:0] io_output_ar_payload_id,
+ output [3:0] io_output_ar_payload_region,
+ output [7:0] io_output_ar_payload_len,
+ output reg [2:0] io_output_ar_payload_size,
+ output [1:0] io_output_ar_payload_burst,
+ output [0:0] io_output_ar_payload_lock,
+ output [3:0] io_output_ar_payload_cache,
+ output [3:0] io_output_ar_payload_qos,
+ output [2:0] io_output_ar_payload_prot,
+ input io_output_r_valid,
+ output io_output_r_ready,
+ input [127:0] io_output_r_payload_data,
+ input [7:0] io_output_r_payload_id,
+ input [1:0] io_output_r_payload_resp,
+ input io_output_r_payload_last,
+ input clk,
+ input reset
+);
+
+ wire dataLogic_cmdPush_fifo_io_pop_ready;
+ wire dataLogic_cmdPush_fifo_io_push_ready;
+ wire dataLogic_cmdPush_fifo_io_pop_valid;
+ wire [3:0] dataLogic_cmdPush_fifo_io_pop_payload_startAt;
+ wire [3:0] dataLogic_cmdPush_fifo_io_pop_payload_endAt;
+ wire [2:0] dataLogic_cmdPush_fifo_io_pop_payload_size;
+ wire [7:0] dataLogic_cmdPush_fifo_io_pop_payload_id;
+ wire [4:0] dataLogic_cmdPush_fifo_io_occupancy;
+ wire [4:0] dataLogic_cmdPush_fifo_io_availability;
+ wire [14:0] _zz_cmdLogic_byteCount;
+ wire [10:0] _zz_cmdLogic_incrLen;
+ wire [10:0] _zz_cmdLogic_incrLen_1;
+ wire [3:0] _zz_cmdLogic_incrLen_2;
+ wire [31:0] _zz_dataLogic_cmdPush_payload_endAt;
+ wire [31:0] _zz_dataLogic_cmdPush_payload_endAt_1;
+ wire [14:0] _zz_dataLogic_cmdPush_payload_endAt_2;
+ wire [4:0] _zz_dataLogic_byteCounterNext;
+ wire [7:0] _zz_dataLogic_byteCounterNext_1;
+ reg [31:0] _zz_io_input_r_payload_data;
+ wire [1:0] _zz_io_input_r_payload_data_1;
+ wire cmdLogic_outputFork_valid;
+ wire cmdLogic_outputFork_ready;
+ wire [31:0] cmdLogic_outputFork_payload_addr;
+ wire [7:0] cmdLogic_outputFork_payload_id;
+ wire [3:0] cmdLogic_outputFork_payload_region;
+ wire [7:0] cmdLogic_outputFork_payload_len;
+ wire [2:0] cmdLogic_outputFork_payload_size;
+ wire [1:0] cmdLogic_outputFork_payload_burst;
+ wire [0:0] cmdLogic_outputFork_payload_lock;
+ wire [3:0] cmdLogic_outputFork_payload_cache;
+ wire [3:0] cmdLogic_outputFork_payload_qos;
+ wire [2:0] cmdLogic_outputFork_payload_prot;
+ wire cmdLogic_dataFork_valid;
+ wire cmdLogic_dataFork_ready;
+ wire [31:0] cmdLogic_dataFork_payload_addr;
+ wire [7:0] cmdLogic_dataFork_payload_id;
+ wire [3:0] cmdLogic_dataFork_payload_region;
+ wire [7:0] cmdLogic_dataFork_payload_len;
+ wire [2:0] cmdLogic_dataFork_payload_size;
+ wire [1:0] cmdLogic_dataFork_payload_burst;
+ wire [0:0] cmdLogic_dataFork_payload_lock;
+ wire [3:0] cmdLogic_dataFork_payload_cache;
+ wire [3:0] cmdLogic_dataFork_payload_qos;
+ wire [2:0] cmdLogic_dataFork_payload_prot;
+ reg io_input_ar_fork2_logic_linkEnable_0;
+ reg io_input_ar_fork2_logic_linkEnable_1;
+ wire when_Stream_l993;
+ wire when_Stream_l993_1;
+ wire cmdLogic_outputFork_fire;
+ wire cmdLogic_dataFork_fire;
+ wire [9:0] cmdLogic_byteCount;
+ wire [6:0] cmdLogic_incrLen;
+ wire when_Axi4Upsizer_l108;
+ wire dataLogic_cmdPush_valid;
+ wire dataLogic_cmdPush_ready;
+ wire [3:0] dataLogic_cmdPush_payload_startAt;
+ wire [3:0] dataLogic_cmdPush_payload_endAt;
+ wire [2:0] dataLogic_cmdPush_payload_size;
+ wire [7:0] dataLogic_cmdPush_payload_id;
+ reg [2:0] dataLogic_size;
+ reg dataLogic_busy;
+ reg [7:0] dataLogic_id;
+ reg [3:0] dataLogic_byteCounter;
+ reg [3:0] dataLogic_byteCounterLast;
+ wire [4:0] dataLogic_byteCounterNext;
+ wire readOnly_dataLogic_cmdPush_fifo_io_pop_fire;
+ wire io_input_r_fire;
+
+ assign _zz_cmdLogic_byteCount = ({7'd0,io_input_ar_payload_len} <<< io_input_ar_payload_size);
+ assign _zz_cmdLogic_incrLen = ({1'b0,cmdLogic_byteCount} + _zz_cmdLogic_incrLen_1);
+ assign _zz_cmdLogic_incrLen_2 = io_input_ar_payload_addr[3 : 0];
+ assign _zz_cmdLogic_incrLen_1 = {7'd0, _zz_cmdLogic_incrLen_2};
+ assign _zz_dataLogic_cmdPush_payload_endAt = (cmdLogic_dataFork_payload_addr + _zz_dataLogic_cmdPush_payload_endAt_1);
+ assign _zz_dataLogic_cmdPush_payload_endAt_2 = ({7'd0,cmdLogic_dataFork_payload_len} <<< cmdLogic_dataFork_payload_size);
+ assign _zz_dataLogic_cmdPush_payload_endAt_1 = {17'd0, _zz_dataLogic_cmdPush_payload_endAt_2};
+ assign _zz_dataLogic_byteCounterNext_1 = ({7'd0,1'b1} <<< dataLogic_size);
+ assign _zz_dataLogic_byteCounterNext = _zz_dataLogic_byteCounterNext_1[4:0];
+ assign _zz_io_input_r_payload_data_1 = (dataLogic_byteCounter >>> 2'd2);
+ Asic32To128UpsizerStreamFifo_5b3f2212c953407c83e1cf8c9cc77ea9 dataLogic_cmdPush_fifo (
+ .io_push_valid (dataLogic_cmdPush_valid ), //i
+ .io_push_ready (dataLogic_cmdPush_fifo_io_push_ready ), //o
+ .io_push_payload_startAt (dataLogic_cmdPush_payload_startAt[3:0] ), //i
+ .io_push_payload_endAt (dataLogic_cmdPush_payload_endAt[3:0] ), //i
+ .io_push_payload_size (dataLogic_cmdPush_payload_size[2:0] ), //i
+ .io_push_payload_id (dataLogic_cmdPush_payload_id[7:0] ), //i
+ .io_pop_valid (dataLogic_cmdPush_fifo_io_pop_valid ), //o
+ .io_pop_ready (dataLogic_cmdPush_fifo_io_pop_ready ), //i
+ .io_pop_payload_startAt (dataLogic_cmdPush_fifo_io_pop_payload_startAt[3:0]), //o
+ .io_pop_payload_endAt (dataLogic_cmdPush_fifo_io_pop_payload_endAt[3:0] ), //o
+ .io_pop_payload_size (dataLogic_cmdPush_fifo_io_pop_payload_size[2:0] ), //o
+ .io_pop_payload_id (dataLogic_cmdPush_fifo_io_pop_payload_id[7:0] ), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (dataLogic_cmdPush_fifo_io_occupancy[4:0] ), //o
+ .io_availability (dataLogic_cmdPush_fifo_io_availability[4:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ case(_zz_io_input_r_payload_data_1)
+ 2'b00 : _zz_io_input_r_payload_data = io_output_r_payload_data[31 : 0];
+ 2'b01 : _zz_io_input_r_payload_data = io_output_r_payload_data[63 : 32];
+ 2'b10 : _zz_io_input_r_payload_data = io_output_r_payload_data[95 : 64];
+ default : _zz_io_input_r_payload_data = io_output_r_payload_data[127 : 96];
+ endcase
+ end
+
+ always @(*) begin
+ io_input_ar_ready = 1'b1;
+ if(when_Stream_l993) begin
+ io_input_ar_ready = 1'b0;
+ end
+ if(when_Stream_l993_1) begin
+ io_input_ar_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l993 = ((! cmdLogic_outputFork_ready) && io_input_ar_fork2_logic_linkEnable_0);
+ assign when_Stream_l993_1 = ((! cmdLogic_dataFork_ready) && io_input_ar_fork2_logic_linkEnable_1);
+ assign cmdLogic_outputFork_valid = (io_input_ar_valid && io_input_ar_fork2_logic_linkEnable_0);
+ assign cmdLogic_outputFork_payload_addr = io_input_ar_payload_addr;
+ assign cmdLogic_outputFork_payload_id = io_input_ar_payload_id;
+ assign cmdLogic_outputFork_payload_region = io_input_ar_payload_region;
+ assign cmdLogic_outputFork_payload_len = io_input_ar_payload_len;
+ assign cmdLogic_outputFork_payload_size = io_input_ar_payload_size;
+ assign cmdLogic_outputFork_payload_burst = io_input_ar_payload_burst;
+ assign cmdLogic_outputFork_payload_lock = io_input_ar_payload_lock;
+ assign cmdLogic_outputFork_payload_cache = io_input_ar_payload_cache;
+ assign cmdLogic_outputFork_payload_qos = io_input_ar_payload_qos;
+ assign cmdLogic_outputFork_payload_prot = io_input_ar_payload_prot;
+ assign cmdLogic_outputFork_fire = (cmdLogic_outputFork_valid && cmdLogic_outputFork_ready);
+ assign cmdLogic_dataFork_valid = (io_input_ar_valid && io_input_ar_fork2_logic_linkEnable_1);
+ assign cmdLogic_dataFork_payload_addr = io_input_ar_payload_addr;
+ assign cmdLogic_dataFork_payload_id = io_input_ar_payload_id;
+ assign cmdLogic_dataFork_payload_region = io_input_ar_payload_region;
+ assign cmdLogic_dataFork_payload_len = io_input_ar_payload_len;
+ assign cmdLogic_dataFork_payload_size = io_input_ar_payload_size;
+ assign cmdLogic_dataFork_payload_burst = io_input_ar_payload_burst;
+ assign cmdLogic_dataFork_payload_lock = io_input_ar_payload_lock;
+ assign cmdLogic_dataFork_payload_cache = io_input_ar_payload_cache;
+ assign cmdLogic_dataFork_payload_qos = io_input_ar_payload_qos;
+ assign cmdLogic_dataFork_payload_prot = io_input_ar_payload_prot;
+ assign cmdLogic_dataFork_fire = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign io_output_ar_valid = cmdLogic_outputFork_valid;
+ assign cmdLogic_outputFork_ready = io_output_ar_ready;
+ assign io_output_ar_payload_addr = cmdLogic_outputFork_payload_addr;
+ assign io_output_ar_payload_region = cmdLogic_outputFork_payload_region;
+ assign io_output_ar_payload_burst = cmdLogic_outputFork_payload_burst;
+ assign io_output_ar_payload_lock = cmdLogic_outputFork_payload_lock;
+ assign io_output_ar_payload_cache = cmdLogic_outputFork_payload_cache;
+ assign io_output_ar_payload_qos = cmdLogic_outputFork_payload_qos;
+ assign io_output_ar_payload_prot = cmdLogic_outputFork_payload_prot;
+ assign cmdLogic_byteCount = _zz_cmdLogic_byteCount[9:0];
+ assign cmdLogic_incrLen = _zz_cmdLogic_incrLen[10 : 4];
+ always @(*) begin
+ io_output_ar_payload_size = 3'b100;
+ if(when_Axi4Upsizer_l108) begin
+ io_output_ar_payload_size = io_input_ar_payload_size;
+ end
+ end
+
+ assign io_output_ar_payload_len = {1'd0, cmdLogic_incrLen};
+ assign io_output_ar_payload_id = 8'h00;
+ assign when_Axi4Upsizer_l108 = (io_input_ar_payload_len == 8'h00);
+ assign dataLogic_cmdPush_valid = cmdLogic_dataFork_valid;
+ assign cmdLogic_dataFork_ready = dataLogic_cmdPush_ready;
+ assign dataLogic_cmdPush_payload_startAt = cmdLogic_dataFork_payload_addr[3:0];
+ assign dataLogic_cmdPush_payload_endAt = _zz_dataLogic_cmdPush_payload_endAt[3:0];
+ assign dataLogic_cmdPush_payload_size = cmdLogic_dataFork_payload_size;
+ assign dataLogic_cmdPush_payload_id = cmdLogic_dataFork_payload_id;
+ assign dataLogic_cmdPush_ready = dataLogic_cmdPush_fifo_io_push_ready;
+ assign dataLogic_byteCounterNext = ({1'b0,dataLogic_byteCounter} + _zz_dataLogic_byteCounterNext);
+ assign readOnly_dataLogic_cmdPush_fifo_io_pop_fire = (dataLogic_cmdPush_fifo_io_pop_valid && dataLogic_cmdPush_fifo_io_pop_ready);
+ assign dataLogic_cmdPush_fifo_io_pop_ready = (! dataLogic_busy);
+ assign io_input_r_fire = (io_input_r_valid && io_input_r_ready);
+ assign io_input_r_valid = (io_output_r_valid && dataLogic_busy);
+ assign io_input_r_payload_last = (io_output_r_payload_last && (dataLogic_byteCounter == dataLogic_byteCounterLast));
+ assign io_input_r_payload_resp = io_output_r_payload_resp;
+ assign io_input_r_payload_data = _zz_io_input_r_payload_data;
+ assign io_input_r_payload_id = dataLogic_id;
+ assign io_output_r_ready = ((dataLogic_busy && io_input_r_ready) && (io_input_r_payload_last || dataLogic_byteCounterNext[4]));
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b1;
+ dataLogic_busy <= 1'b0;
+ end else begin
+ if(cmdLogic_outputFork_fire) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdLogic_dataFork_fire) begin
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_ar_ready) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(readOnly_dataLogic_cmdPush_fifo_io_pop_fire) begin
+ dataLogic_busy <= 1'b1;
+ end
+ if(io_input_r_fire) begin
+ if(io_input_r_payload_last) begin
+ dataLogic_busy <= 1'b0;
+ end
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(readOnly_dataLogic_cmdPush_fifo_io_pop_fire) begin
+ dataLogic_byteCounter <= dataLogic_cmdPush_fifo_io_pop_payload_startAt;
+ dataLogic_byteCounterLast <= dataLogic_cmdPush_fifo_io_pop_payload_endAt;
+ dataLogic_size <= dataLogic_cmdPush_fifo_io_pop_payload_size;
+ dataLogic_id <= dataLogic_cmdPush_fifo_io_pop_payload_id;
+ end
+ if(io_input_r_fire) begin
+ dataLogic_byteCounter <= dataLogic_byteCounterNext[3:0];
+ end
+ end
+
+
+endmodule
+
+module Asic32To128UpsizerStreamFifo_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_push_valid,
+ output io_push_ready,
+ input [3:0] io_push_payload_startAt,
+ input [3:0] io_push_payload_endAt,
+ input [2:0] io_push_payload_size,
+ input [7:0] io_push_payload_id,
+ output io_pop_valid,
+ input io_pop_ready,
+ output [3:0] io_pop_payload_startAt,
+ output [3:0] io_pop_payload_endAt,
+ output [2:0] io_pop_payload_size,
+ output [7:0] io_pop_payload_id,
+ input io_flush,
+ output [4:0] io_occupancy,
+ output [4:0] io_availability,
+ input clk,
+ input reset
+);
+
+ reg [18:0] _zz_logic_ram_port0;
+ wire [3:0] _zz_logic_pushPtr_valueNext;
+ wire [0:0] _zz_logic_pushPtr_valueNext_1;
+ wire [3:0] _zz_logic_popPtr_valueNext;
+ wire [0:0] _zz_logic_popPtr_valueNext_1;
+ wire _zz__zz_logic_ram_port0;
+ wire _zz__zz_io_pop_payload_startAt;
+ wire [18:0] _zz__zz_logic_ram_port1;
+ wire [3:0] _zz_io_availability;
+ reg _zz_1;
+ reg logic_pushPtr_willIncrement;
+ reg logic_pushPtr_willClear;
+ reg [3:0] logic_pushPtr_valueNext;
+ reg [3:0] logic_pushPtr_value;
+ wire logic_pushPtr_willOverflowIfInc;
+ wire logic_pushPtr_willOverflow;
+ reg logic_popPtr_willIncrement;
+ reg logic_popPtr_willClear;
+ reg [3:0] logic_popPtr_valueNext;
+ reg [3:0] logic_popPtr_value;
+ wire logic_popPtr_willOverflowIfInc;
+ wire logic_popPtr_willOverflow;
+ wire logic_ptrMatch;
+ reg logic_risingOccupancy;
+ wire logic_pushing;
+ wire logic_popping;
+ wire logic_empty;
+ wire logic_full;
+ reg _zz_io_pop_valid;
+ wire [18:0] _zz_io_pop_payload_startAt;
+ wire when_Stream_l1123;
+ wire [3:0] logic_ptrDif;
+ reg [18:0] logic_ram [0:15];
+
+ assign _zz_logic_pushPtr_valueNext_1 = logic_pushPtr_willIncrement;
+ assign _zz_logic_pushPtr_valueNext = {3'd0, _zz_logic_pushPtr_valueNext_1};
+ assign _zz_logic_popPtr_valueNext_1 = logic_popPtr_willIncrement;
+ assign _zz_logic_popPtr_valueNext = {3'd0, _zz_logic_popPtr_valueNext_1};
+ assign _zz_io_availability = (logic_popPtr_value - logic_pushPtr_value);
+ assign _zz__zz_io_pop_payload_startAt = 1'b1;
+ assign _zz__zz_logic_ram_port1 = {io_push_payload_id,{io_push_payload_size,{io_push_payload_endAt,io_push_payload_startAt}}};
+ always @(posedge clk) begin
+ if(_zz__zz_io_pop_payload_startAt) begin
+ _zz_logic_ram_port0 <= logic_ram[logic_popPtr_valueNext];
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_pushPtr_value] <= _zz__zz_logic_ram_port1;
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_pushing) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_pushPtr_willIncrement = 1'b0;
+ if(logic_pushing) begin
+ logic_pushPtr_willIncrement = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_pushPtr_willClear = 1'b0;
+ if(io_flush) begin
+ logic_pushPtr_willClear = 1'b1;
+ end
+ end
+
+ assign logic_pushPtr_willOverflowIfInc = (logic_pushPtr_value == 4'b1111);
+ assign logic_pushPtr_willOverflow = (logic_pushPtr_willOverflowIfInc && logic_pushPtr_willIncrement);
+ always @(*) begin
+ logic_pushPtr_valueNext = (logic_pushPtr_value + _zz_logic_pushPtr_valueNext);
+ if(logic_pushPtr_willClear) begin
+ logic_pushPtr_valueNext = 4'b0000;
+ end
+ end
+
+ always @(*) begin
+ logic_popPtr_willIncrement = 1'b0;
+ if(logic_popping) begin
+ logic_popPtr_willIncrement = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_popPtr_willClear = 1'b0;
+ if(io_flush) begin
+ logic_popPtr_willClear = 1'b1;
+ end
+ end
+
+ assign logic_popPtr_willOverflowIfInc = (logic_popPtr_value == 4'b1111);
+ assign logic_popPtr_willOverflow = (logic_popPtr_willOverflowIfInc && logic_popPtr_willIncrement);
+ always @(*) begin
+ logic_popPtr_valueNext = (logic_popPtr_value + _zz_logic_popPtr_valueNext);
+ if(logic_popPtr_willClear) begin
+ logic_popPtr_valueNext = 4'b0000;
+ end
+ end
+
+ assign logic_ptrMatch = (logic_pushPtr_value == logic_popPtr_value);
+ assign logic_pushing = (io_push_valid && io_push_ready);
+ assign logic_popping = (io_pop_valid && io_pop_ready);
+ assign logic_empty = (logic_ptrMatch && (! logic_risingOccupancy));
+ assign logic_full = (logic_ptrMatch && logic_risingOccupancy);
+ assign io_push_ready = (! logic_full);
+ assign io_pop_valid = ((! logic_empty) && (! (_zz_io_pop_valid && (! logic_full))));
+ assign _zz_io_pop_payload_startAt = _zz_logic_ram_port0;
+ assign io_pop_payload_startAt = _zz_io_pop_payload_startAt[3 : 0];
+ assign io_pop_payload_endAt = _zz_io_pop_payload_startAt[7 : 4];
+ assign io_pop_payload_size = _zz_io_pop_payload_startAt[10 : 8];
+ assign io_pop_payload_id = _zz_io_pop_payload_startAt[18 : 11];
+ assign when_Stream_l1123 = (logic_pushing != logic_popping);
+ assign logic_ptrDif = (logic_pushPtr_value - logic_popPtr_value);
+ assign io_occupancy = {(logic_risingOccupancy && logic_ptrMatch),logic_ptrDif};
+ assign io_availability = {((! logic_risingOccupancy) && logic_ptrMatch),_zz_io_availability};
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ logic_pushPtr_value <= 4'b0000;
+ logic_popPtr_value <= 4'b0000;
+ logic_risingOccupancy <= 1'b0;
+ _zz_io_pop_valid <= 1'b0;
+ end else begin
+ logic_pushPtr_value <= logic_pushPtr_valueNext;
+ logic_popPtr_value <= logic_popPtr_valueNext;
+ _zz_io_pop_valid <= (logic_popPtr_valueNext == logic_pushPtr_value);
+ if(when_Stream_l1123) begin
+ logic_risingOccupancy <= logic_pushing;
+ end
+ if(io_flush) begin
+ logic_risingOccupancy <= 1'b0;
+ end
+ end
+ end
+
+
+endmodule
+
+
+// Generator : SpinalHDL dev git head : 9cdee03b276638ef8e7a948b606bb7acc6e4c8d0
+// Component : Asic32To256UpsizerAxi4Upsizer_5b3f2212c953407c83e1cf8c9cc77ea9
+// Git hash : cd16421fb7a4d44431a2445f9a92b82070ab9b8a
+
+`timescale 1ns/1ps
+
+module Asic32To256UpsizerAxi4Upsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_aw_valid,
+ output io_input_aw_ready,
+ input [31:0] io_input_aw_payload_addr,
+ input [7:0] io_input_aw_payload_id,
+ input [3:0] io_input_aw_payload_region,
+ input [7:0] io_input_aw_payload_len,
+ input [2:0] io_input_aw_payload_size,
+ input [1:0] io_input_aw_payload_burst,
+ input [0:0] io_input_aw_payload_lock,
+ input [3:0] io_input_aw_payload_cache,
+ input [3:0] io_input_aw_payload_qos,
+ input [2:0] io_input_aw_payload_prot,
+ input io_input_w_valid,
+ output io_input_w_ready,
+ input [31:0] io_input_w_payload_data,
+ input [3:0] io_input_w_payload_strb,
+ input io_input_w_payload_last,
+ output io_input_b_valid,
+ input io_input_b_ready,
+ output [7:0] io_input_b_payload_id,
+ output [1:0] io_input_b_payload_resp,
+ input io_input_ar_valid,
+ output io_input_ar_ready,
+ input [31:0] io_input_ar_payload_addr,
+ input [7:0] io_input_ar_payload_id,
+ input [3:0] io_input_ar_payload_region,
+ input [7:0] io_input_ar_payload_len,
+ input [2:0] io_input_ar_payload_size,
+ input [1:0] io_input_ar_payload_burst,
+ input [0:0] io_input_ar_payload_lock,
+ input [3:0] io_input_ar_payload_cache,
+ input [3:0] io_input_ar_payload_qos,
+ input [2:0] io_input_ar_payload_prot,
+ output io_input_r_valid,
+ input io_input_r_ready,
+ output [31:0] io_input_r_payload_data,
+ output [7:0] io_input_r_payload_id,
+ output [1:0] io_input_r_payload_resp,
+ output io_input_r_payload_last,
+ output io_output_aw_valid,
+ input io_output_aw_ready,
+ output [31:0] io_output_aw_payload_addr,
+ output [7:0] io_output_aw_payload_id,
+ output [3:0] io_output_aw_payload_region,
+ output [7:0] io_output_aw_payload_len,
+ output [2:0] io_output_aw_payload_size,
+ output [1:0] io_output_aw_payload_burst,
+ output [0:0] io_output_aw_payload_lock,
+ output [3:0] io_output_aw_payload_cache,
+ output [3:0] io_output_aw_payload_qos,
+ output [2:0] io_output_aw_payload_prot,
+ output io_output_w_valid,
+ input io_output_w_ready,
+ output [255:0] io_output_w_payload_data,
+ output [31:0] io_output_w_payload_strb,
+ output io_output_w_payload_last,
+ input io_output_b_valid,
+ output io_output_b_ready,
+ input [7:0] io_output_b_payload_id,
+ input [1:0] io_output_b_payload_resp,
+ output io_output_ar_valid,
+ input io_output_ar_ready,
+ output [31:0] io_output_ar_payload_addr,
+ output [7:0] io_output_ar_payload_id,
+ output [3:0] io_output_ar_payload_region,
+ output [7:0] io_output_ar_payload_len,
+ output [2:0] io_output_ar_payload_size,
+ output [1:0] io_output_ar_payload_burst,
+ output [0:0] io_output_ar_payload_lock,
+ output [3:0] io_output_ar_payload_cache,
+ output [3:0] io_output_ar_payload_qos,
+ output [2:0] io_output_ar_payload_prot,
+ input io_output_r_valid,
+ output io_output_r_ready,
+ input [255:0] io_output_r_payload_data,
+ input [7:0] io_output_r_payload_id,
+ input [1:0] io_output_r_payload_resp,
+ input io_output_r_payload_last,
+ input clk,
+ input reset
+);
+
+ wire readOnly_io_input_ar_ready;
+ wire readOnly_io_input_r_valid;
+ wire [31:0] readOnly_io_input_r_payload_data;
+ wire [7:0] readOnly_io_input_r_payload_id;
+ wire [1:0] readOnly_io_input_r_payload_resp;
+ wire readOnly_io_input_r_payload_last;
+ wire readOnly_io_output_ar_valid;
+ wire [31:0] readOnly_io_output_ar_payload_addr;
+ wire [7:0] readOnly_io_output_ar_payload_id;
+ wire [3:0] readOnly_io_output_ar_payload_region;
+ wire [7:0] readOnly_io_output_ar_payload_len;
+ wire [2:0] readOnly_io_output_ar_payload_size;
+ wire [1:0] readOnly_io_output_ar_payload_burst;
+ wire [0:0] readOnly_io_output_ar_payload_lock;
+ wire [3:0] readOnly_io_output_ar_payload_cache;
+ wire [3:0] readOnly_io_output_ar_payload_qos;
+ wire [2:0] readOnly_io_output_ar_payload_prot;
+ wire readOnly_io_output_r_ready;
+ wire writeOnly_io_input_aw_ready;
+ wire writeOnly_io_input_w_ready;
+ wire writeOnly_io_input_b_valid;
+ wire [7:0] writeOnly_io_input_b_payload_id;
+ wire [1:0] writeOnly_io_input_b_payload_resp;
+ wire writeOnly_io_output_aw_valid;
+ wire [31:0] writeOnly_io_output_aw_payload_addr;
+ wire [7:0] writeOnly_io_output_aw_payload_id;
+ wire [3:0] writeOnly_io_output_aw_payload_region;
+ wire [7:0] writeOnly_io_output_aw_payload_len;
+ wire [2:0] writeOnly_io_output_aw_payload_size;
+ wire [1:0] writeOnly_io_output_aw_payload_burst;
+ wire [0:0] writeOnly_io_output_aw_payload_lock;
+ wire [3:0] writeOnly_io_output_aw_payload_cache;
+ wire [3:0] writeOnly_io_output_aw_payload_qos;
+ wire [2:0] writeOnly_io_output_aw_payload_prot;
+ wire writeOnly_io_output_w_valid;
+ wire [255:0] writeOnly_io_output_w_payload_data;
+ wire [31:0] writeOnly_io_output_w_payload_strb;
+ wire writeOnly_io_output_w_payload_last;
+ wire writeOnly_io_output_b_ready;
+
+ Asic32To256UpsizerAxi4ReadOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 readOnly (
+ .io_input_ar_valid (io_input_ar_valid ), //i
+ .io_input_ar_ready (readOnly_io_input_ar_ready ), //o
+ .io_input_ar_payload_addr (io_input_ar_payload_addr[31:0] ), //i
+ .io_input_ar_payload_id (io_input_ar_payload_id[7:0] ), //i
+ .io_input_ar_payload_region (io_input_ar_payload_region[3:0] ), //i
+ .io_input_ar_payload_len (io_input_ar_payload_len[7:0] ), //i
+ .io_input_ar_payload_size (io_input_ar_payload_size[2:0] ), //i
+ .io_input_ar_payload_burst (io_input_ar_payload_burst[1:0] ), //i
+ .io_input_ar_payload_lock (io_input_ar_payload_lock ), //i
+ .io_input_ar_payload_cache (io_input_ar_payload_cache[3:0] ), //i
+ .io_input_ar_payload_qos (io_input_ar_payload_qos[3:0] ), //i
+ .io_input_ar_payload_prot (io_input_ar_payload_prot[2:0] ), //i
+ .io_input_r_valid (readOnly_io_input_r_valid ), //o
+ .io_input_r_ready (io_input_r_ready ), //i
+ .io_input_r_payload_data (readOnly_io_input_r_payload_data[31:0] ), //o
+ .io_input_r_payload_id (readOnly_io_input_r_payload_id[7:0] ), //o
+ .io_input_r_payload_resp (readOnly_io_input_r_payload_resp[1:0] ), //o
+ .io_input_r_payload_last (readOnly_io_input_r_payload_last ), //o
+ .io_output_ar_valid (readOnly_io_output_ar_valid ), //o
+ .io_output_ar_ready (io_output_ar_ready ), //i
+ .io_output_ar_payload_addr (readOnly_io_output_ar_payload_addr[31:0] ), //o
+ .io_output_ar_payload_id (readOnly_io_output_ar_payload_id[7:0] ), //o
+ .io_output_ar_payload_region (readOnly_io_output_ar_payload_region[3:0]), //o
+ .io_output_ar_payload_len (readOnly_io_output_ar_payload_len[7:0] ), //o
+ .io_output_ar_payload_size (readOnly_io_output_ar_payload_size[2:0] ), //o
+ .io_output_ar_payload_burst (readOnly_io_output_ar_payload_burst[1:0] ), //o
+ .io_output_ar_payload_lock (readOnly_io_output_ar_payload_lock ), //o
+ .io_output_ar_payload_cache (readOnly_io_output_ar_payload_cache[3:0] ), //o
+ .io_output_ar_payload_qos (readOnly_io_output_ar_payload_qos[3:0] ), //o
+ .io_output_ar_payload_prot (readOnly_io_output_ar_payload_prot[2:0] ), //o
+ .io_output_r_valid (io_output_r_valid ), //i
+ .io_output_r_ready (readOnly_io_output_r_ready ), //o
+ .io_output_r_payload_data (io_output_r_payload_data[255:0] ), //i
+ .io_output_r_payload_id (io_output_r_payload_id[7:0] ), //i
+ .io_output_r_payload_resp (io_output_r_payload_resp[1:0] ), //i
+ .io_output_r_payload_last (io_output_r_payload_last ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Asic32To256UpsizerAxi4WriteOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 writeOnly (
+ .io_input_aw_valid (io_input_aw_valid ), //i
+ .io_input_aw_ready (writeOnly_io_input_aw_ready ), //o
+ .io_input_aw_payload_addr (io_input_aw_payload_addr[31:0] ), //i
+ .io_input_aw_payload_id (io_input_aw_payload_id[7:0] ), //i
+ .io_input_aw_payload_region (io_input_aw_payload_region[3:0] ), //i
+ .io_input_aw_payload_len (io_input_aw_payload_len[7:0] ), //i
+ .io_input_aw_payload_size (io_input_aw_payload_size[2:0] ), //i
+ .io_input_aw_payload_burst (io_input_aw_payload_burst[1:0] ), //i
+ .io_input_aw_payload_lock (io_input_aw_payload_lock ), //i
+ .io_input_aw_payload_cache (io_input_aw_payload_cache[3:0] ), //i
+ .io_input_aw_payload_qos (io_input_aw_payload_qos[3:0] ), //i
+ .io_input_aw_payload_prot (io_input_aw_payload_prot[2:0] ), //i
+ .io_input_w_valid (io_input_w_valid ), //i
+ .io_input_w_ready (writeOnly_io_input_w_ready ), //o
+ .io_input_w_payload_data (io_input_w_payload_data[31:0] ), //i
+ .io_input_w_payload_strb (io_input_w_payload_strb[3:0] ), //i
+ .io_input_w_payload_last (io_input_w_payload_last ), //i
+ .io_input_b_valid (writeOnly_io_input_b_valid ), //o
+ .io_input_b_ready (io_input_b_ready ), //i
+ .io_input_b_payload_id (writeOnly_io_input_b_payload_id[7:0] ), //o
+ .io_input_b_payload_resp (writeOnly_io_input_b_payload_resp[1:0] ), //o
+ .io_output_aw_valid (writeOnly_io_output_aw_valid ), //o
+ .io_output_aw_ready (io_output_aw_ready ), //i
+ .io_output_aw_payload_addr (writeOnly_io_output_aw_payload_addr[31:0] ), //o
+ .io_output_aw_payload_id (writeOnly_io_output_aw_payload_id[7:0] ), //o
+ .io_output_aw_payload_region (writeOnly_io_output_aw_payload_region[3:0]), //o
+ .io_output_aw_payload_len (writeOnly_io_output_aw_payload_len[7:0] ), //o
+ .io_output_aw_payload_size (writeOnly_io_output_aw_payload_size[2:0] ), //o
+ .io_output_aw_payload_burst (writeOnly_io_output_aw_payload_burst[1:0] ), //o
+ .io_output_aw_payload_lock (writeOnly_io_output_aw_payload_lock ), //o
+ .io_output_aw_payload_cache (writeOnly_io_output_aw_payload_cache[3:0] ), //o
+ .io_output_aw_payload_qos (writeOnly_io_output_aw_payload_qos[3:0] ), //o
+ .io_output_aw_payload_prot (writeOnly_io_output_aw_payload_prot[2:0] ), //o
+ .io_output_w_valid (writeOnly_io_output_w_valid ), //o
+ .io_output_w_ready (io_output_w_ready ), //i
+ .io_output_w_payload_data (writeOnly_io_output_w_payload_data[255:0] ), //o
+ .io_output_w_payload_strb (writeOnly_io_output_w_payload_strb[31:0] ), //o
+ .io_output_w_payload_last (writeOnly_io_output_w_payload_last ), //o
+ .io_output_b_valid (io_output_b_valid ), //i
+ .io_output_b_ready (writeOnly_io_output_b_ready ), //o
+ .io_output_b_payload_id (io_output_b_payload_id[7:0] ), //i
+ .io_output_b_payload_resp (io_output_b_payload_resp[1:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign io_input_ar_ready = readOnly_io_input_ar_ready;
+ assign io_input_r_valid = readOnly_io_input_r_valid;
+ assign io_input_r_payload_data = readOnly_io_input_r_payload_data;
+ assign io_input_r_payload_id = readOnly_io_input_r_payload_id;
+ assign io_input_r_payload_resp = readOnly_io_input_r_payload_resp;
+ assign io_input_r_payload_last = readOnly_io_input_r_payload_last;
+ assign io_input_aw_ready = writeOnly_io_input_aw_ready;
+ assign io_input_w_ready = writeOnly_io_input_w_ready;
+ assign io_input_b_valid = writeOnly_io_input_b_valid;
+ assign io_input_b_payload_id = writeOnly_io_input_b_payload_id;
+ assign io_input_b_payload_resp = writeOnly_io_input_b_payload_resp;
+ assign io_output_ar_valid = readOnly_io_output_ar_valid;
+ assign io_output_ar_payload_addr = readOnly_io_output_ar_payload_addr;
+ assign io_output_ar_payload_id = readOnly_io_output_ar_payload_id;
+ assign io_output_ar_payload_region = readOnly_io_output_ar_payload_region;
+ assign io_output_ar_payload_len = readOnly_io_output_ar_payload_len;
+ assign io_output_ar_payload_size = readOnly_io_output_ar_payload_size;
+ assign io_output_ar_payload_burst = readOnly_io_output_ar_payload_burst;
+ assign io_output_ar_payload_lock = readOnly_io_output_ar_payload_lock;
+ assign io_output_ar_payload_cache = readOnly_io_output_ar_payload_cache;
+ assign io_output_ar_payload_qos = readOnly_io_output_ar_payload_qos;
+ assign io_output_ar_payload_prot = readOnly_io_output_ar_payload_prot;
+ assign io_output_r_ready = readOnly_io_output_r_ready;
+ assign io_output_aw_valid = writeOnly_io_output_aw_valid;
+ assign io_output_aw_payload_addr = writeOnly_io_output_aw_payload_addr;
+ assign io_output_aw_payload_id = writeOnly_io_output_aw_payload_id;
+ assign io_output_aw_payload_region = writeOnly_io_output_aw_payload_region;
+ assign io_output_aw_payload_len = writeOnly_io_output_aw_payload_len;
+ assign io_output_aw_payload_size = writeOnly_io_output_aw_payload_size;
+ assign io_output_aw_payload_burst = writeOnly_io_output_aw_payload_burst;
+ assign io_output_aw_payload_lock = writeOnly_io_output_aw_payload_lock;
+ assign io_output_aw_payload_cache = writeOnly_io_output_aw_payload_cache;
+ assign io_output_aw_payload_qos = writeOnly_io_output_aw_payload_qos;
+ assign io_output_aw_payload_prot = writeOnly_io_output_aw_payload_prot;
+ assign io_output_w_valid = writeOnly_io_output_w_valid;
+ assign io_output_w_payload_data = writeOnly_io_output_w_payload_data;
+ assign io_output_w_payload_strb = writeOnly_io_output_w_payload_strb;
+ assign io_output_w_payload_last = writeOnly_io_output_w_payload_last;
+ assign io_output_b_ready = writeOnly_io_output_b_ready;
+
+endmodule
+
+module Asic32To256UpsizerAxi4WriteOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_aw_valid,
+ output reg io_input_aw_ready,
+ input [31:0] io_input_aw_payload_addr,
+ input [7:0] io_input_aw_payload_id,
+ input [3:0] io_input_aw_payload_region,
+ input [7:0] io_input_aw_payload_len,
+ input [2:0] io_input_aw_payload_size,
+ input [1:0] io_input_aw_payload_burst,
+ input [0:0] io_input_aw_payload_lock,
+ input [3:0] io_input_aw_payload_cache,
+ input [3:0] io_input_aw_payload_qos,
+ input [2:0] io_input_aw_payload_prot,
+ input io_input_w_valid,
+ output io_input_w_ready,
+ input [31:0] io_input_w_payload_data,
+ input [3:0] io_input_w_payload_strb,
+ input io_input_w_payload_last,
+ output io_input_b_valid,
+ input io_input_b_ready,
+ output [7:0] io_input_b_payload_id,
+ output [1:0] io_input_b_payload_resp,
+ output io_output_aw_valid,
+ input io_output_aw_ready,
+ output [31:0] io_output_aw_payload_addr,
+ output [7:0] io_output_aw_payload_id,
+ output [3:0] io_output_aw_payload_region,
+ output reg [7:0] io_output_aw_payload_len,
+ output reg [2:0] io_output_aw_payload_size,
+ output [1:0] io_output_aw_payload_burst,
+ output [0:0] io_output_aw_payload_lock,
+ output [3:0] io_output_aw_payload_cache,
+ output [3:0] io_output_aw_payload_qos,
+ output [2:0] io_output_aw_payload_prot,
+ output io_output_w_valid,
+ input io_output_w_ready,
+ output [255:0] io_output_w_payload_data,
+ output [31:0] io_output_w_payload_strb,
+ output io_output_w_payload_last,
+ input io_output_b_valid,
+ output io_output_b_ready,
+ input [7:0] io_output_b_payload_id,
+ input [1:0] io_output_b_payload_resp,
+ input clk,
+ input reset
+);
+
+ wire [14:0] _zz_cmdLogic_byteCount;
+ wire [10:0] _zz_cmdLogic_incrLen;
+ wire [10:0] _zz_cmdLogic_incrLen_1;
+ wire [4:0] _zz_cmdLogic_incrLen_2;
+ wire [5:0] _zz_dataLogic_byteCounterNext;
+ wire [7:0] _zz_dataLogic_byteCounterNext_1;
+ reg [31:0] _zz_dataLogic_byteActivity;
+ wire cmdLogic_outputFork_valid;
+ wire cmdLogic_outputFork_ready;
+ wire [31:0] cmdLogic_outputFork_payload_addr;
+ wire [7:0] cmdLogic_outputFork_payload_id;
+ wire [3:0] cmdLogic_outputFork_payload_region;
+ wire [7:0] cmdLogic_outputFork_payload_len;
+ wire [2:0] cmdLogic_outputFork_payload_size;
+ wire [1:0] cmdLogic_outputFork_payload_burst;
+ wire [0:0] cmdLogic_outputFork_payload_lock;
+ wire [3:0] cmdLogic_outputFork_payload_cache;
+ wire [3:0] cmdLogic_outputFork_payload_qos;
+ wire [2:0] cmdLogic_outputFork_payload_prot;
+ wire cmdLogic_dataFork_valid;
+ wire cmdLogic_dataFork_ready;
+ wire [31:0] cmdLogic_dataFork_payload_addr;
+ wire [7:0] cmdLogic_dataFork_payload_id;
+ wire [3:0] cmdLogic_dataFork_payload_region;
+ wire [7:0] cmdLogic_dataFork_payload_len;
+ wire [2:0] cmdLogic_dataFork_payload_size;
+ wire [1:0] cmdLogic_dataFork_payload_burst;
+ wire [0:0] cmdLogic_dataFork_payload_lock;
+ wire [3:0] cmdLogic_dataFork_payload_cache;
+ wire [3:0] cmdLogic_dataFork_payload_qos;
+ wire [2:0] cmdLogic_dataFork_payload_prot;
+ reg io_input_aw_fork2_logic_linkEnable_0;
+ reg io_input_aw_fork2_logic_linkEnable_1;
+ wire when_Stream_l993;
+ wire when_Stream_l993_1;
+ wire cmdLogic_outputFork_fire;
+ wire cmdLogic_dataFork_fire;
+ wire [9:0] cmdLogic_byteCount;
+ wire [5:0] cmdLogic_incrLen;
+ wire when_Axi4Upsizer_l21;
+ wire when_Axi4Upsizer_l24;
+ reg [4:0] dataLogic_byteCounter;
+ reg [2:0] dataLogic_size;
+ reg dataLogic_outputValid;
+ reg dataLogic_outputLast;
+ reg dataLogic_busy;
+ reg dataLogic_incrementByteCounter;
+ reg dataLogic_alwaysFire;
+ wire [5:0] dataLogic_byteCounterNext;
+ reg [255:0] dataLogic_dataBuffer;
+ reg [31:0] dataLogic_maskBuffer;
+ wire [31:0] dataLogic_byteActivity;
+ wire io_output_w_fire;
+ wire io_output_w_isStall;
+ wire io_input_w_fire;
+ wire when_Axi4Upsizer_l59;
+ wire when_Axi4Upsizer_l59_1;
+ wire when_Axi4Upsizer_l59_2;
+ wire when_Axi4Upsizer_l59_3;
+ wire when_Axi4Upsizer_l59_4;
+ wire when_Axi4Upsizer_l59_5;
+ wire when_Axi4Upsizer_l59_6;
+ wire when_Axi4Upsizer_l59_7;
+ wire when_Axi4Upsizer_l59_8;
+ wire when_Axi4Upsizer_l59_9;
+ wire when_Axi4Upsizer_l59_10;
+ wire when_Axi4Upsizer_l59_11;
+ wire when_Axi4Upsizer_l59_12;
+ wire when_Axi4Upsizer_l59_13;
+ wire when_Axi4Upsizer_l59_14;
+ wire when_Axi4Upsizer_l59_15;
+ wire when_Axi4Upsizer_l59_16;
+ wire when_Axi4Upsizer_l59_17;
+ wire when_Axi4Upsizer_l59_18;
+ wire when_Axi4Upsizer_l59_19;
+ wire when_Axi4Upsizer_l59_20;
+ wire when_Axi4Upsizer_l59_21;
+ wire when_Axi4Upsizer_l59_22;
+ wire when_Axi4Upsizer_l59_23;
+ wire when_Axi4Upsizer_l59_24;
+ wire when_Axi4Upsizer_l59_25;
+ wire when_Axi4Upsizer_l59_26;
+ wire when_Axi4Upsizer_l59_27;
+ wire when_Axi4Upsizer_l59_28;
+ wire when_Axi4Upsizer_l59_29;
+ wire when_Axi4Upsizer_l59_30;
+ wire when_Axi4Upsizer_l59_31;
+ wire cmdLogic_dataFork_fire_1;
+ wire when_Axi4Upsizer_l68;
+ wire when_Axi4Upsizer_l68_1;
+ wire when_Axi4Upsizer_l68_2;
+ wire when_Axi4Upsizer_l68_3;
+ wire when_Axi4Upsizer_l68_4;
+
+ assign _zz_cmdLogic_byteCount = ({7'd0,io_input_aw_payload_len} <<< io_input_aw_payload_size);
+ assign _zz_cmdLogic_incrLen = ({1'b0,cmdLogic_byteCount} + _zz_cmdLogic_incrLen_1);
+ assign _zz_cmdLogic_incrLen_2 = io_input_aw_payload_addr[4 : 0];
+ assign _zz_cmdLogic_incrLen_1 = {6'd0, _zz_cmdLogic_incrLen_2};
+ assign _zz_dataLogic_byteCounterNext_1 = ({7'd0,1'b1} <<< dataLogic_size);
+ assign _zz_dataLogic_byteCounterNext = _zz_dataLogic_byteCounterNext_1[5:0];
+ always @(*) begin
+ case(dataLogic_size)
+ 3'b000 : _zz_dataLogic_byteActivity = 32'h00000001;
+ 3'b001 : _zz_dataLogic_byteActivity = 32'h00000003;
+ 3'b010 : _zz_dataLogic_byteActivity = 32'h0000000f;
+ 3'b011 : _zz_dataLogic_byteActivity = 32'h000000ff;
+ default : _zz_dataLogic_byteActivity = 32'h0000ffff;
+ endcase
+ end
+
+ always @(*) begin
+ io_input_aw_ready = 1'b1;
+ if(when_Stream_l993) begin
+ io_input_aw_ready = 1'b0;
+ end
+ if(when_Stream_l993_1) begin
+ io_input_aw_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l993 = ((! cmdLogic_outputFork_ready) && io_input_aw_fork2_logic_linkEnable_0);
+ assign when_Stream_l993_1 = ((! cmdLogic_dataFork_ready) && io_input_aw_fork2_logic_linkEnable_1);
+ assign cmdLogic_outputFork_valid = (io_input_aw_valid && io_input_aw_fork2_logic_linkEnable_0);
+ assign cmdLogic_outputFork_payload_addr = io_input_aw_payload_addr;
+ assign cmdLogic_outputFork_payload_id = io_input_aw_payload_id;
+ assign cmdLogic_outputFork_payload_region = io_input_aw_payload_region;
+ assign cmdLogic_outputFork_payload_len = io_input_aw_payload_len;
+ assign cmdLogic_outputFork_payload_size = io_input_aw_payload_size;
+ assign cmdLogic_outputFork_payload_burst = io_input_aw_payload_burst;
+ assign cmdLogic_outputFork_payload_lock = io_input_aw_payload_lock;
+ assign cmdLogic_outputFork_payload_cache = io_input_aw_payload_cache;
+ assign cmdLogic_outputFork_payload_qos = io_input_aw_payload_qos;
+ assign cmdLogic_outputFork_payload_prot = io_input_aw_payload_prot;
+ assign cmdLogic_outputFork_fire = (cmdLogic_outputFork_valid && cmdLogic_outputFork_ready);
+ assign cmdLogic_dataFork_valid = (io_input_aw_valid && io_input_aw_fork2_logic_linkEnable_1);
+ assign cmdLogic_dataFork_payload_addr = io_input_aw_payload_addr;
+ assign cmdLogic_dataFork_payload_id = io_input_aw_payload_id;
+ assign cmdLogic_dataFork_payload_region = io_input_aw_payload_region;
+ assign cmdLogic_dataFork_payload_len = io_input_aw_payload_len;
+ assign cmdLogic_dataFork_payload_size = io_input_aw_payload_size;
+ assign cmdLogic_dataFork_payload_burst = io_input_aw_payload_burst;
+ assign cmdLogic_dataFork_payload_lock = io_input_aw_payload_lock;
+ assign cmdLogic_dataFork_payload_cache = io_input_aw_payload_cache;
+ assign cmdLogic_dataFork_payload_qos = io_input_aw_payload_qos;
+ assign cmdLogic_dataFork_payload_prot = io_input_aw_payload_prot;
+ assign cmdLogic_dataFork_fire = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign io_output_aw_valid = cmdLogic_outputFork_valid;
+ assign cmdLogic_outputFork_ready = io_output_aw_ready;
+ assign io_output_aw_payload_addr = cmdLogic_outputFork_payload_addr;
+ assign io_output_aw_payload_id = cmdLogic_outputFork_payload_id;
+ assign io_output_aw_payload_region = cmdLogic_outputFork_payload_region;
+ always @(*) begin
+ io_output_aw_payload_len = cmdLogic_outputFork_payload_len;
+ if(when_Axi4Upsizer_l21) begin
+ io_output_aw_payload_len = {2'd0, cmdLogic_incrLen};
+ end
+ end
+
+ always @(*) begin
+ io_output_aw_payload_size = cmdLogic_outputFork_payload_size;
+ if(when_Axi4Upsizer_l21) begin
+ io_output_aw_payload_size = 3'b101;
+ if(when_Axi4Upsizer_l24) begin
+ io_output_aw_payload_size = io_input_aw_payload_size;
+ end
+ end
+ end
+
+ assign io_output_aw_payload_burst = cmdLogic_outputFork_payload_burst;
+ assign io_output_aw_payload_lock = cmdLogic_outputFork_payload_lock;
+ assign io_output_aw_payload_cache = cmdLogic_outputFork_payload_cache;
+ assign io_output_aw_payload_qos = cmdLogic_outputFork_payload_qos;
+ assign io_output_aw_payload_prot = cmdLogic_outputFork_payload_prot;
+ assign cmdLogic_byteCount = _zz_cmdLogic_byteCount[9:0];
+ assign cmdLogic_incrLen = _zz_cmdLogic_incrLen[10 : 5];
+ assign when_Axi4Upsizer_l21 = (io_output_aw_payload_burst == 2'b01);
+ assign when_Axi4Upsizer_l24 = (io_input_aw_payload_len == 8'h00);
+ assign dataLogic_byteCounterNext = ({1'b0,dataLogic_byteCounter} + _zz_dataLogic_byteCounterNext);
+ assign dataLogic_byteActivity = (_zz_dataLogic_byteActivity <<< dataLogic_byteCounter);
+ assign io_output_w_fire = (io_output_w_valid && io_output_w_ready);
+ assign io_output_w_valid = dataLogic_outputValid;
+ assign io_output_w_isStall = (io_output_w_valid && (! io_output_w_ready));
+ assign io_input_w_ready = (dataLogic_busy && (! io_output_w_isStall));
+ assign io_output_w_payload_data = dataLogic_dataBuffer;
+ assign io_output_w_payload_strb = dataLogic_maskBuffer;
+ assign io_output_w_payload_last = dataLogic_outputLast;
+ assign io_input_w_fire = (io_input_w_valid && io_input_w_ready);
+ assign when_Axi4Upsizer_l59 = dataLogic_byteActivity[0];
+ assign when_Axi4Upsizer_l59_1 = dataLogic_byteActivity[1];
+ assign when_Axi4Upsizer_l59_2 = dataLogic_byteActivity[2];
+ assign when_Axi4Upsizer_l59_3 = dataLogic_byteActivity[3];
+ assign when_Axi4Upsizer_l59_4 = dataLogic_byteActivity[4];
+ assign when_Axi4Upsizer_l59_5 = dataLogic_byteActivity[5];
+ assign when_Axi4Upsizer_l59_6 = dataLogic_byteActivity[6];
+ assign when_Axi4Upsizer_l59_7 = dataLogic_byteActivity[7];
+ assign when_Axi4Upsizer_l59_8 = dataLogic_byteActivity[8];
+ assign when_Axi4Upsizer_l59_9 = dataLogic_byteActivity[9];
+ assign when_Axi4Upsizer_l59_10 = dataLogic_byteActivity[10];
+ assign when_Axi4Upsizer_l59_11 = dataLogic_byteActivity[11];
+ assign when_Axi4Upsizer_l59_12 = dataLogic_byteActivity[12];
+ assign when_Axi4Upsizer_l59_13 = dataLogic_byteActivity[13];
+ assign when_Axi4Upsizer_l59_14 = dataLogic_byteActivity[14];
+ assign when_Axi4Upsizer_l59_15 = dataLogic_byteActivity[15];
+ assign when_Axi4Upsizer_l59_16 = dataLogic_byteActivity[16];
+ assign when_Axi4Upsizer_l59_17 = dataLogic_byteActivity[17];
+ assign when_Axi4Upsizer_l59_18 = dataLogic_byteActivity[18];
+ assign when_Axi4Upsizer_l59_19 = dataLogic_byteActivity[19];
+ assign when_Axi4Upsizer_l59_20 = dataLogic_byteActivity[20];
+ assign when_Axi4Upsizer_l59_21 = dataLogic_byteActivity[21];
+ assign when_Axi4Upsizer_l59_22 = dataLogic_byteActivity[22];
+ assign when_Axi4Upsizer_l59_23 = dataLogic_byteActivity[23];
+ assign when_Axi4Upsizer_l59_24 = dataLogic_byteActivity[24];
+ assign when_Axi4Upsizer_l59_25 = dataLogic_byteActivity[25];
+ assign when_Axi4Upsizer_l59_26 = dataLogic_byteActivity[26];
+ assign when_Axi4Upsizer_l59_27 = dataLogic_byteActivity[27];
+ assign when_Axi4Upsizer_l59_28 = dataLogic_byteActivity[28];
+ assign when_Axi4Upsizer_l59_29 = dataLogic_byteActivity[29];
+ assign when_Axi4Upsizer_l59_30 = dataLogic_byteActivity[30];
+ assign when_Axi4Upsizer_l59_31 = dataLogic_byteActivity[31];
+ assign cmdLogic_dataFork_fire_1 = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign when_Axi4Upsizer_l68 = (3'b000 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_1 = (3'b001 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_2 = (3'b010 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_3 = (3'b011 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_4 = (3'b100 < cmdLogic_dataFork_payload_size);
+ assign cmdLogic_dataFork_ready = (! dataLogic_busy);
+ assign io_input_b_valid = io_output_b_valid;
+ assign io_output_b_ready = io_input_b_ready;
+ assign io_input_b_payload_id = io_output_b_payload_id;
+ assign io_input_b_payload_resp = io_output_b_payload_resp;
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b1;
+ dataLogic_outputValid <= 1'b0;
+ dataLogic_busy <= 1'b0;
+ dataLogic_maskBuffer <= 32'h00000000;
+ end else begin
+ if(cmdLogic_outputFork_fire) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdLogic_dataFork_fire) begin
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_aw_ready) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(io_output_w_ready) begin
+ dataLogic_outputValid <= 1'b0;
+ end
+ if(io_output_w_fire) begin
+ dataLogic_maskBuffer <= 32'h00000000;
+ end
+ if(io_input_w_fire) begin
+ dataLogic_outputValid <= ((dataLogic_byteCounterNext[5] || io_input_w_payload_last) || dataLogic_alwaysFire);
+ if(io_input_w_payload_last) begin
+ dataLogic_busy <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l59) begin
+ dataLogic_maskBuffer[0] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_1) begin
+ dataLogic_maskBuffer[1] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_2) begin
+ dataLogic_maskBuffer[2] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_3) begin
+ dataLogic_maskBuffer[3] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_4) begin
+ dataLogic_maskBuffer[4] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_5) begin
+ dataLogic_maskBuffer[5] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_6) begin
+ dataLogic_maskBuffer[6] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_7) begin
+ dataLogic_maskBuffer[7] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_8) begin
+ dataLogic_maskBuffer[8] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_9) begin
+ dataLogic_maskBuffer[9] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_10) begin
+ dataLogic_maskBuffer[10] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_11) begin
+ dataLogic_maskBuffer[11] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_12) begin
+ dataLogic_maskBuffer[12] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_13) begin
+ dataLogic_maskBuffer[13] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_14) begin
+ dataLogic_maskBuffer[14] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_15) begin
+ dataLogic_maskBuffer[15] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_16) begin
+ dataLogic_maskBuffer[16] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_17) begin
+ dataLogic_maskBuffer[17] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_18) begin
+ dataLogic_maskBuffer[18] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_19) begin
+ dataLogic_maskBuffer[19] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_20) begin
+ dataLogic_maskBuffer[20] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_21) begin
+ dataLogic_maskBuffer[21] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_22) begin
+ dataLogic_maskBuffer[22] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_23) begin
+ dataLogic_maskBuffer[23] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_24) begin
+ dataLogic_maskBuffer[24] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_25) begin
+ dataLogic_maskBuffer[25] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_26) begin
+ dataLogic_maskBuffer[26] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_27) begin
+ dataLogic_maskBuffer[27] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_28) begin
+ dataLogic_maskBuffer[28] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_29) begin
+ dataLogic_maskBuffer[29] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_30) begin
+ dataLogic_maskBuffer[30] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_31) begin
+ dataLogic_maskBuffer[31] <= io_input_w_payload_strb[3];
+ end
+ end
+ if(cmdLogic_dataFork_fire_1) begin
+ dataLogic_busy <= 1'b1;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_input_w_fire) begin
+ if(dataLogic_incrementByteCounter) begin
+ dataLogic_byteCounter <= dataLogic_byteCounterNext[4:0];
+ end
+ dataLogic_outputLast <= io_input_w_payload_last;
+ if(when_Axi4Upsizer_l59) begin
+ dataLogic_dataBuffer[7 : 0] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_1) begin
+ dataLogic_dataBuffer[15 : 8] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_2) begin
+ dataLogic_dataBuffer[23 : 16] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_3) begin
+ dataLogic_dataBuffer[31 : 24] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_4) begin
+ dataLogic_dataBuffer[39 : 32] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_5) begin
+ dataLogic_dataBuffer[47 : 40] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_6) begin
+ dataLogic_dataBuffer[55 : 48] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_7) begin
+ dataLogic_dataBuffer[63 : 56] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_8) begin
+ dataLogic_dataBuffer[71 : 64] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_9) begin
+ dataLogic_dataBuffer[79 : 72] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_10) begin
+ dataLogic_dataBuffer[87 : 80] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_11) begin
+ dataLogic_dataBuffer[95 : 88] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_12) begin
+ dataLogic_dataBuffer[103 : 96] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_13) begin
+ dataLogic_dataBuffer[111 : 104] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_14) begin
+ dataLogic_dataBuffer[119 : 112] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_15) begin
+ dataLogic_dataBuffer[127 : 120] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_16) begin
+ dataLogic_dataBuffer[135 : 128] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_17) begin
+ dataLogic_dataBuffer[143 : 136] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_18) begin
+ dataLogic_dataBuffer[151 : 144] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_19) begin
+ dataLogic_dataBuffer[159 : 152] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_20) begin
+ dataLogic_dataBuffer[167 : 160] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_21) begin
+ dataLogic_dataBuffer[175 : 168] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_22) begin
+ dataLogic_dataBuffer[183 : 176] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_23) begin
+ dataLogic_dataBuffer[191 : 184] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_24) begin
+ dataLogic_dataBuffer[199 : 192] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_25) begin
+ dataLogic_dataBuffer[207 : 200] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_26) begin
+ dataLogic_dataBuffer[215 : 208] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_27) begin
+ dataLogic_dataBuffer[223 : 216] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_28) begin
+ dataLogic_dataBuffer[231 : 224] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_29) begin
+ dataLogic_dataBuffer[239 : 232] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_30) begin
+ dataLogic_dataBuffer[247 : 240] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_31) begin
+ dataLogic_dataBuffer[255 : 248] <= io_input_w_payload_data[31 : 24];
+ end
+ end
+ if(cmdLogic_dataFork_fire_1) begin
+ dataLogic_byteCounter <= cmdLogic_dataFork_payload_addr[4:0];
+ if(when_Axi4Upsizer_l68) begin
+ dataLogic_byteCounter[0] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_1) begin
+ dataLogic_byteCounter[1] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_2) begin
+ dataLogic_byteCounter[2] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_3) begin
+ dataLogic_byteCounter[3] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_4) begin
+ dataLogic_byteCounter[4] <= 1'b0;
+ end
+ dataLogic_size <= cmdLogic_dataFork_payload_size;
+ dataLogic_alwaysFire <= (! (cmdLogic_dataFork_payload_burst == 2'b01));
+ dataLogic_incrementByteCounter <= (! (cmdLogic_dataFork_payload_burst == 2'b00));
+ end
+ end
+
+
+endmodule
+
+module Asic32To256UpsizerAxi4ReadOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_ar_valid,
+ output reg io_input_ar_ready,
+ input [31:0] io_input_ar_payload_addr,
+ input [7:0] io_input_ar_payload_id,
+ input [3:0] io_input_ar_payload_region,
+ input [7:0] io_input_ar_payload_len,
+ input [2:0] io_input_ar_payload_size,
+ input [1:0] io_input_ar_payload_burst,
+ input [0:0] io_input_ar_payload_lock,
+ input [3:0] io_input_ar_payload_cache,
+ input [3:0] io_input_ar_payload_qos,
+ input [2:0] io_input_ar_payload_prot,
+ output io_input_r_valid,
+ input io_input_r_ready,
+ output [31:0] io_input_r_payload_data,
+ output [7:0] io_input_r_payload_id,
+ output [1:0] io_input_r_payload_resp,
+ output io_input_r_payload_last,
+ output io_output_ar_valid,
+ input io_output_ar_ready,
+ output [31:0] io_output_ar_payload_addr,
+ output [7:0] io_output_ar_payload_id,
+ output [3:0] io_output_ar_payload_region,
+ output [7:0] io_output_ar_payload_len,
+ output reg [2:0] io_output_ar_payload_size,
+ output [1:0] io_output_ar_payload_burst,
+ output [0:0] io_output_ar_payload_lock,
+ output [3:0] io_output_ar_payload_cache,
+ output [3:0] io_output_ar_payload_qos,
+ output [2:0] io_output_ar_payload_prot,
+ input io_output_r_valid,
+ output io_output_r_ready,
+ input [255:0] io_output_r_payload_data,
+ input [7:0] io_output_r_payload_id,
+ input [1:0] io_output_r_payload_resp,
+ input io_output_r_payload_last,
+ input clk,
+ input reset
+);
+
+ wire dataLogic_cmdPush_fifo_io_pop_ready;
+ wire dataLogic_cmdPush_fifo_io_push_ready;
+ wire dataLogic_cmdPush_fifo_io_pop_valid;
+ wire [4:0] dataLogic_cmdPush_fifo_io_pop_payload_startAt;
+ wire [4:0] dataLogic_cmdPush_fifo_io_pop_payload_endAt;
+ wire [2:0] dataLogic_cmdPush_fifo_io_pop_payload_size;
+ wire [7:0] dataLogic_cmdPush_fifo_io_pop_payload_id;
+ wire [4:0] dataLogic_cmdPush_fifo_io_occupancy;
+ wire [4:0] dataLogic_cmdPush_fifo_io_availability;
+ wire [14:0] _zz_cmdLogic_byteCount;
+ wire [10:0] _zz_cmdLogic_incrLen;
+ wire [10:0] _zz_cmdLogic_incrLen_1;
+ wire [4:0] _zz_cmdLogic_incrLen_2;
+ wire [31:0] _zz_dataLogic_cmdPush_payload_endAt;
+ wire [31:0] _zz_dataLogic_cmdPush_payload_endAt_1;
+ wire [14:0] _zz_dataLogic_cmdPush_payload_endAt_2;
+ wire [5:0] _zz_dataLogic_byteCounterNext;
+ wire [7:0] _zz_dataLogic_byteCounterNext_1;
+ reg [31:0] _zz_io_input_r_payload_data;
+ wire [2:0] _zz_io_input_r_payload_data_1;
+ wire cmdLogic_outputFork_valid;
+ wire cmdLogic_outputFork_ready;
+ wire [31:0] cmdLogic_outputFork_payload_addr;
+ wire [7:0] cmdLogic_outputFork_payload_id;
+ wire [3:0] cmdLogic_outputFork_payload_region;
+ wire [7:0] cmdLogic_outputFork_payload_len;
+ wire [2:0] cmdLogic_outputFork_payload_size;
+ wire [1:0] cmdLogic_outputFork_payload_burst;
+ wire [0:0] cmdLogic_outputFork_payload_lock;
+ wire [3:0] cmdLogic_outputFork_payload_cache;
+ wire [3:0] cmdLogic_outputFork_payload_qos;
+ wire [2:0] cmdLogic_outputFork_payload_prot;
+ wire cmdLogic_dataFork_valid;
+ wire cmdLogic_dataFork_ready;
+ wire [31:0] cmdLogic_dataFork_payload_addr;
+ wire [7:0] cmdLogic_dataFork_payload_id;
+ wire [3:0] cmdLogic_dataFork_payload_region;
+ wire [7:0] cmdLogic_dataFork_payload_len;
+ wire [2:0] cmdLogic_dataFork_payload_size;
+ wire [1:0] cmdLogic_dataFork_payload_burst;
+ wire [0:0] cmdLogic_dataFork_payload_lock;
+ wire [3:0] cmdLogic_dataFork_payload_cache;
+ wire [3:0] cmdLogic_dataFork_payload_qos;
+ wire [2:0] cmdLogic_dataFork_payload_prot;
+ reg io_input_ar_fork2_logic_linkEnable_0;
+ reg io_input_ar_fork2_logic_linkEnable_1;
+ wire when_Stream_l993;
+ wire when_Stream_l993_1;
+ wire cmdLogic_outputFork_fire;
+ wire cmdLogic_dataFork_fire;
+ wire [9:0] cmdLogic_byteCount;
+ wire [5:0] cmdLogic_incrLen;
+ wire when_Axi4Upsizer_l108;
+ wire dataLogic_cmdPush_valid;
+ wire dataLogic_cmdPush_ready;
+ wire [4:0] dataLogic_cmdPush_payload_startAt;
+ wire [4:0] dataLogic_cmdPush_payload_endAt;
+ wire [2:0] dataLogic_cmdPush_payload_size;
+ wire [7:0] dataLogic_cmdPush_payload_id;
+ reg [2:0] dataLogic_size;
+ reg dataLogic_busy;
+ reg [7:0] dataLogic_id;
+ reg [4:0] dataLogic_byteCounter;
+ reg [4:0] dataLogic_byteCounterLast;
+ wire [5:0] dataLogic_byteCounterNext;
+ wire readOnly_dataLogic_cmdPush_fifo_io_pop_fire;
+ wire io_input_r_fire;
+
+ assign _zz_cmdLogic_byteCount = ({7'd0,io_input_ar_payload_len} <<< io_input_ar_payload_size);
+ assign _zz_cmdLogic_incrLen = ({1'b0,cmdLogic_byteCount} + _zz_cmdLogic_incrLen_1);
+ assign _zz_cmdLogic_incrLen_2 = io_input_ar_payload_addr[4 : 0];
+ assign _zz_cmdLogic_incrLen_1 = {6'd0, _zz_cmdLogic_incrLen_2};
+ assign _zz_dataLogic_cmdPush_payload_endAt = (cmdLogic_dataFork_payload_addr + _zz_dataLogic_cmdPush_payload_endAt_1);
+ assign _zz_dataLogic_cmdPush_payload_endAt_2 = ({7'd0,cmdLogic_dataFork_payload_len} <<< cmdLogic_dataFork_payload_size);
+ assign _zz_dataLogic_cmdPush_payload_endAt_1 = {17'd0, _zz_dataLogic_cmdPush_payload_endAt_2};
+ assign _zz_dataLogic_byteCounterNext_1 = ({7'd0,1'b1} <<< dataLogic_size);
+ assign _zz_dataLogic_byteCounterNext = _zz_dataLogic_byteCounterNext_1[5:0];
+ assign _zz_io_input_r_payload_data_1 = (dataLogic_byteCounter >>> 2'd2);
+ Asic32To256UpsizerStreamFifo_5b3f2212c953407c83e1cf8c9cc77ea9 dataLogic_cmdPush_fifo (
+ .io_push_valid (dataLogic_cmdPush_valid ), //i
+ .io_push_ready (dataLogic_cmdPush_fifo_io_push_ready ), //o
+ .io_push_payload_startAt (dataLogic_cmdPush_payload_startAt[4:0] ), //i
+ .io_push_payload_endAt (dataLogic_cmdPush_payload_endAt[4:0] ), //i
+ .io_push_payload_size (dataLogic_cmdPush_payload_size[2:0] ), //i
+ .io_push_payload_id (dataLogic_cmdPush_payload_id[7:0] ), //i
+ .io_pop_valid (dataLogic_cmdPush_fifo_io_pop_valid ), //o
+ .io_pop_ready (dataLogic_cmdPush_fifo_io_pop_ready ), //i
+ .io_pop_payload_startAt (dataLogic_cmdPush_fifo_io_pop_payload_startAt[4:0]), //o
+ .io_pop_payload_endAt (dataLogic_cmdPush_fifo_io_pop_payload_endAt[4:0] ), //o
+ .io_pop_payload_size (dataLogic_cmdPush_fifo_io_pop_payload_size[2:0] ), //o
+ .io_pop_payload_id (dataLogic_cmdPush_fifo_io_pop_payload_id[7:0] ), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (dataLogic_cmdPush_fifo_io_occupancy[4:0] ), //o
+ .io_availability (dataLogic_cmdPush_fifo_io_availability[4:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ case(_zz_io_input_r_payload_data_1)
+ 3'b000 : _zz_io_input_r_payload_data = io_output_r_payload_data[31 : 0];
+ 3'b001 : _zz_io_input_r_payload_data = io_output_r_payload_data[63 : 32];
+ 3'b010 : _zz_io_input_r_payload_data = io_output_r_payload_data[95 : 64];
+ 3'b011 : _zz_io_input_r_payload_data = io_output_r_payload_data[127 : 96];
+ 3'b100 : _zz_io_input_r_payload_data = io_output_r_payload_data[159 : 128];
+ 3'b101 : _zz_io_input_r_payload_data = io_output_r_payload_data[191 : 160];
+ 3'b110 : _zz_io_input_r_payload_data = io_output_r_payload_data[223 : 192];
+ default : _zz_io_input_r_payload_data = io_output_r_payload_data[255 : 224];
+ endcase
+ end
+
+ always @(*) begin
+ io_input_ar_ready = 1'b1;
+ if(when_Stream_l993) begin
+ io_input_ar_ready = 1'b0;
+ end
+ if(when_Stream_l993_1) begin
+ io_input_ar_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l993 = ((! cmdLogic_outputFork_ready) && io_input_ar_fork2_logic_linkEnable_0);
+ assign when_Stream_l993_1 = ((! cmdLogic_dataFork_ready) && io_input_ar_fork2_logic_linkEnable_1);
+ assign cmdLogic_outputFork_valid = (io_input_ar_valid && io_input_ar_fork2_logic_linkEnable_0);
+ assign cmdLogic_outputFork_payload_addr = io_input_ar_payload_addr;
+ assign cmdLogic_outputFork_payload_id = io_input_ar_payload_id;
+ assign cmdLogic_outputFork_payload_region = io_input_ar_payload_region;
+ assign cmdLogic_outputFork_payload_len = io_input_ar_payload_len;
+ assign cmdLogic_outputFork_payload_size = io_input_ar_payload_size;
+ assign cmdLogic_outputFork_payload_burst = io_input_ar_payload_burst;
+ assign cmdLogic_outputFork_payload_lock = io_input_ar_payload_lock;
+ assign cmdLogic_outputFork_payload_cache = io_input_ar_payload_cache;
+ assign cmdLogic_outputFork_payload_qos = io_input_ar_payload_qos;
+ assign cmdLogic_outputFork_payload_prot = io_input_ar_payload_prot;
+ assign cmdLogic_outputFork_fire = (cmdLogic_outputFork_valid && cmdLogic_outputFork_ready);
+ assign cmdLogic_dataFork_valid = (io_input_ar_valid && io_input_ar_fork2_logic_linkEnable_1);
+ assign cmdLogic_dataFork_payload_addr = io_input_ar_payload_addr;
+ assign cmdLogic_dataFork_payload_id = io_input_ar_payload_id;
+ assign cmdLogic_dataFork_payload_region = io_input_ar_payload_region;
+ assign cmdLogic_dataFork_payload_len = io_input_ar_payload_len;
+ assign cmdLogic_dataFork_payload_size = io_input_ar_payload_size;
+ assign cmdLogic_dataFork_payload_burst = io_input_ar_payload_burst;
+ assign cmdLogic_dataFork_payload_lock = io_input_ar_payload_lock;
+ assign cmdLogic_dataFork_payload_cache = io_input_ar_payload_cache;
+ assign cmdLogic_dataFork_payload_qos = io_input_ar_payload_qos;
+ assign cmdLogic_dataFork_payload_prot = io_input_ar_payload_prot;
+ assign cmdLogic_dataFork_fire = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign io_output_ar_valid = cmdLogic_outputFork_valid;
+ assign cmdLogic_outputFork_ready = io_output_ar_ready;
+ assign io_output_ar_payload_addr = cmdLogic_outputFork_payload_addr;
+ assign io_output_ar_payload_region = cmdLogic_outputFork_payload_region;
+ assign io_output_ar_payload_burst = cmdLogic_outputFork_payload_burst;
+ assign io_output_ar_payload_lock = cmdLogic_outputFork_payload_lock;
+ assign io_output_ar_payload_cache = cmdLogic_outputFork_payload_cache;
+ assign io_output_ar_payload_qos = cmdLogic_outputFork_payload_qos;
+ assign io_output_ar_payload_prot = cmdLogic_outputFork_payload_prot;
+ assign cmdLogic_byteCount = _zz_cmdLogic_byteCount[9:0];
+ assign cmdLogic_incrLen = _zz_cmdLogic_incrLen[10 : 5];
+ always @(*) begin
+ io_output_ar_payload_size = 3'b101;
+ if(when_Axi4Upsizer_l108) begin
+ io_output_ar_payload_size = io_input_ar_payload_size;
+ end
+ end
+
+ assign io_output_ar_payload_len = {2'd0, cmdLogic_incrLen};
+ assign io_output_ar_payload_id = 8'h00;
+ assign when_Axi4Upsizer_l108 = (io_input_ar_payload_len == 8'h00);
+ assign dataLogic_cmdPush_valid = cmdLogic_dataFork_valid;
+ assign cmdLogic_dataFork_ready = dataLogic_cmdPush_ready;
+ assign dataLogic_cmdPush_payload_startAt = cmdLogic_dataFork_payload_addr[4:0];
+ assign dataLogic_cmdPush_payload_endAt = _zz_dataLogic_cmdPush_payload_endAt[4:0];
+ assign dataLogic_cmdPush_payload_size = cmdLogic_dataFork_payload_size;
+ assign dataLogic_cmdPush_payload_id = cmdLogic_dataFork_payload_id;
+ assign dataLogic_cmdPush_ready = dataLogic_cmdPush_fifo_io_push_ready;
+ assign dataLogic_byteCounterNext = ({1'b0,dataLogic_byteCounter} + _zz_dataLogic_byteCounterNext);
+ assign readOnly_dataLogic_cmdPush_fifo_io_pop_fire = (dataLogic_cmdPush_fifo_io_pop_valid && dataLogic_cmdPush_fifo_io_pop_ready);
+ assign dataLogic_cmdPush_fifo_io_pop_ready = (! dataLogic_busy);
+ assign io_input_r_fire = (io_input_r_valid && io_input_r_ready);
+ assign io_input_r_valid = (io_output_r_valid && dataLogic_busy);
+ assign io_input_r_payload_last = (io_output_r_payload_last && (dataLogic_byteCounter == dataLogic_byteCounterLast));
+ assign io_input_r_payload_resp = io_output_r_payload_resp;
+ assign io_input_r_payload_data = _zz_io_input_r_payload_data;
+ assign io_input_r_payload_id = dataLogic_id;
+ assign io_output_r_ready = ((dataLogic_busy && io_input_r_ready) && (io_input_r_payload_last || dataLogic_byteCounterNext[5]));
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b1;
+ dataLogic_busy <= 1'b0;
+ end else begin
+ if(cmdLogic_outputFork_fire) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdLogic_dataFork_fire) begin
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_ar_ready) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(readOnly_dataLogic_cmdPush_fifo_io_pop_fire) begin
+ dataLogic_busy <= 1'b1;
+ end
+ if(io_input_r_fire) begin
+ if(io_input_r_payload_last) begin
+ dataLogic_busy <= 1'b0;
+ end
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(readOnly_dataLogic_cmdPush_fifo_io_pop_fire) begin
+ dataLogic_byteCounter <= dataLogic_cmdPush_fifo_io_pop_payload_startAt;
+ dataLogic_byteCounterLast <= dataLogic_cmdPush_fifo_io_pop_payload_endAt;
+ dataLogic_size <= dataLogic_cmdPush_fifo_io_pop_payload_size;
+ dataLogic_id <= dataLogic_cmdPush_fifo_io_pop_payload_id;
+ end
+ if(io_input_r_fire) begin
+ dataLogic_byteCounter <= dataLogic_byteCounterNext[4:0];
+ end
+ end
+
+
+endmodule
+
+module Asic32To256UpsizerStreamFifo_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_push_valid,
+ output io_push_ready,
+ input [4:0] io_push_payload_startAt,
+ input [4:0] io_push_payload_endAt,
+ input [2:0] io_push_payload_size,
+ input [7:0] io_push_payload_id,
+ output io_pop_valid,
+ input io_pop_ready,
+ output [4:0] io_pop_payload_startAt,
+ output [4:0] io_pop_payload_endAt,
+ output [2:0] io_pop_payload_size,
+ output [7:0] io_pop_payload_id,
+ input io_flush,
+ output [4:0] io_occupancy,
+ output [4:0] io_availability,
+ input clk,
+ input reset
+);
+
+ reg [20:0] _zz_logic_ram_port0;
+ wire [3:0] _zz_logic_pushPtr_valueNext;
+ wire [0:0] _zz_logic_pushPtr_valueNext_1;
+ wire [3:0] _zz_logic_popPtr_valueNext;
+ wire [0:0] _zz_logic_popPtr_valueNext_1;
+ wire _zz__zz_logic_ram_port0;
+ wire _zz__zz_io_pop_payload_startAt;
+ wire [20:0] _zz__zz_logic_ram_port1;
+ wire [3:0] _zz_io_availability;
+ reg _zz_1;
+ reg logic_pushPtr_willIncrement;
+ reg logic_pushPtr_willClear;
+ reg [3:0] logic_pushPtr_valueNext;
+ reg [3:0] logic_pushPtr_value;
+ wire logic_pushPtr_willOverflowIfInc;
+ wire logic_pushPtr_willOverflow;
+ reg logic_popPtr_willIncrement;
+ reg logic_popPtr_willClear;
+ reg [3:0] logic_popPtr_valueNext;
+ reg [3:0] logic_popPtr_value;
+ wire logic_popPtr_willOverflowIfInc;
+ wire logic_popPtr_willOverflow;
+ wire logic_ptrMatch;
+ reg logic_risingOccupancy;
+ wire logic_pushing;
+ wire logic_popping;
+ wire logic_empty;
+ wire logic_full;
+ reg _zz_io_pop_valid;
+ wire [20:0] _zz_io_pop_payload_startAt;
+ wire when_Stream_l1123;
+ wire [3:0] logic_ptrDif;
+ reg [20:0] logic_ram [0:15];
+
+ assign _zz_logic_pushPtr_valueNext_1 = logic_pushPtr_willIncrement;
+ assign _zz_logic_pushPtr_valueNext = {3'd0, _zz_logic_pushPtr_valueNext_1};
+ assign _zz_logic_popPtr_valueNext_1 = logic_popPtr_willIncrement;
+ assign _zz_logic_popPtr_valueNext = {3'd0, _zz_logic_popPtr_valueNext_1};
+ assign _zz_io_availability = (logic_popPtr_value - logic_pushPtr_value);
+ assign _zz__zz_io_pop_payload_startAt = 1'b1;
+ assign _zz__zz_logic_ram_port1 = {io_push_payload_id,{io_push_payload_size,{io_push_payload_endAt,io_push_payload_startAt}}};
+ always @(posedge clk) begin
+ if(_zz__zz_io_pop_payload_startAt) begin
+ _zz_logic_ram_port0 <= logic_ram[logic_popPtr_valueNext];
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_pushPtr_value] <= _zz__zz_logic_ram_port1;
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_pushing) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_pushPtr_willIncrement = 1'b0;
+ if(logic_pushing) begin
+ logic_pushPtr_willIncrement = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_pushPtr_willClear = 1'b0;
+ if(io_flush) begin
+ logic_pushPtr_willClear = 1'b1;
+ end
+ end
+
+ assign logic_pushPtr_willOverflowIfInc = (logic_pushPtr_value == 4'b1111);
+ assign logic_pushPtr_willOverflow = (logic_pushPtr_willOverflowIfInc && logic_pushPtr_willIncrement);
+ always @(*) begin
+ logic_pushPtr_valueNext = (logic_pushPtr_value + _zz_logic_pushPtr_valueNext);
+ if(logic_pushPtr_willClear) begin
+ logic_pushPtr_valueNext = 4'b0000;
+ end
+ end
+
+ always @(*) begin
+ logic_popPtr_willIncrement = 1'b0;
+ if(logic_popping) begin
+ logic_popPtr_willIncrement = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_popPtr_willClear = 1'b0;
+ if(io_flush) begin
+ logic_popPtr_willClear = 1'b1;
+ end
+ end
+
+ assign logic_popPtr_willOverflowIfInc = (logic_popPtr_value == 4'b1111);
+ assign logic_popPtr_willOverflow = (logic_popPtr_willOverflowIfInc && logic_popPtr_willIncrement);
+ always @(*) begin
+ logic_popPtr_valueNext = (logic_popPtr_value + _zz_logic_popPtr_valueNext);
+ if(logic_popPtr_willClear) begin
+ logic_popPtr_valueNext = 4'b0000;
+ end
+ end
+
+ assign logic_ptrMatch = (logic_pushPtr_value == logic_popPtr_value);
+ assign logic_pushing = (io_push_valid && io_push_ready);
+ assign logic_popping = (io_pop_valid && io_pop_ready);
+ assign logic_empty = (logic_ptrMatch && (! logic_risingOccupancy));
+ assign logic_full = (logic_ptrMatch && logic_risingOccupancy);
+ assign io_push_ready = (! logic_full);
+ assign io_pop_valid = ((! logic_empty) && (! (_zz_io_pop_valid && (! logic_full))));
+ assign _zz_io_pop_payload_startAt = _zz_logic_ram_port0;
+ assign io_pop_payload_startAt = _zz_io_pop_payload_startAt[4 : 0];
+ assign io_pop_payload_endAt = _zz_io_pop_payload_startAt[9 : 5];
+ assign io_pop_payload_size = _zz_io_pop_payload_startAt[12 : 10];
+ assign io_pop_payload_id = _zz_io_pop_payload_startAt[20 : 13];
+ assign when_Stream_l1123 = (logic_pushing != logic_popping);
+ assign logic_ptrDif = (logic_pushPtr_value - logic_popPtr_value);
+ assign io_occupancy = {(logic_risingOccupancy && logic_ptrMatch),logic_ptrDif};
+ assign io_availability = {((! logic_risingOccupancy) && logic_ptrMatch),_zz_io_availability};
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ logic_pushPtr_value <= 4'b0000;
+ logic_popPtr_value <= 4'b0000;
+ logic_risingOccupancy <= 1'b0;
+ _zz_io_pop_valid <= 1'b0;
+ end else begin
+ logic_pushPtr_value <= logic_pushPtr_valueNext;
+ logic_popPtr_value <= logic_popPtr_valueNext;
+ _zz_io_pop_valid <= (logic_popPtr_valueNext == logic_pushPtr_value);
+ if(when_Stream_l1123) begin
+ logic_risingOccupancy <= logic_pushing;
+ end
+ if(io_flush) begin
+ logic_risingOccupancy <= 1'b0;
+ end
+ end
+ end
+
+
+endmodule
+
+
+// Generator : SpinalHDL dev git head : 9cdee03b276638ef8e7a948b606bb7acc6e4c8d0
+// Component : Asic32To512UpsizerAxi4Upsizer_5b3f2212c953407c83e1cf8c9cc77ea9
+// Git hash : cd16421fb7a4d44431a2445f9a92b82070ab9b8a
+
+`timescale 1ns/1ps
+
+module Asic32To512UpsizerAxi4Upsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_aw_valid,
+ output io_input_aw_ready,
+ input [31:0] io_input_aw_payload_addr,
+ input [7:0] io_input_aw_payload_id,
+ input [3:0] io_input_aw_payload_region,
+ input [7:0] io_input_aw_payload_len,
+ input [2:0] io_input_aw_payload_size,
+ input [1:0] io_input_aw_payload_burst,
+ input [0:0] io_input_aw_payload_lock,
+ input [3:0] io_input_aw_payload_cache,
+ input [3:0] io_input_aw_payload_qos,
+ input [2:0] io_input_aw_payload_prot,
+ input io_input_w_valid,
+ output io_input_w_ready,
+ input [31:0] io_input_w_payload_data,
+ input [3:0] io_input_w_payload_strb,
+ input io_input_w_payload_last,
+ output io_input_b_valid,
+ input io_input_b_ready,
+ output [7:0] io_input_b_payload_id,
+ output [1:0] io_input_b_payload_resp,
+ input io_input_ar_valid,
+ output io_input_ar_ready,
+ input [31:0] io_input_ar_payload_addr,
+ input [7:0] io_input_ar_payload_id,
+ input [3:0] io_input_ar_payload_region,
+ input [7:0] io_input_ar_payload_len,
+ input [2:0] io_input_ar_payload_size,
+ input [1:0] io_input_ar_payload_burst,
+ input [0:0] io_input_ar_payload_lock,
+ input [3:0] io_input_ar_payload_cache,
+ input [3:0] io_input_ar_payload_qos,
+ input [2:0] io_input_ar_payload_prot,
+ output io_input_r_valid,
+ input io_input_r_ready,
+ output [31:0] io_input_r_payload_data,
+ output [7:0] io_input_r_payload_id,
+ output [1:0] io_input_r_payload_resp,
+ output io_input_r_payload_last,
+ output io_output_aw_valid,
+ input io_output_aw_ready,
+ output [31:0] io_output_aw_payload_addr,
+ output [7:0] io_output_aw_payload_id,
+ output [3:0] io_output_aw_payload_region,
+ output [7:0] io_output_aw_payload_len,
+ output [2:0] io_output_aw_payload_size,
+ output [1:0] io_output_aw_payload_burst,
+ output [0:0] io_output_aw_payload_lock,
+ output [3:0] io_output_aw_payload_cache,
+ output [3:0] io_output_aw_payload_qos,
+ output [2:0] io_output_aw_payload_prot,
+ output io_output_w_valid,
+ input io_output_w_ready,
+ output [511:0] io_output_w_payload_data,
+ output [63:0] io_output_w_payload_strb,
+ output io_output_w_payload_last,
+ input io_output_b_valid,
+ output io_output_b_ready,
+ input [7:0] io_output_b_payload_id,
+ input [1:0] io_output_b_payload_resp,
+ output io_output_ar_valid,
+ input io_output_ar_ready,
+ output [31:0] io_output_ar_payload_addr,
+ output [7:0] io_output_ar_payload_id,
+ output [3:0] io_output_ar_payload_region,
+ output [7:0] io_output_ar_payload_len,
+ output [2:0] io_output_ar_payload_size,
+ output [1:0] io_output_ar_payload_burst,
+ output [0:0] io_output_ar_payload_lock,
+ output [3:0] io_output_ar_payload_cache,
+ output [3:0] io_output_ar_payload_qos,
+ output [2:0] io_output_ar_payload_prot,
+ input io_output_r_valid,
+ output io_output_r_ready,
+ input [511:0] io_output_r_payload_data,
+ input [7:0] io_output_r_payload_id,
+ input [1:0] io_output_r_payload_resp,
+ input io_output_r_payload_last,
+ input clk,
+ input reset
+);
+
+ wire readOnly_io_input_ar_ready;
+ wire readOnly_io_input_r_valid;
+ wire [31:0] readOnly_io_input_r_payload_data;
+ wire [7:0] readOnly_io_input_r_payload_id;
+ wire [1:0] readOnly_io_input_r_payload_resp;
+ wire readOnly_io_input_r_payload_last;
+ wire readOnly_io_output_ar_valid;
+ wire [31:0] readOnly_io_output_ar_payload_addr;
+ wire [7:0] readOnly_io_output_ar_payload_id;
+ wire [3:0] readOnly_io_output_ar_payload_region;
+ wire [7:0] readOnly_io_output_ar_payload_len;
+ wire [2:0] readOnly_io_output_ar_payload_size;
+ wire [1:0] readOnly_io_output_ar_payload_burst;
+ wire [0:0] readOnly_io_output_ar_payload_lock;
+ wire [3:0] readOnly_io_output_ar_payload_cache;
+ wire [3:0] readOnly_io_output_ar_payload_qos;
+ wire [2:0] readOnly_io_output_ar_payload_prot;
+ wire readOnly_io_output_r_ready;
+ wire writeOnly_io_input_aw_ready;
+ wire writeOnly_io_input_w_ready;
+ wire writeOnly_io_input_b_valid;
+ wire [7:0] writeOnly_io_input_b_payload_id;
+ wire [1:0] writeOnly_io_input_b_payload_resp;
+ wire writeOnly_io_output_aw_valid;
+ wire [31:0] writeOnly_io_output_aw_payload_addr;
+ wire [7:0] writeOnly_io_output_aw_payload_id;
+ wire [3:0] writeOnly_io_output_aw_payload_region;
+ wire [7:0] writeOnly_io_output_aw_payload_len;
+ wire [2:0] writeOnly_io_output_aw_payload_size;
+ wire [1:0] writeOnly_io_output_aw_payload_burst;
+ wire [0:0] writeOnly_io_output_aw_payload_lock;
+ wire [3:0] writeOnly_io_output_aw_payload_cache;
+ wire [3:0] writeOnly_io_output_aw_payload_qos;
+ wire [2:0] writeOnly_io_output_aw_payload_prot;
+ wire writeOnly_io_output_w_valid;
+ wire [511:0] writeOnly_io_output_w_payload_data;
+ wire [63:0] writeOnly_io_output_w_payload_strb;
+ wire writeOnly_io_output_w_payload_last;
+ wire writeOnly_io_output_b_ready;
+
+ Asic32To512UpsizerAxi4ReadOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 readOnly (
+ .io_input_ar_valid (io_input_ar_valid ), //i
+ .io_input_ar_ready (readOnly_io_input_ar_ready ), //o
+ .io_input_ar_payload_addr (io_input_ar_payload_addr[31:0] ), //i
+ .io_input_ar_payload_id (io_input_ar_payload_id[7:0] ), //i
+ .io_input_ar_payload_region (io_input_ar_payload_region[3:0] ), //i
+ .io_input_ar_payload_len (io_input_ar_payload_len[7:0] ), //i
+ .io_input_ar_payload_size (io_input_ar_payload_size[2:0] ), //i
+ .io_input_ar_payload_burst (io_input_ar_payload_burst[1:0] ), //i
+ .io_input_ar_payload_lock (io_input_ar_payload_lock ), //i
+ .io_input_ar_payload_cache (io_input_ar_payload_cache[3:0] ), //i
+ .io_input_ar_payload_qos (io_input_ar_payload_qos[3:0] ), //i
+ .io_input_ar_payload_prot (io_input_ar_payload_prot[2:0] ), //i
+ .io_input_r_valid (readOnly_io_input_r_valid ), //o
+ .io_input_r_ready (io_input_r_ready ), //i
+ .io_input_r_payload_data (readOnly_io_input_r_payload_data[31:0] ), //o
+ .io_input_r_payload_id (readOnly_io_input_r_payload_id[7:0] ), //o
+ .io_input_r_payload_resp (readOnly_io_input_r_payload_resp[1:0] ), //o
+ .io_input_r_payload_last (readOnly_io_input_r_payload_last ), //o
+ .io_output_ar_valid (readOnly_io_output_ar_valid ), //o
+ .io_output_ar_ready (io_output_ar_ready ), //i
+ .io_output_ar_payload_addr (readOnly_io_output_ar_payload_addr[31:0] ), //o
+ .io_output_ar_payload_id (readOnly_io_output_ar_payload_id[7:0] ), //o
+ .io_output_ar_payload_region (readOnly_io_output_ar_payload_region[3:0]), //o
+ .io_output_ar_payload_len (readOnly_io_output_ar_payload_len[7:0] ), //o
+ .io_output_ar_payload_size (readOnly_io_output_ar_payload_size[2:0] ), //o
+ .io_output_ar_payload_burst (readOnly_io_output_ar_payload_burst[1:0] ), //o
+ .io_output_ar_payload_lock (readOnly_io_output_ar_payload_lock ), //o
+ .io_output_ar_payload_cache (readOnly_io_output_ar_payload_cache[3:0] ), //o
+ .io_output_ar_payload_qos (readOnly_io_output_ar_payload_qos[3:0] ), //o
+ .io_output_ar_payload_prot (readOnly_io_output_ar_payload_prot[2:0] ), //o
+ .io_output_r_valid (io_output_r_valid ), //i
+ .io_output_r_ready (readOnly_io_output_r_ready ), //o
+ .io_output_r_payload_data (io_output_r_payload_data[511:0] ), //i
+ .io_output_r_payload_id (io_output_r_payload_id[7:0] ), //i
+ .io_output_r_payload_resp (io_output_r_payload_resp[1:0] ), //i
+ .io_output_r_payload_last (io_output_r_payload_last ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Asic32To512UpsizerAxi4WriteOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 writeOnly (
+ .io_input_aw_valid (io_input_aw_valid ), //i
+ .io_input_aw_ready (writeOnly_io_input_aw_ready ), //o
+ .io_input_aw_payload_addr (io_input_aw_payload_addr[31:0] ), //i
+ .io_input_aw_payload_id (io_input_aw_payload_id[7:0] ), //i
+ .io_input_aw_payload_region (io_input_aw_payload_region[3:0] ), //i
+ .io_input_aw_payload_len (io_input_aw_payload_len[7:0] ), //i
+ .io_input_aw_payload_size (io_input_aw_payload_size[2:0] ), //i
+ .io_input_aw_payload_burst (io_input_aw_payload_burst[1:0] ), //i
+ .io_input_aw_payload_lock (io_input_aw_payload_lock ), //i
+ .io_input_aw_payload_cache (io_input_aw_payload_cache[3:0] ), //i
+ .io_input_aw_payload_qos (io_input_aw_payload_qos[3:0] ), //i
+ .io_input_aw_payload_prot (io_input_aw_payload_prot[2:0] ), //i
+ .io_input_w_valid (io_input_w_valid ), //i
+ .io_input_w_ready (writeOnly_io_input_w_ready ), //o
+ .io_input_w_payload_data (io_input_w_payload_data[31:0] ), //i
+ .io_input_w_payload_strb (io_input_w_payload_strb[3:0] ), //i
+ .io_input_w_payload_last (io_input_w_payload_last ), //i
+ .io_input_b_valid (writeOnly_io_input_b_valid ), //o
+ .io_input_b_ready (io_input_b_ready ), //i
+ .io_input_b_payload_id (writeOnly_io_input_b_payload_id[7:0] ), //o
+ .io_input_b_payload_resp (writeOnly_io_input_b_payload_resp[1:0] ), //o
+ .io_output_aw_valid (writeOnly_io_output_aw_valid ), //o
+ .io_output_aw_ready (io_output_aw_ready ), //i
+ .io_output_aw_payload_addr (writeOnly_io_output_aw_payload_addr[31:0] ), //o
+ .io_output_aw_payload_id (writeOnly_io_output_aw_payload_id[7:0] ), //o
+ .io_output_aw_payload_region (writeOnly_io_output_aw_payload_region[3:0]), //o
+ .io_output_aw_payload_len (writeOnly_io_output_aw_payload_len[7:0] ), //o
+ .io_output_aw_payload_size (writeOnly_io_output_aw_payload_size[2:0] ), //o
+ .io_output_aw_payload_burst (writeOnly_io_output_aw_payload_burst[1:0] ), //o
+ .io_output_aw_payload_lock (writeOnly_io_output_aw_payload_lock ), //o
+ .io_output_aw_payload_cache (writeOnly_io_output_aw_payload_cache[3:0] ), //o
+ .io_output_aw_payload_qos (writeOnly_io_output_aw_payload_qos[3:0] ), //o
+ .io_output_aw_payload_prot (writeOnly_io_output_aw_payload_prot[2:0] ), //o
+ .io_output_w_valid (writeOnly_io_output_w_valid ), //o
+ .io_output_w_ready (io_output_w_ready ), //i
+ .io_output_w_payload_data (writeOnly_io_output_w_payload_data[511:0] ), //o
+ .io_output_w_payload_strb (writeOnly_io_output_w_payload_strb[63:0] ), //o
+ .io_output_w_payload_last (writeOnly_io_output_w_payload_last ), //o
+ .io_output_b_valid (io_output_b_valid ), //i
+ .io_output_b_ready (writeOnly_io_output_b_ready ), //o
+ .io_output_b_payload_id (io_output_b_payload_id[7:0] ), //i
+ .io_output_b_payload_resp (io_output_b_payload_resp[1:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign io_input_ar_ready = readOnly_io_input_ar_ready;
+ assign io_input_r_valid = readOnly_io_input_r_valid;
+ assign io_input_r_payload_data = readOnly_io_input_r_payload_data;
+ assign io_input_r_payload_id = readOnly_io_input_r_payload_id;
+ assign io_input_r_payload_resp = readOnly_io_input_r_payload_resp;
+ assign io_input_r_payload_last = readOnly_io_input_r_payload_last;
+ assign io_input_aw_ready = writeOnly_io_input_aw_ready;
+ assign io_input_w_ready = writeOnly_io_input_w_ready;
+ assign io_input_b_valid = writeOnly_io_input_b_valid;
+ assign io_input_b_payload_id = writeOnly_io_input_b_payload_id;
+ assign io_input_b_payload_resp = writeOnly_io_input_b_payload_resp;
+ assign io_output_ar_valid = readOnly_io_output_ar_valid;
+ assign io_output_ar_payload_addr = readOnly_io_output_ar_payload_addr;
+ assign io_output_ar_payload_id = readOnly_io_output_ar_payload_id;
+ assign io_output_ar_payload_region = readOnly_io_output_ar_payload_region;
+ assign io_output_ar_payload_len = readOnly_io_output_ar_payload_len;
+ assign io_output_ar_payload_size = readOnly_io_output_ar_payload_size;
+ assign io_output_ar_payload_burst = readOnly_io_output_ar_payload_burst;
+ assign io_output_ar_payload_lock = readOnly_io_output_ar_payload_lock;
+ assign io_output_ar_payload_cache = readOnly_io_output_ar_payload_cache;
+ assign io_output_ar_payload_qos = readOnly_io_output_ar_payload_qos;
+ assign io_output_ar_payload_prot = readOnly_io_output_ar_payload_prot;
+ assign io_output_r_ready = readOnly_io_output_r_ready;
+ assign io_output_aw_valid = writeOnly_io_output_aw_valid;
+ assign io_output_aw_payload_addr = writeOnly_io_output_aw_payload_addr;
+ assign io_output_aw_payload_id = writeOnly_io_output_aw_payload_id;
+ assign io_output_aw_payload_region = writeOnly_io_output_aw_payload_region;
+ assign io_output_aw_payload_len = writeOnly_io_output_aw_payload_len;
+ assign io_output_aw_payload_size = writeOnly_io_output_aw_payload_size;
+ assign io_output_aw_payload_burst = writeOnly_io_output_aw_payload_burst;
+ assign io_output_aw_payload_lock = writeOnly_io_output_aw_payload_lock;
+ assign io_output_aw_payload_cache = writeOnly_io_output_aw_payload_cache;
+ assign io_output_aw_payload_qos = writeOnly_io_output_aw_payload_qos;
+ assign io_output_aw_payload_prot = writeOnly_io_output_aw_payload_prot;
+ assign io_output_w_valid = writeOnly_io_output_w_valid;
+ assign io_output_w_payload_data = writeOnly_io_output_w_payload_data;
+ assign io_output_w_payload_strb = writeOnly_io_output_w_payload_strb;
+ assign io_output_w_payload_last = writeOnly_io_output_w_payload_last;
+ assign io_output_b_ready = writeOnly_io_output_b_ready;
+
+endmodule
+
+module Asic32To512UpsizerAxi4WriteOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_aw_valid,
+ output reg io_input_aw_ready,
+ input [31:0] io_input_aw_payload_addr,
+ input [7:0] io_input_aw_payload_id,
+ input [3:0] io_input_aw_payload_region,
+ input [7:0] io_input_aw_payload_len,
+ input [2:0] io_input_aw_payload_size,
+ input [1:0] io_input_aw_payload_burst,
+ input [0:0] io_input_aw_payload_lock,
+ input [3:0] io_input_aw_payload_cache,
+ input [3:0] io_input_aw_payload_qos,
+ input [2:0] io_input_aw_payload_prot,
+ input io_input_w_valid,
+ output io_input_w_ready,
+ input [31:0] io_input_w_payload_data,
+ input [3:0] io_input_w_payload_strb,
+ input io_input_w_payload_last,
+ output io_input_b_valid,
+ input io_input_b_ready,
+ output [7:0] io_input_b_payload_id,
+ output [1:0] io_input_b_payload_resp,
+ output io_output_aw_valid,
+ input io_output_aw_ready,
+ output [31:0] io_output_aw_payload_addr,
+ output [7:0] io_output_aw_payload_id,
+ output [3:0] io_output_aw_payload_region,
+ output reg [7:0] io_output_aw_payload_len,
+ output reg [2:0] io_output_aw_payload_size,
+ output [1:0] io_output_aw_payload_burst,
+ output [0:0] io_output_aw_payload_lock,
+ output [3:0] io_output_aw_payload_cache,
+ output [3:0] io_output_aw_payload_qos,
+ output [2:0] io_output_aw_payload_prot,
+ output io_output_w_valid,
+ input io_output_w_ready,
+ output [511:0] io_output_w_payload_data,
+ output [63:0] io_output_w_payload_strb,
+ output io_output_w_payload_last,
+ input io_output_b_valid,
+ output io_output_b_ready,
+ input [7:0] io_output_b_payload_id,
+ input [1:0] io_output_b_payload_resp,
+ input clk,
+ input reset
+);
+
+ wire [14:0] _zz_cmdLogic_byteCount;
+ wire [10:0] _zz_cmdLogic_incrLen;
+ wire [10:0] _zz_cmdLogic_incrLen_1;
+ wire [5:0] _zz_cmdLogic_incrLen_2;
+ wire [6:0] _zz_dataLogic_byteCounterNext;
+ wire [7:0] _zz_dataLogic_byteCounterNext_1;
+ reg [63:0] _zz_dataLogic_byteActivity;
+ wire cmdLogic_outputFork_valid;
+ wire cmdLogic_outputFork_ready;
+ wire [31:0] cmdLogic_outputFork_payload_addr;
+ wire [7:0] cmdLogic_outputFork_payload_id;
+ wire [3:0] cmdLogic_outputFork_payload_region;
+ wire [7:0] cmdLogic_outputFork_payload_len;
+ wire [2:0] cmdLogic_outputFork_payload_size;
+ wire [1:0] cmdLogic_outputFork_payload_burst;
+ wire [0:0] cmdLogic_outputFork_payload_lock;
+ wire [3:0] cmdLogic_outputFork_payload_cache;
+ wire [3:0] cmdLogic_outputFork_payload_qos;
+ wire [2:0] cmdLogic_outputFork_payload_prot;
+ wire cmdLogic_dataFork_valid;
+ wire cmdLogic_dataFork_ready;
+ wire [31:0] cmdLogic_dataFork_payload_addr;
+ wire [7:0] cmdLogic_dataFork_payload_id;
+ wire [3:0] cmdLogic_dataFork_payload_region;
+ wire [7:0] cmdLogic_dataFork_payload_len;
+ wire [2:0] cmdLogic_dataFork_payload_size;
+ wire [1:0] cmdLogic_dataFork_payload_burst;
+ wire [0:0] cmdLogic_dataFork_payload_lock;
+ wire [3:0] cmdLogic_dataFork_payload_cache;
+ wire [3:0] cmdLogic_dataFork_payload_qos;
+ wire [2:0] cmdLogic_dataFork_payload_prot;
+ reg io_input_aw_fork2_logic_linkEnable_0;
+ reg io_input_aw_fork2_logic_linkEnable_1;
+ wire when_Stream_l993;
+ wire when_Stream_l993_1;
+ wire cmdLogic_outputFork_fire;
+ wire cmdLogic_dataFork_fire;
+ wire [9:0] cmdLogic_byteCount;
+ wire [4:0] cmdLogic_incrLen;
+ wire when_Axi4Upsizer_l21;
+ wire when_Axi4Upsizer_l24;
+ reg [5:0] dataLogic_byteCounter;
+ reg [2:0] dataLogic_size;
+ reg dataLogic_outputValid;
+ reg dataLogic_outputLast;
+ reg dataLogic_busy;
+ reg dataLogic_incrementByteCounter;
+ reg dataLogic_alwaysFire;
+ wire [6:0] dataLogic_byteCounterNext;
+ reg [511:0] dataLogic_dataBuffer;
+ reg [63:0] dataLogic_maskBuffer;
+ wire [63:0] dataLogic_byteActivity;
+ wire io_output_w_fire;
+ wire io_output_w_isStall;
+ wire io_input_w_fire;
+ wire when_Axi4Upsizer_l59;
+ wire when_Axi4Upsizer_l59_1;
+ wire when_Axi4Upsizer_l59_2;
+ wire when_Axi4Upsizer_l59_3;
+ wire when_Axi4Upsizer_l59_4;
+ wire when_Axi4Upsizer_l59_5;
+ wire when_Axi4Upsizer_l59_6;
+ wire when_Axi4Upsizer_l59_7;
+ wire when_Axi4Upsizer_l59_8;
+ wire when_Axi4Upsizer_l59_9;
+ wire when_Axi4Upsizer_l59_10;
+ wire when_Axi4Upsizer_l59_11;
+ wire when_Axi4Upsizer_l59_12;
+ wire when_Axi4Upsizer_l59_13;
+ wire when_Axi4Upsizer_l59_14;
+ wire when_Axi4Upsizer_l59_15;
+ wire when_Axi4Upsizer_l59_16;
+ wire when_Axi4Upsizer_l59_17;
+ wire when_Axi4Upsizer_l59_18;
+ wire when_Axi4Upsizer_l59_19;
+ wire when_Axi4Upsizer_l59_20;
+ wire when_Axi4Upsizer_l59_21;
+ wire when_Axi4Upsizer_l59_22;
+ wire when_Axi4Upsizer_l59_23;
+ wire when_Axi4Upsizer_l59_24;
+ wire when_Axi4Upsizer_l59_25;
+ wire when_Axi4Upsizer_l59_26;
+ wire when_Axi4Upsizer_l59_27;
+ wire when_Axi4Upsizer_l59_28;
+ wire when_Axi4Upsizer_l59_29;
+ wire when_Axi4Upsizer_l59_30;
+ wire when_Axi4Upsizer_l59_31;
+ wire when_Axi4Upsizer_l59_32;
+ wire when_Axi4Upsizer_l59_33;
+ wire when_Axi4Upsizer_l59_34;
+ wire when_Axi4Upsizer_l59_35;
+ wire when_Axi4Upsizer_l59_36;
+ wire when_Axi4Upsizer_l59_37;
+ wire when_Axi4Upsizer_l59_38;
+ wire when_Axi4Upsizer_l59_39;
+ wire when_Axi4Upsizer_l59_40;
+ wire when_Axi4Upsizer_l59_41;
+ wire when_Axi4Upsizer_l59_42;
+ wire when_Axi4Upsizer_l59_43;
+ wire when_Axi4Upsizer_l59_44;
+ wire when_Axi4Upsizer_l59_45;
+ wire when_Axi4Upsizer_l59_46;
+ wire when_Axi4Upsizer_l59_47;
+ wire when_Axi4Upsizer_l59_48;
+ wire when_Axi4Upsizer_l59_49;
+ wire when_Axi4Upsizer_l59_50;
+ wire when_Axi4Upsizer_l59_51;
+ wire when_Axi4Upsizer_l59_52;
+ wire when_Axi4Upsizer_l59_53;
+ wire when_Axi4Upsizer_l59_54;
+ wire when_Axi4Upsizer_l59_55;
+ wire when_Axi4Upsizer_l59_56;
+ wire when_Axi4Upsizer_l59_57;
+ wire when_Axi4Upsizer_l59_58;
+ wire when_Axi4Upsizer_l59_59;
+ wire when_Axi4Upsizer_l59_60;
+ wire when_Axi4Upsizer_l59_61;
+ wire when_Axi4Upsizer_l59_62;
+ wire when_Axi4Upsizer_l59_63;
+ wire cmdLogic_dataFork_fire_1;
+ wire when_Axi4Upsizer_l68;
+ wire when_Axi4Upsizer_l68_1;
+ wire when_Axi4Upsizer_l68_2;
+ wire when_Axi4Upsizer_l68_3;
+ wire when_Axi4Upsizer_l68_4;
+ wire when_Axi4Upsizer_l68_5;
+
+ assign _zz_cmdLogic_byteCount = ({7'd0,io_input_aw_payload_len} <<< io_input_aw_payload_size);
+ assign _zz_cmdLogic_incrLen = ({1'b0,cmdLogic_byteCount} + _zz_cmdLogic_incrLen_1);
+ assign _zz_cmdLogic_incrLen_2 = io_input_aw_payload_addr[5 : 0];
+ assign _zz_cmdLogic_incrLen_1 = {5'd0, _zz_cmdLogic_incrLen_2};
+ assign _zz_dataLogic_byteCounterNext_1 = ({7'd0,1'b1} <<< dataLogic_size);
+ assign _zz_dataLogic_byteCounterNext = _zz_dataLogic_byteCounterNext_1[6:0];
+ always @(*) begin
+ case(dataLogic_size)
+ 3'b000 : _zz_dataLogic_byteActivity = 64'h0000000000000001;
+ 3'b001 : _zz_dataLogic_byteActivity = 64'h0000000000000003;
+ 3'b010 : _zz_dataLogic_byteActivity = 64'h000000000000000f;
+ 3'b011 : _zz_dataLogic_byteActivity = 64'h00000000000000ff;
+ 3'b100 : _zz_dataLogic_byteActivity = 64'h000000000000ffff;
+ default : _zz_dataLogic_byteActivity = 64'h00000000ffffffff;
+ endcase
+ end
+
+ always @(*) begin
+ io_input_aw_ready = 1'b1;
+ if(when_Stream_l993) begin
+ io_input_aw_ready = 1'b0;
+ end
+ if(when_Stream_l993_1) begin
+ io_input_aw_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l993 = ((! cmdLogic_outputFork_ready) && io_input_aw_fork2_logic_linkEnable_0);
+ assign when_Stream_l993_1 = ((! cmdLogic_dataFork_ready) && io_input_aw_fork2_logic_linkEnable_1);
+ assign cmdLogic_outputFork_valid = (io_input_aw_valid && io_input_aw_fork2_logic_linkEnable_0);
+ assign cmdLogic_outputFork_payload_addr = io_input_aw_payload_addr;
+ assign cmdLogic_outputFork_payload_id = io_input_aw_payload_id;
+ assign cmdLogic_outputFork_payload_region = io_input_aw_payload_region;
+ assign cmdLogic_outputFork_payload_len = io_input_aw_payload_len;
+ assign cmdLogic_outputFork_payload_size = io_input_aw_payload_size;
+ assign cmdLogic_outputFork_payload_burst = io_input_aw_payload_burst;
+ assign cmdLogic_outputFork_payload_lock = io_input_aw_payload_lock;
+ assign cmdLogic_outputFork_payload_cache = io_input_aw_payload_cache;
+ assign cmdLogic_outputFork_payload_qos = io_input_aw_payload_qos;
+ assign cmdLogic_outputFork_payload_prot = io_input_aw_payload_prot;
+ assign cmdLogic_outputFork_fire = (cmdLogic_outputFork_valid && cmdLogic_outputFork_ready);
+ assign cmdLogic_dataFork_valid = (io_input_aw_valid && io_input_aw_fork2_logic_linkEnable_1);
+ assign cmdLogic_dataFork_payload_addr = io_input_aw_payload_addr;
+ assign cmdLogic_dataFork_payload_id = io_input_aw_payload_id;
+ assign cmdLogic_dataFork_payload_region = io_input_aw_payload_region;
+ assign cmdLogic_dataFork_payload_len = io_input_aw_payload_len;
+ assign cmdLogic_dataFork_payload_size = io_input_aw_payload_size;
+ assign cmdLogic_dataFork_payload_burst = io_input_aw_payload_burst;
+ assign cmdLogic_dataFork_payload_lock = io_input_aw_payload_lock;
+ assign cmdLogic_dataFork_payload_cache = io_input_aw_payload_cache;
+ assign cmdLogic_dataFork_payload_qos = io_input_aw_payload_qos;
+ assign cmdLogic_dataFork_payload_prot = io_input_aw_payload_prot;
+ assign cmdLogic_dataFork_fire = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign io_output_aw_valid = cmdLogic_outputFork_valid;
+ assign cmdLogic_outputFork_ready = io_output_aw_ready;
+ assign io_output_aw_payload_addr = cmdLogic_outputFork_payload_addr;
+ assign io_output_aw_payload_id = cmdLogic_outputFork_payload_id;
+ assign io_output_aw_payload_region = cmdLogic_outputFork_payload_region;
+ always @(*) begin
+ io_output_aw_payload_len = cmdLogic_outputFork_payload_len;
+ if(when_Axi4Upsizer_l21) begin
+ io_output_aw_payload_len = {3'd0, cmdLogic_incrLen};
+ end
+ end
+
+ always @(*) begin
+ io_output_aw_payload_size = cmdLogic_outputFork_payload_size;
+ if(when_Axi4Upsizer_l21) begin
+ io_output_aw_payload_size = 3'b110;
+ if(when_Axi4Upsizer_l24) begin
+ io_output_aw_payload_size = io_input_aw_payload_size;
+ end
+ end
+ end
+
+ assign io_output_aw_payload_burst = cmdLogic_outputFork_payload_burst;
+ assign io_output_aw_payload_lock = cmdLogic_outputFork_payload_lock;
+ assign io_output_aw_payload_cache = cmdLogic_outputFork_payload_cache;
+ assign io_output_aw_payload_qos = cmdLogic_outputFork_payload_qos;
+ assign io_output_aw_payload_prot = cmdLogic_outputFork_payload_prot;
+ assign cmdLogic_byteCount = _zz_cmdLogic_byteCount[9:0];
+ assign cmdLogic_incrLen = _zz_cmdLogic_incrLen[10 : 6];
+ assign when_Axi4Upsizer_l21 = (io_output_aw_payload_burst == 2'b01);
+ assign when_Axi4Upsizer_l24 = (io_input_aw_payload_len == 8'h00);
+ assign dataLogic_byteCounterNext = ({1'b0,dataLogic_byteCounter} + _zz_dataLogic_byteCounterNext);
+ assign dataLogic_byteActivity = (_zz_dataLogic_byteActivity <<< dataLogic_byteCounter);
+ assign io_output_w_fire = (io_output_w_valid && io_output_w_ready);
+ assign io_output_w_valid = dataLogic_outputValid;
+ assign io_output_w_isStall = (io_output_w_valid && (! io_output_w_ready));
+ assign io_input_w_ready = (dataLogic_busy && (! io_output_w_isStall));
+ assign io_output_w_payload_data = dataLogic_dataBuffer;
+ assign io_output_w_payload_strb = dataLogic_maskBuffer;
+ assign io_output_w_payload_last = dataLogic_outputLast;
+ assign io_input_w_fire = (io_input_w_valid && io_input_w_ready);
+ assign when_Axi4Upsizer_l59 = dataLogic_byteActivity[0];
+ assign when_Axi4Upsizer_l59_1 = dataLogic_byteActivity[1];
+ assign when_Axi4Upsizer_l59_2 = dataLogic_byteActivity[2];
+ assign when_Axi4Upsizer_l59_3 = dataLogic_byteActivity[3];
+ assign when_Axi4Upsizer_l59_4 = dataLogic_byteActivity[4];
+ assign when_Axi4Upsizer_l59_5 = dataLogic_byteActivity[5];
+ assign when_Axi4Upsizer_l59_6 = dataLogic_byteActivity[6];
+ assign when_Axi4Upsizer_l59_7 = dataLogic_byteActivity[7];
+ assign when_Axi4Upsizer_l59_8 = dataLogic_byteActivity[8];
+ assign when_Axi4Upsizer_l59_9 = dataLogic_byteActivity[9];
+ assign when_Axi4Upsizer_l59_10 = dataLogic_byteActivity[10];
+ assign when_Axi4Upsizer_l59_11 = dataLogic_byteActivity[11];
+ assign when_Axi4Upsizer_l59_12 = dataLogic_byteActivity[12];
+ assign when_Axi4Upsizer_l59_13 = dataLogic_byteActivity[13];
+ assign when_Axi4Upsizer_l59_14 = dataLogic_byteActivity[14];
+ assign when_Axi4Upsizer_l59_15 = dataLogic_byteActivity[15];
+ assign when_Axi4Upsizer_l59_16 = dataLogic_byteActivity[16];
+ assign when_Axi4Upsizer_l59_17 = dataLogic_byteActivity[17];
+ assign when_Axi4Upsizer_l59_18 = dataLogic_byteActivity[18];
+ assign when_Axi4Upsizer_l59_19 = dataLogic_byteActivity[19];
+ assign when_Axi4Upsizer_l59_20 = dataLogic_byteActivity[20];
+ assign when_Axi4Upsizer_l59_21 = dataLogic_byteActivity[21];
+ assign when_Axi4Upsizer_l59_22 = dataLogic_byteActivity[22];
+ assign when_Axi4Upsizer_l59_23 = dataLogic_byteActivity[23];
+ assign when_Axi4Upsizer_l59_24 = dataLogic_byteActivity[24];
+ assign when_Axi4Upsizer_l59_25 = dataLogic_byteActivity[25];
+ assign when_Axi4Upsizer_l59_26 = dataLogic_byteActivity[26];
+ assign when_Axi4Upsizer_l59_27 = dataLogic_byteActivity[27];
+ assign when_Axi4Upsizer_l59_28 = dataLogic_byteActivity[28];
+ assign when_Axi4Upsizer_l59_29 = dataLogic_byteActivity[29];
+ assign when_Axi4Upsizer_l59_30 = dataLogic_byteActivity[30];
+ assign when_Axi4Upsizer_l59_31 = dataLogic_byteActivity[31];
+ assign when_Axi4Upsizer_l59_32 = dataLogic_byteActivity[32];
+ assign when_Axi4Upsizer_l59_33 = dataLogic_byteActivity[33];
+ assign when_Axi4Upsizer_l59_34 = dataLogic_byteActivity[34];
+ assign when_Axi4Upsizer_l59_35 = dataLogic_byteActivity[35];
+ assign when_Axi4Upsizer_l59_36 = dataLogic_byteActivity[36];
+ assign when_Axi4Upsizer_l59_37 = dataLogic_byteActivity[37];
+ assign when_Axi4Upsizer_l59_38 = dataLogic_byteActivity[38];
+ assign when_Axi4Upsizer_l59_39 = dataLogic_byteActivity[39];
+ assign when_Axi4Upsizer_l59_40 = dataLogic_byteActivity[40];
+ assign when_Axi4Upsizer_l59_41 = dataLogic_byteActivity[41];
+ assign when_Axi4Upsizer_l59_42 = dataLogic_byteActivity[42];
+ assign when_Axi4Upsizer_l59_43 = dataLogic_byteActivity[43];
+ assign when_Axi4Upsizer_l59_44 = dataLogic_byteActivity[44];
+ assign when_Axi4Upsizer_l59_45 = dataLogic_byteActivity[45];
+ assign when_Axi4Upsizer_l59_46 = dataLogic_byteActivity[46];
+ assign when_Axi4Upsizer_l59_47 = dataLogic_byteActivity[47];
+ assign when_Axi4Upsizer_l59_48 = dataLogic_byteActivity[48];
+ assign when_Axi4Upsizer_l59_49 = dataLogic_byteActivity[49];
+ assign when_Axi4Upsizer_l59_50 = dataLogic_byteActivity[50];
+ assign when_Axi4Upsizer_l59_51 = dataLogic_byteActivity[51];
+ assign when_Axi4Upsizer_l59_52 = dataLogic_byteActivity[52];
+ assign when_Axi4Upsizer_l59_53 = dataLogic_byteActivity[53];
+ assign when_Axi4Upsizer_l59_54 = dataLogic_byteActivity[54];
+ assign when_Axi4Upsizer_l59_55 = dataLogic_byteActivity[55];
+ assign when_Axi4Upsizer_l59_56 = dataLogic_byteActivity[56];
+ assign when_Axi4Upsizer_l59_57 = dataLogic_byteActivity[57];
+ assign when_Axi4Upsizer_l59_58 = dataLogic_byteActivity[58];
+ assign when_Axi4Upsizer_l59_59 = dataLogic_byteActivity[59];
+ assign when_Axi4Upsizer_l59_60 = dataLogic_byteActivity[60];
+ assign when_Axi4Upsizer_l59_61 = dataLogic_byteActivity[61];
+ assign when_Axi4Upsizer_l59_62 = dataLogic_byteActivity[62];
+ assign when_Axi4Upsizer_l59_63 = dataLogic_byteActivity[63];
+ assign cmdLogic_dataFork_fire_1 = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign when_Axi4Upsizer_l68 = (3'b000 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_1 = (3'b001 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_2 = (3'b010 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_3 = (3'b011 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_4 = (3'b100 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_5 = (3'b101 < cmdLogic_dataFork_payload_size);
+ assign cmdLogic_dataFork_ready = (! dataLogic_busy);
+ assign io_input_b_valid = io_output_b_valid;
+ assign io_output_b_ready = io_input_b_ready;
+ assign io_input_b_payload_id = io_output_b_payload_id;
+ assign io_input_b_payload_resp = io_output_b_payload_resp;
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b1;
+ dataLogic_outputValid <= 1'b0;
+ dataLogic_busy <= 1'b0;
+ dataLogic_maskBuffer <= 64'h0000000000000000;
+ end else begin
+ if(cmdLogic_outputFork_fire) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdLogic_dataFork_fire) begin
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_aw_ready) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(io_output_w_ready) begin
+ dataLogic_outputValid <= 1'b0;
+ end
+ if(io_output_w_fire) begin
+ dataLogic_maskBuffer <= 64'h0000000000000000;
+ end
+ if(io_input_w_fire) begin
+ dataLogic_outputValid <= ((dataLogic_byteCounterNext[6] || io_input_w_payload_last) || dataLogic_alwaysFire);
+ if(io_input_w_payload_last) begin
+ dataLogic_busy <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l59) begin
+ dataLogic_maskBuffer[0] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_1) begin
+ dataLogic_maskBuffer[1] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_2) begin
+ dataLogic_maskBuffer[2] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_3) begin
+ dataLogic_maskBuffer[3] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_4) begin
+ dataLogic_maskBuffer[4] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_5) begin
+ dataLogic_maskBuffer[5] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_6) begin
+ dataLogic_maskBuffer[6] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_7) begin
+ dataLogic_maskBuffer[7] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_8) begin
+ dataLogic_maskBuffer[8] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_9) begin
+ dataLogic_maskBuffer[9] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_10) begin
+ dataLogic_maskBuffer[10] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_11) begin
+ dataLogic_maskBuffer[11] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_12) begin
+ dataLogic_maskBuffer[12] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_13) begin
+ dataLogic_maskBuffer[13] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_14) begin
+ dataLogic_maskBuffer[14] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_15) begin
+ dataLogic_maskBuffer[15] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_16) begin
+ dataLogic_maskBuffer[16] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_17) begin
+ dataLogic_maskBuffer[17] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_18) begin
+ dataLogic_maskBuffer[18] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_19) begin
+ dataLogic_maskBuffer[19] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_20) begin
+ dataLogic_maskBuffer[20] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_21) begin
+ dataLogic_maskBuffer[21] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_22) begin
+ dataLogic_maskBuffer[22] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_23) begin
+ dataLogic_maskBuffer[23] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_24) begin
+ dataLogic_maskBuffer[24] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_25) begin
+ dataLogic_maskBuffer[25] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_26) begin
+ dataLogic_maskBuffer[26] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_27) begin
+ dataLogic_maskBuffer[27] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_28) begin
+ dataLogic_maskBuffer[28] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_29) begin
+ dataLogic_maskBuffer[29] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_30) begin
+ dataLogic_maskBuffer[30] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_31) begin
+ dataLogic_maskBuffer[31] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_32) begin
+ dataLogic_maskBuffer[32] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_33) begin
+ dataLogic_maskBuffer[33] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_34) begin
+ dataLogic_maskBuffer[34] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_35) begin
+ dataLogic_maskBuffer[35] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_36) begin
+ dataLogic_maskBuffer[36] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_37) begin
+ dataLogic_maskBuffer[37] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_38) begin
+ dataLogic_maskBuffer[38] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_39) begin
+ dataLogic_maskBuffer[39] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_40) begin
+ dataLogic_maskBuffer[40] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_41) begin
+ dataLogic_maskBuffer[41] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_42) begin
+ dataLogic_maskBuffer[42] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_43) begin
+ dataLogic_maskBuffer[43] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_44) begin
+ dataLogic_maskBuffer[44] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_45) begin
+ dataLogic_maskBuffer[45] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_46) begin
+ dataLogic_maskBuffer[46] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_47) begin
+ dataLogic_maskBuffer[47] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_48) begin
+ dataLogic_maskBuffer[48] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_49) begin
+ dataLogic_maskBuffer[49] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_50) begin
+ dataLogic_maskBuffer[50] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_51) begin
+ dataLogic_maskBuffer[51] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_52) begin
+ dataLogic_maskBuffer[52] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_53) begin
+ dataLogic_maskBuffer[53] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_54) begin
+ dataLogic_maskBuffer[54] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_55) begin
+ dataLogic_maskBuffer[55] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_56) begin
+ dataLogic_maskBuffer[56] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_57) begin
+ dataLogic_maskBuffer[57] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_58) begin
+ dataLogic_maskBuffer[58] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_59) begin
+ dataLogic_maskBuffer[59] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_60) begin
+ dataLogic_maskBuffer[60] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_61) begin
+ dataLogic_maskBuffer[61] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_62) begin
+ dataLogic_maskBuffer[62] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_63) begin
+ dataLogic_maskBuffer[63] <= io_input_w_payload_strb[3];
+ end
+ end
+ if(cmdLogic_dataFork_fire_1) begin
+ dataLogic_busy <= 1'b1;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_input_w_fire) begin
+ if(dataLogic_incrementByteCounter) begin
+ dataLogic_byteCounter <= dataLogic_byteCounterNext[5:0];
+ end
+ dataLogic_outputLast <= io_input_w_payload_last;
+ if(when_Axi4Upsizer_l59) begin
+ dataLogic_dataBuffer[7 : 0] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_1) begin
+ dataLogic_dataBuffer[15 : 8] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_2) begin
+ dataLogic_dataBuffer[23 : 16] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_3) begin
+ dataLogic_dataBuffer[31 : 24] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_4) begin
+ dataLogic_dataBuffer[39 : 32] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_5) begin
+ dataLogic_dataBuffer[47 : 40] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_6) begin
+ dataLogic_dataBuffer[55 : 48] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_7) begin
+ dataLogic_dataBuffer[63 : 56] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_8) begin
+ dataLogic_dataBuffer[71 : 64] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_9) begin
+ dataLogic_dataBuffer[79 : 72] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_10) begin
+ dataLogic_dataBuffer[87 : 80] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_11) begin
+ dataLogic_dataBuffer[95 : 88] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_12) begin
+ dataLogic_dataBuffer[103 : 96] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_13) begin
+ dataLogic_dataBuffer[111 : 104] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_14) begin
+ dataLogic_dataBuffer[119 : 112] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_15) begin
+ dataLogic_dataBuffer[127 : 120] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_16) begin
+ dataLogic_dataBuffer[135 : 128] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_17) begin
+ dataLogic_dataBuffer[143 : 136] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_18) begin
+ dataLogic_dataBuffer[151 : 144] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_19) begin
+ dataLogic_dataBuffer[159 : 152] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_20) begin
+ dataLogic_dataBuffer[167 : 160] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_21) begin
+ dataLogic_dataBuffer[175 : 168] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_22) begin
+ dataLogic_dataBuffer[183 : 176] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_23) begin
+ dataLogic_dataBuffer[191 : 184] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_24) begin
+ dataLogic_dataBuffer[199 : 192] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_25) begin
+ dataLogic_dataBuffer[207 : 200] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_26) begin
+ dataLogic_dataBuffer[215 : 208] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_27) begin
+ dataLogic_dataBuffer[223 : 216] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_28) begin
+ dataLogic_dataBuffer[231 : 224] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_29) begin
+ dataLogic_dataBuffer[239 : 232] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_30) begin
+ dataLogic_dataBuffer[247 : 240] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_31) begin
+ dataLogic_dataBuffer[255 : 248] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_32) begin
+ dataLogic_dataBuffer[263 : 256] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_33) begin
+ dataLogic_dataBuffer[271 : 264] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_34) begin
+ dataLogic_dataBuffer[279 : 272] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_35) begin
+ dataLogic_dataBuffer[287 : 280] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_36) begin
+ dataLogic_dataBuffer[295 : 288] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_37) begin
+ dataLogic_dataBuffer[303 : 296] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_38) begin
+ dataLogic_dataBuffer[311 : 304] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_39) begin
+ dataLogic_dataBuffer[319 : 312] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_40) begin
+ dataLogic_dataBuffer[327 : 320] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_41) begin
+ dataLogic_dataBuffer[335 : 328] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_42) begin
+ dataLogic_dataBuffer[343 : 336] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_43) begin
+ dataLogic_dataBuffer[351 : 344] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_44) begin
+ dataLogic_dataBuffer[359 : 352] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_45) begin
+ dataLogic_dataBuffer[367 : 360] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_46) begin
+ dataLogic_dataBuffer[375 : 368] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_47) begin
+ dataLogic_dataBuffer[383 : 376] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_48) begin
+ dataLogic_dataBuffer[391 : 384] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_49) begin
+ dataLogic_dataBuffer[399 : 392] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_50) begin
+ dataLogic_dataBuffer[407 : 400] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_51) begin
+ dataLogic_dataBuffer[415 : 408] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_52) begin
+ dataLogic_dataBuffer[423 : 416] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_53) begin
+ dataLogic_dataBuffer[431 : 424] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_54) begin
+ dataLogic_dataBuffer[439 : 432] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_55) begin
+ dataLogic_dataBuffer[447 : 440] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_56) begin
+ dataLogic_dataBuffer[455 : 448] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_57) begin
+ dataLogic_dataBuffer[463 : 456] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_58) begin
+ dataLogic_dataBuffer[471 : 464] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_59) begin
+ dataLogic_dataBuffer[479 : 472] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_60) begin
+ dataLogic_dataBuffer[487 : 480] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_61) begin
+ dataLogic_dataBuffer[495 : 488] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_62) begin
+ dataLogic_dataBuffer[503 : 496] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_63) begin
+ dataLogic_dataBuffer[511 : 504] <= io_input_w_payload_data[31 : 24];
+ end
+ end
+ if(cmdLogic_dataFork_fire_1) begin
+ dataLogic_byteCounter <= cmdLogic_dataFork_payload_addr[5:0];
+ if(when_Axi4Upsizer_l68) begin
+ dataLogic_byteCounter[0] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_1) begin
+ dataLogic_byteCounter[1] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_2) begin
+ dataLogic_byteCounter[2] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_3) begin
+ dataLogic_byteCounter[3] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_4) begin
+ dataLogic_byteCounter[4] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_5) begin
+ dataLogic_byteCounter[5] <= 1'b0;
+ end
+ dataLogic_size <= cmdLogic_dataFork_payload_size;
+ dataLogic_alwaysFire <= (! (cmdLogic_dataFork_payload_burst == 2'b01));
+ dataLogic_incrementByteCounter <= (! (cmdLogic_dataFork_payload_burst == 2'b00));
+ end
+ end
+
+
+endmodule
+
+module Asic32To512UpsizerAxi4ReadOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_ar_valid,
+ output reg io_input_ar_ready,
+ input [31:0] io_input_ar_payload_addr,
+ input [7:0] io_input_ar_payload_id,
+ input [3:0] io_input_ar_payload_region,
+ input [7:0] io_input_ar_payload_len,
+ input [2:0] io_input_ar_payload_size,
+ input [1:0] io_input_ar_payload_burst,
+ input [0:0] io_input_ar_payload_lock,
+ input [3:0] io_input_ar_payload_cache,
+ input [3:0] io_input_ar_payload_qos,
+ input [2:0] io_input_ar_payload_prot,
+ output io_input_r_valid,
+ input io_input_r_ready,
+ output [31:0] io_input_r_payload_data,
+ output [7:0] io_input_r_payload_id,
+ output [1:0] io_input_r_payload_resp,
+ output io_input_r_payload_last,
+ output io_output_ar_valid,
+ input io_output_ar_ready,
+ output [31:0] io_output_ar_payload_addr,
+ output [7:0] io_output_ar_payload_id,
+ output [3:0] io_output_ar_payload_region,
+ output [7:0] io_output_ar_payload_len,
+ output reg [2:0] io_output_ar_payload_size,
+ output [1:0] io_output_ar_payload_burst,
+ output [0:0] io_output_ar_payload_lock,
+ output [3:0] io_output_ar_payload_cache,
+ output [3:0] io_output_ar_payload_qos,
+ output [2:0] io_output_ar_payload_prot,
+ input io_output_r_valid,
+ output io_output_r_ready,
+ input [511:0] io_output_r_payload_data,
+ input [7:0] io_output_r_payload_id,
+ input [1:0] io_output_r_payload_resp,
+ input io_output_r_payload_last,
+ input clk,
+ input reset
+);
+
+ wire dataLogic_cmdPush_fifo_io_pop_ready;
+ wire dataLogic_cmdPush_fifo_io_push_ready;
+ wire dataLogic_cmdPush_fifo_io_pop_valid;
+ wire [5:0] dataLogic_cmdPush_fifo_io_pop_payload_startAt;
+ wire [5:0] dataLogic_cmdPush_fifo_io_pop_payload_endAt;
+ wire [2:0] dataLogic_cmdPush_fifo_io_pop_payload_size;
+ wire [7:0] dataLogic_cmdPush_fifo_io_pop_payload_id;
+ wire [4:0] dataLogic_cmdPush_fifo_io_occupancy;
+ wire [4:0] dataLogic_cmdPush_fifo_io_availability;
+ wire [14:0] _zz_cmdLogic_byteCount;
+ wire [10:0] _zz_cmdLogic_incrLen;
+ wire [10:0] _zz_cmdLogic_incrLen_1;
+ wire [5:0] _zz_cmdLogic_incrLen_2;
+ wire [31:0] _zz_dataLogic_cmdPush_payload_endAt;
+ wire [31:0] _zz_dataLogic_cmdPush_payload_endAt_1;
+ wire [14:0] _zz_dataLogic_cmdPush_payload_endAt_2;
+ wire [6:0] _zz_dataLogic_byteCounterNext;
+ wire [7:0] _zz_dataLogic_byteCounterNext_1;
+ reg [31:0] _zz_io_input_r_payload_data;
+ wire [3:0] _zz_io_input_r_payload_data_1;
+ wire cmdLogic_outputFork_valid;
+ wire cmdLogic_outputFork_ready;
+ wire [31:0] cmdLogic_outputFork_payload_addr;
+ wire [7:0] cmdLogic_outputFork_payload_id;
+ wire [3:0] cmdLogic_outputFork_payload_region;
+ wire [7:0] cmdLogic_outputFork_payload_len;
+ wire [2:0] cmdLogic_outputFork_payload_size;
+ wire [1:0] cmdLogic_outputFork_payload_burst;
+ wire [0:0] cmdLogic_outputFork_payload_lock;
+ wire [3:0] cmdLogic_outputFork_payload_cache;
+ wire [3:0] cmdLogic_outputFork_payload_qos;
+ wire [2:0] cmdLogic_outputFork_payload_prot;
+ wire cmdLogic_dataFork_valid;
+ wire cmdLogic_dataFork_ready;
+ wire [31:0] cmdLogic_dataFork_payload_addr;
+ wire [7:0] cmdLogic_dataFork_payload_id;
+ wire [3:0] cmdLogic_dataFork_payload_region;
+ wire [7:0] cmdLogic_dataFork_payload_len;
+ wire [2:0] cmdLogic_dataFork_payload_size;
+ wire [1:0] cmdLogic_dataFork_payload_burst;
+ wire [0:0] cmdLogic_dataFork_payload_lock;
+ wire [3:0] cmdLogic_dataFork_payload_cache;
+ wire [3:0] cmdLogic_dataFork_payload_qos;
+ wire [2:0] cmdLogic_dataFork_payload_prot;
+ reg io_input_ar_fork2_logic_linkEnable_0;
+ reg io_input_ar_fork2_logic_linkEnable_1;
+ wire when_Stream_l993;
+ wire when_Stream_l993_1;
+ wire cmdLogic_outputFork_fire;
+ wire cmdLogic_dataFork_fire;
+ wire [9:0] cmdLogic_byteCount;
+ wire [4:0] cmdLogic_incrLen;
+ wire when_Axi4Upsizer_l108;
+ wire dataLogic_cmdPush_valid;
+ wire dataLogic_cmdPush_ready;
+ wire [5:0] dataLogic_cmdPush_payload_startAt;
+ wire [5:0] dataLogic_cmdPush_payload_endAt;
+ wire [2:0] dataLogic_cmdPush_payload_size;
+ wire [7:0] dataLogic_cmdPush_payload_id;
+ reg [2:0] dataLogic_size;
+ reg dataLogic_busy;
+ reg [7:0] dataLogic_id;
+ reg [5:0] dataLogic_byteCounter;
+ reg [5:0] dataLogic_byteCounterLast;
+ wire [6:0] dataLogic_byteCounterNext;
+ wire readOnly_dataLogic_cmdPush_fifo_io_pop_fire;
+ wire io_input_r_fire;
+
+ assign _zz_cmdLogic_byteCount = ({7'd0,io_input_ar_payload_len} <<< io_input_ar_payload_size);
+ assign _zz_cmdLogic_incrLen = ({1'b0,cmdLogic_byteCount} + _zz_cmdLogic_incrLen_1);
+ assign _zz_cmdLogic_incrLen_2 = io_input_ar_payload_addr[5 : 0];
+ assign _zz_cmdLogic_incrLen_1 = {5'd0, _zz_cmdLogic_incrLen_2};
+ assign _zz_dataLogic_cmdPush_payload_endAt = (cmdLogic_dataFork_payload_addr + _zz_dataLogic_cmdPush_payload_endAt_1);
+ assign _zz_dataLogic_cmdPush_payload_endAt_2 = ({7'd0,cmdLogic_dataFork_payload_len} <<< cmdLogic_dataFork_payload_size);
+ assign _zz_dataLogic_cmdPush_payload_endAt_1 = {17'd0, _zz_dataLogic_cmdPush_payload_endAt_2};
+ assign _zz_dataLogic_byteCounterNext_1 = ({7'd0,1'b1} <<< dataLogic_size);
+ assign _zz_dataLogic_byteCounterNext = _zz_dataLogic_byteCounterNext_1[6:0];
+ assign _zz_io_input_r_payload_data_1 = (dataLogic_byteCounter >>> 2'd2);
+ Asic32To512UpsizerStreamFifo_5b3f2212c953407c83e1cf8c9cc77ea9 dataLogic_cmdPush_fifo (
+ .io_push_valid (dataLogic_cmdPush_valid ), //i
+ .io_push_ready (dataLogic_cmdPush_fifo_io_push_ready ), //o
+ .io_push_payload_startAt (dataLogic_cmdPush_payload_startAt[5:0] ), //i
+ .io_push_payload_endAt (dataLogic_cmdPush_payload_endAt[5:0] ), //i
+ .io_push_payload_size (dataLogic_cmdPush_payload_size[2:0] ), //i
+ .io_push_payload_id (dataLogic_cmdPush_payload_id[7:0] ), //i
+ .io_pop_valid (dataLogic_cmdPush_fifo_io_pop_valid ), //o
+ .io_pop_ready (dataLogic_cmdPush_fifo_io_pop_ready ), //i
+ .io_pop_payload_startAt (dataLogic_cmdPush_fifo_io_pop_payload_startAt[5:0]), //o
+ .io_pop_payload_endAt (dataLogic_cmdPush_fifo_io_pop_payload_endAt[5:0] ), //o
+ .io_pop_payload_size (dataLogic_cmdPush_fifo_io_pop_payload_size[2:0] ), //o
+ .io_pop_payload_id (dataLogic_cmdPush_fifo_io_pop_payload_id[7:0] ), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (dataLogic_cmdPush_fifo_io_occupancy[4:0] ), //o
+ .io_availability (dataLogic_cmdPush_fifo_io_availability[4:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ case(_zz_io_input_r_payload_data_1)
+ 4'b0000 : _zz_io_input_r_payload_data = io_output_r_payload_data[31 : 0];
+ 4'b0001 : _zz_io_input_r_payload_data = io_output_r_payload_data[63 : 32];
+ 4'b0010 : _zz_io_input_r_payload_data = io_output_r_payload_data[95 : 64];
+ 4'b0011 : _zz_io_input_r_payload_data = io_output_r_payload_data[127 : 96];
+ 4'b0100 : _zz_io_input_r_payload_data = io_output_r_payload_data[159 : 128];
+ 4'b0101 : _zz_io_input_r_payload_data = io_output_r_payload_data[191 : 160];
+ 4'b0110 : _zz_io_input_r_payload_data = io_output_r_payload_data[223 : 192];
+ 4'b0111 : _zz_io_input_r_payload_data = io_output_r_payload_data[255 : 224];
+ 4'b1000 : _zz_io_input_r_payload_data = io_output_r_payload_data[287 : 256];
+ 4'b1001 : _zz_io_input_r_payload_data = io_output_r_payload_data[319 : 288];
+ 4'b1010 : _zz_io_input_r_payload_data = io_output_r_payload_data[351 : 320];
+ 4'b1011 : _zz_io_input_r_payload_data = io_output_r_payload_data[383 : 352];
+ 4'b1100 : _zz_io_input_r_payload_data = io_output_r_payload_data[415 : 384];
+ 4'b1101 : _zz_io_input_r_payload_data = io_output_r_payload_data[447 : 416];
+ 4'b1110 : _zz_io_input_r_payload_data = io_output_r_payload_data[479 : 448];
+ default : _zz_io_input_r_payload_data = io_output_r_payload_data[511 : 480];
+ endcase
+ end
+
+ always @(*) begin
+ io_input_ar_ready = 1'b1;
+ if(when_Stream_l993) begin
+ io_input_ar_ready = 1'b0;
+ end
+ if(when_Stream_l993_1) begin
+ io_input_ar_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l993 = ((! cmdLogic_outputFork_ready) && io_input_ar_fork2_logic_linkEnable_0);
+ assign when_Stream_l993_1 = ((! cmdLogic_dataFork_ready) && io_input_ar_fork2_logic_linkEnable_1);
+ assign cmdLogic_outputFork_valid = (io_input_ar_valid && io_input_ar_fork2_logic_linkEnable_0);
+ assign cmdLogic_outputFork_payload_addr = io_input_ar_payload_addr;
+ assign cmdLogic_outputFork_payload_id = io_input_ar_payload_id;
+ assign cmdLogic_outputFork_payload_region = io_input_ar_payload_region;
+ assign cmdLogic_outputFork_payload_len = io_input_ar_payload_len;
+ assign cmdLogic_outputFork_payload_size = io_input_ar_payload_size;
+ assign cmdLogic_outputFork_payload_burst = io_input_ar_payload_burst;
+ assign cmdLogic_outputFork_payload_lock = io_input_ar_payload_lock;
+ assign cmdLogic_outputFork_payload_cache = io_input_ar_payload_cache;
+ assign cmdLogic_outputFork_payload_qos = io_input_ar_payload_qos;
+ assign cmdLogic_outputFork_payload_prot = io_input_ar_payload_prot;
+ assign cmdLogic_outputFork_fire = (cmdLogic_outputFork_valid && cmdLogic_outputFork_ready);
+ assign cmdLogic_dataFork_valid = (io_input_ar_valid && io_input_ar_fork2_logic_linkEnable_1);
+ assign cmdLogic_dataFork_payload_addr = io_input_ar_payload_addr;
+ assign cmdLogic_dataFork_payload_id = io_input_ar_payload_id;
+ assign cmdLogic_dataFork_payload_region = io_input_ar_payload_region;
+ assign cmdLogic_dataFork_payload_len = io_input_ar_payload_len;
+ assign cmdLogic_dataFork_payload_size = io_input_ar_payload_size;
+ assign cmdLogic_dataFork_payload_burst = io_input_ar_payload_burst;
+ assign cmdLogic_dataFork_payload_lock = io_input_ar_payload_lock;
+ assign cmdLogic_dataFork_payload_cache = io_input_ar_payload_cache;
+ assign cmdLogic_dataFork_payload_qos = io_input_ar_payload_qos;
+ assign cmdLogic_dataFork_payload_prot = io_input_ar_payload_prot;
+ assign cmdLogic_dataFork_fire = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign io_output_ar_valid = cmdLogic_outputFork_valid;
+ assign cmdLogic_outputFork_ready = io_output_ar_ready;
+ assign io_output_ar_payload_addr = cmdLogic_outputFork_payload_addr;
+ assign io_output_ar_payload_region = cmdLogic_outputFork_payload_region;
+ assign io_output_ar_payload_burst = cmdLogic_outputFork_payload_burst;
+ assign io_output_ar_payload_lock = cmdLogic_outputFork_payload_lock;
+ assign io_output_ar_payload_cache = cmdLogic_outputFork_payload_cache;
+ assign io_output_ar_payload_qos = cmdLogic_outputFork_payload_qos;
+ assign io_output_ar_payload_prot = cmdLogic_outputFork_payload_prot;
+ assign cmdLogic_byteCount = _zz_cmdLogic_byteCount[9:0];
+ assign cmdLogic_incrLen = _zz_cmdLogic_incrLen[10 : 6];
+ always @(*) begin
+ io_output_ar_payload_size = 3'b110;
+ if(when_Axi4Upsizer_l108) begin
+ io_output_ar_payload_size = io_input_ar_payload_size;
+ end
+ end
+
+ assign io_output_ar_payload_len = {3'd0, cmdLogic_incrLen};
+ assign io_output_ar_payload_id = 8'h00;
+ assign when_Axi4Upsizer_l108 = (io_input_ar_payload_len == 8'h00);
+ assign dataLogic_cmdPush_valid = cmdLogic_dataFork_valid;
+ assign cmdLogic_dataFork_ready = dataLogic_cmdPush_ready;
+ assign dataLogic_cmdPush_payload_startAt = cmdLogic_dataFork_payload_addr[5:0];
+ assign dataLogic_cmdPush_payload_endAt = _zz_dataLogic_cmdPush_payload_endAt[5:0];
+ assign dataLogic_cmdPush_payload_size = cmdLogic_dataFork_payload_size;
+ assign dataLogic_cmdPush_payload_id = cmdLogic_dataFork_payload_id;
+ assign dataLogic_cmdPush_ready = dataLogic_cmdPush_fifo_io_push_ready;
+ assign dataLogic_byteCounterNext = ({1'b0,dataLogic_byteCounter} + _zz_dataLogic_byteCounterNext);
+ assign readOnly_dataLogic_cmdPush_fifo_io_pop_fire = (dataLogic_cmdPush_fifo_io_pop_valid && dataLogic_cmdPush_fifo_io_pop_ready);
+ assign dataLogic_cmdPush_fifo_io_pop_ready = (! dataLogic_busy);
+ assign io_input_r_fire = (io_input_r_valid && io_input_r_ready);
+ assign io_input_r_valid = (io_output_r_valid && dataLogic_busy);
+ assign io_input_r_payload_last = (io_output_r_payload_last && (dataLogic_byteCounter == dataLogic_byteCounterLast));
+ assign io_input_r_payload_resp = io_output_r_payload_resp;
+ assign io_input_r_payload_data = _zz_io_input_r_payload_data;
+ assign io_input_r_payload_id = dataLogic_id;
+ assign io_output_r_ready = ((dataLogic_busy && io_input_r_ready) && (io_input_r_payload_last || dataLogic_byteCounterNext[6]));
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b1;
+ dataLogic_busy <= 1'b0;
+ end else begin
+ if(cmdLogic_outputFork_fire) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdLogic_dataFork_fire) begin
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_ar_ready) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(readOnly_dataLogic_cmdPush_fifo_io_pop_fire) begin
+ dataLogic_busy <= 1'b1;
+ end
+ if(io_input_r_fire) begin
+ if(io_input_r_payload_last) begin
+ dataLogic_busy <= 1'b0;
+ end
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(readOnly_dataLogic_cmdPush_fifo_io_pop_fire) begin
+ dataLogic_byteCounter <= dataLogic_cmdPush_fifo_io_pop_payload_startAt;
+ dataLogic_byteCounterLast <= dataLogic_cmdPush_fifo_io_pop_payload_endAt;
+ dataLogic_size <= dataLogic_cmdPush_fifo_io_pop_payload_size;
+ dataLogic_id <= dataLogic_cmdPush_fifo_io_pop_payload_id;
+ end
+ if(io_input_r_fire) begin
+ dataLogic_byteCounter <= dataLogic_byteCounterNext[5:0];
+ end
+ end
+
+
+endmodule
+
+module Asic32To512UpsizerStreamFifo_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_push_valid,
+ output io_push_ready,
+ input [5:0] io_push_payload_startAt,
+ input [5:0] io_push_payload_endAt,
+ input [2:0] io_push_payload_size,
+ input [7:0] io_push_payload_id,
+ output io_pop_valid,
+ input io_pop_ready,
+ output [5:0] io_pop_payload_startAt,
+ output [5:0] io_pop_payload_endAt,
+ output [2:0] io_pop_payload_size,
+ output [7:0] io_pop_payload_id,
+ input io_flush,
+ output [4:0] io_occupancy,
+ output [4:0] io_availability,
+ input clk,
+ input reset
+);
+
+ reg [22:0] _zz_logic_ram_port0;
+ wire [3:0] _zz_logic_pushPtr_valueNext;
+ wire [0:0] _zz_logic_pushPtr_valueNext_1;
+ wire [3:0] _zz_logic_popPtr_valueNext;
+ wire [0:0] _zz_logic_popPtr_valueNext_1;
+ wire _zz__zz_logic_ram_port0;
+ wire _zz__zz_io_pop_payload_startAt;
+ wire [22:0] _zz__zz_logic_ram_port1;
+ wire [3:0] _zz_io_availability;
+ reg _zz_1;
+ reg logic_pushPtr_willIncrement;
+ reg logic_pushPtr_willClear;
+ reg [3:0] logic_pushPtr_valueNext;
+ reg [3:0] logic_pushPtr_value;
+ wire logic_pushPtr_willOverflowIfInc;
+ wire logic_pushPtr_willOverflow;
+ reg logic_popPtr_willIncrement;
+ reg logic_popPtr_willClear;
+ reg [3:0] logic_popPtr_valueNext;
+ reg [3:0] logic_popPtr_value;
+ wire logic_popPtr_willOverflowIfInc;
+ wire logic_popPtr_willOverflow;
+ wire logic_ptrMatch;
+ reg logic_risingOccupancy;
+ wire logic_pushing;
+ wire logic_popping;
+ wire logic_empty;
+ wire logic_full;
+ reg _zz_io_pop_valid;
+ wire [22:0] _zz_io_pop_payload_startAt;
+ wire when_Stream_l1123;
+ wire [3:0] logic_ptrDif;
+ reg [22:0] logic_ram [0:15];
+
+ assign _zz_logic_pushPtr_valueNext_1 = logic_pushPtr_willIncrement;
+ assign _zz_logic_pushPtr_valueNext = {3'd0, _zz_logic_pushPtr_valueNext_1};
+ assign _zz_logic_popPtr_valueNext_1 = logic_popPtr_willIncrement;
+ assign _zz_logic_popPtr_valueNext = {3'd0, _zz_logic_popPtr_valueNext_1};
+ assign _zz_io_availability = (logic_popPtr_value - logic_pushPtr_value);
+ assign _zz__zz_io_pop_payload_startAt = 1'b1;
+ assign _zz__zz_logic_ram_port1 = {io_push_payload_id,{io_push_payload_size,{io_push_payload_endAt,io_push_payload_startAt}}};
+ always @(posedge clk) begin
+ if(_zz__zz_io_pop_payload_startAt) begin
+ _zz_logic_ram_port0 <= logic_ram[logic_popPtr_valueNext];
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_pushPtr_value] <= _zz__zz_logic_ram_port1;
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_pushing) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_pushPtr_willIncrement = 1'b0;
+ if(logic_pushing) begin
+ logic_pushPtr_willIncrement = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_pushPtr_willClear = 1'b0;
+ if(io_flush) begin
+ logic_pushPtr_willClear = 1'b1;
+ end
+ end
+
+ assign logic_pushPtr_willOverflowIfInc = (logic_pushPtr_value == 4'b1111);
+ assign logic_pushPtr_willOverflow = (logic_pushPtr_willOverflowIfInc && logic_pushPtr_willIncrement);
+ always @(*) begin
+ logic_pushPtr_valueNext = (logic_pushPtr_value + _zz_logic_pushPtr_valueNext);
+ if(logic_pushPtr_willClear) begin
+ logic_pushPtr_valueNext = 4'b0000;
+ end
+ end
+
+ always @(*) begin
+ logic_popPtr_willIncrement = 1'b0;
+ if(logic_popping) begin
+ logic_popPtr_willIncrement = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_popPtr_willClear = 1'b0;
+ if(io_flush) begin
+ logic_popPtr_willClear = 1'b1;
+ end
+ end
+
+ assign logic_popPtr_willOverflowIfInc = (logic_popPtr_value == 4'b1111);
+ assign logic_popPtr_willOverflow = (logic_popPtr_willOverflowIfInc && logic_popPtr_willIncrement);
+ always @(*) begin
+ logic_popPtr_valueNext = (logic_popPtr_value + _zz_logic_popPtr_valueNext);
+ if(logic_popPtr_willClear) begin
+ logic_popPtr_valueNext = 4'b0000;
+ end
+ end
+
+ assign logic_ptrMatch = (logic_pushPtr_value == logic_popPtr_value);
+ assign logic_pushing = (io_push_valid && io_push_ready);
+ assign logic_popping = (io_pop_valid && io_pop_ready);
+ assign logic_empty = (logic_ptrMatch && (! logic_risingOccupancy));
+ assign logic_full = (logic_ptrMatch && logic_risingOccupancy);
+ assign io_push_ready = (! logic_full);
+ assign io_pop_valid = ((! logic_empty) && (! (_zz_io_pop_valid && (! logic_full))));
+ assign _zz_io_pop_payload_startAt = _zz_logic_ram_port0;
+ assign io_pop_payload_startAt = _zz_io_pop_payload_startAt[5 : 0];
+ assign io_pop_payload_endAt = _zz_io_pop_payload_startAt[11 : 6];
+ assign io_pop_payload_size = _zz_io_pop_payload_startAt[14 : 12];
+ assign io_pop_payload_id = _zz_io_pop_payload_startAt[22 : 15];
+ assign when_Stream_l1123 = (logic_pushing != logic_popping);
+ assign logic_ptrDif = (logic_pushPtr_value - logic_popPtr_value);
+ assign io_occupancy = {(logic_risingOccupancy && logic_ptrMatch),logic_ptrDif};
+ assign io_availability = {((! logic_risingOccupancy) && logic_ptrMatch),_zz_io_availability};
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ logic_pushPtr_value <= 4'b0000;
+ logic_popPtr_value <= 4'b0000;
+ logic_risingOccupancy <= 1'b0;
+ _zz_io_pop_valid <= 1'b0;
+ end else begin
+ logic_pushPtr_value <= logic_pushPtr_valueNext;
+ logic_popPtr_value <= logic_popPtr_valueNext;
+ _zz_io_pop_valid <= (logic_popPtr_valueNext == logic_pushPtr_value);
+ if(when_Stream_l1123) begin
+ logic_risingOccupancy <= logic_pushing;
+ end
+ if(io_flush) begin
+ logic_risingOccupancy <= 1'b0;
+ end
+ end
+ end
+
+
+endmodule
+
+
+// Generator : SpinalHDL dev git head : 9cdee03b276638ef8e7a948b606bb7acc6e4c8d0
+// Component : Asic32To64UpsizerAxi4Upsizer_5b3f2212c953407c83e1cf8c9cc77ea9
+// Git hash : cd16421fb7a4d44431a2445f9a92b82070ab9b8a
+
+`timescale 1ns/1ps
+
+module Asic32To64UpsizerAxi4Upsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_aw_valid,
+ output io_input_aw_ready,
+ input [31:0] io_input_aw_payload_addr,
+ input [7:0] io_input_aw_payload_id,
+ input [3:0] io_input_aw_payload_region,
+ input [7:0] io_input_aw_payload_len,
+ input [2:0] io_input_aw_payload_size,
+ input [1:0] io_input_aw_payload_burst,
+ input [0:0] io_input_aw_payload_lock,
+ input [3:0] io_input_aw_payload_cache,
+ input [3:0] io_input_aw_payload_qos,
+ input [2:0] io_input_aw_payload_prot,
+ input io_input_w_valid,
+ output io_input_w_ready,
+ input [31:0] io_input_w_payload_data,
+ input [3:0] io_input_w_payload_strb,
+ input io_input_w_payload_last,
+ output io_input_b_valid,
+ input io_input_b_ready,
+ output [7:0] io_input_b_payload_id,
+ output [1:0] io_input_b_payload_resp,
+ input io_input_ar_valid,
+ output io_input_ar_ready,
+ input [31:0] io_input_ar_payload_addr,
+ input [7:0] io_input_ar_payload_id,
+ input [3:0] io_input_ar_payload_region,
+ input [7:0] io_input_ar_payload_len,
+ input [2:0] io_input_ar_payload_size,
+ input [1:0] io_input_ar_payload_burst,
+ input [0:0] io_input_ar_payload_lock,
+ input [3:0] io_input_ar_payload_cache,
+ input [3:0] io_input_ar_payload_qos,
+ input [2:0] io_input_ar_payload_prot,
+ output io_input_r_valid,
+ input io_input_r_ready,
+ output [31:0] io_input_r_payload_data,
+ output [7:0] io_input_r_payload_id,
+ output [1:0] io_input_r_payload_resp,
+ output io_input_r_payload_last,
+ output io_output_aw_valid,
+ input io_output_aw_ready,
+ output [31:0] io_output_aw_payload_addr,
+ output [7:0] io_output_aw_payload_id,
+ output [3:0] io_output_aw_payload_region,
+ output [7:0] io_output_aw_payload_len,
+ output [2:0] io_output_aw_payload_size,
+ output [1:0] io_output_aw_payload_burst,
+ output [0:0] io_output_aw_payload_lock,
+ output [3:0] io_output_aw_payload_cache,
+ output [3:0] io_output_aw_payload_qos,
+ output [2:0] io_output_aw_payload_prot,
+ output io_output_w_valid,
+ input io_output_w_ready,
+ output [63:0] io_output_w_payload_data,
+ output [7:0] io_output_w_payload_strb,
+ output io_output_w_payload_last,
+ input io_output_b_valid,
+ output io_output_b_ready,
+ input [7:0] io_output_b_payload_id,
+ input [1:0] io_output_b_payload_resp,
+ output io_output_ar_valid,
+ input io_output_ar_ready,
+ output [31:0] io_output_ar_payload_addr,
+ output [7:0] io_output_ar_payload_id,
+ output [3:0] io_output_ar_payload_region,
+ output [7:0] io_output_ar_payload_len,
+ output [2:0] io_output_ar_payload_size,
+ output [1:0] io_output_ar_payload_burst,
+ output [0:0] io_output_ar_payload_lock,
+ output [3:0] io_output_ar_payload_cache,
+ output [3:0] io_output_ar_payload_qos,
+ output [2:0] io_output_ar_payload_prot,
+ input io_output_r_valid,
+ output io_output_r_ready,
+ input [63:0] io_output_r_payload_data,
+ input [7:0] io_output_r_payload_id,
+ input [1:0] io_output_r_payload_resp,
+ input io_output_r_payload_last,
+ input clk,
+ input reset
+);
+
+ wire readOnly_io_input_ar_ready;
+ wire readOnly_io_input_r_valid;
+ wire [31:0] readOnly_io_input_r_payload_data;
+ wire [7:0] readOnly_io_input_r_payload_id;
+ wire [1:0] readOnly_io_input_r_payload_resp;
+ wire readOnly_io_input_r_payload_last;
+ wire readOnly_io_output_ar_valid;
+ wire [31:0] readOnly_io_output_ar_payload_addr;
+ wire [7:0] readOnly_io_output_ar_payload_id;
+ wire [3:0] readOnly_io_output_ar_payload_region;
+ wire [7:0] readOnly_io_output_ar_payload_len;
+ wire [2:0] readOnly_io_output_ar_payload_size;
+ wire [1:0] readOnly_io_output_ar_payload_burst;
+ wire [0:0] readOnly_io_output_ar_payload_lock;
+ wire [3:0] readOnly_io_output_ar_payload_cache;
+ wire [3:0] readOnly_io_output_ar_payload_qos;
+ wire [2:0] readOnly_io_output_ar_payload_prot;
+ wire readOnly_io_output_r_ready;
+ wire writeOnly_io_input_aw_ready;
+ wire writeOnly_io_input_w_ready;
+ wire writeOnly_io_input_b_valid;
+ wire [7:0] writeOnly_io_input_b_payload_id;
+ wire [1:0] writeOnly_io_input_b_payload_resp;
+ wire writeOnly_io_output_aw_valid;
+ wire [31:0] writeOnly_io_output_aw_payload_addr;
+ wire [7:0] writeOnly_io_output_aw_payload_id;
+ wire [3:0] writeOnly_io_output_aw_payload_region;
+ wire [7:0] writeOnly_io_output_aw_payload_len;
+ wire [2:0] writeOnly_io_output_aw_payload_size;
+ wire [1:0] writeOnly_io_output_aw_payload_burst;
+ wire [0:0] writeOnly_io_output_aw_payload_lock;
+ wire [3:0] writeOnly_io_output_aw_payload_cache;
+ wire [3:0] writeOnly_io_output_aw_payload_qos;
+ wire [2:0] writeOnly_io_output_aw_payload_prot;
+ wire writeOnly_io_output_w_valid;
+ wire [63:0] writeOnly_io_output_w_payload_data;
+ wire [7:0] writeOnly_io_output_w_payload_strb;
+ wire writeOnly_io_output_w_payload_last;
+ wire writeOnly_io_output_b_ready;
+
+ Asic32To64UpsizerAxi4ReadOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 readOnly (
+ .io_input_ar_valid (io_input_ar_valid ), //i
+ .io_input_ar_ready (readOnly_io_input_ar_ready ), //o
+ .io_input_ar_payload_addr (io_input_ar_payload_addr[31:0] ), //i
+ .io_input_ar_payload_id (io_input_ar_payload_id[7:0] ), //i
+ .io_input_ar_payload_region (io_input_ar_payload_region[3:0] ), //i
+ .io_input_ar_payload_len (io_input_ar_payload_len[7:0] ), //i
+ .io_input_ar_payload_size (io_input_ar_payload_size[2:0] ), //i
+ .io_input_ar_payload_burst (io_input_ar_payload_burst[1:0] ), //i
+ .io_input_ar_payload_lock (io_input_ar_payload_lock ), //i
+ .io_input_ar_payload_cache (io_input_ar_payload_cache[3:0] ), //i
+ .io_input_ar_payload_qos (io_input_ar_payload_qos[3:0] ), //i
+ .io_input_ar_payload_prot (io_input_ar_payload_prot[2:0] ), //i
+ .io_input_r_valid (readOnly_io_input_r_valid ), //o
+ .io_input_r_ready (io_input_r_ready ), //i
+ .io_input_r_payload_data (readOnly_io_input_r_payload_data[31:0] ), //o
+ .io_input_r_payload_id (readOnly_io_input_r_payload_id[7:0] ), //o
+ .io_input_r_payload_resp (readOnly_io_input_r_payload_resp[1:0] ), //o
+ .io_input_r_payload_last (readOnly_io_input_r_payload_last ), //o
+ .io_output_ar_valid (readOnly_io_output_ar_valid ), //o
+ .io_output_ar_ready (io_output_ar_ready ), //i
+ .io_output_ar_payload_addr (readOnly_io_output_ar_payload_addr[31:0] ), //o
+ .io_output_ar_payload_id (readOnly_io_output_ar_payload_id[7:0] ), //o
+ .io_output_ar_payload_region (readOnly_io_output_ar_payload_region[3:0]), //o
+ .io_output_ar_payload_len (readOnly_io_output_ar_payload_len[7:0] ), //o
+ .io_output_ar_payload_size (readOnly_io_output_ar_payload_size[2:0] ), //o
+ .io_output_ar_payload_burst (readOnly_io_output_ar_payload_burst[1:0] ), //o
+ .io_output_ar_payload_lock (readOnly_io_output_ar_payload_lock ), //o
+ .io_output_ar_payload_cache (readOnly_io_output_ar_payload_cache[3:0] ), //o
+ .io_output_ar_payload_qos (readOnly_io_output_ar_payload_qos[3:0] ), //o
+ .io_output_ar_payload_prot (readOnly_io_output_ar_payload_prot[2:0] ), //o
+ .io_output_r_valid (io_output_r_valid ), //i
+ .io_output_r_ready (readOnly_io_output_r_ready ), //o
+ .io_output_r_payload_data (io_output_r_payload_data[63:0] ), //i
+ .io_output_r_payload_id (io_output_r_payload_id[7:0] ), //i
+ .io_output_r_payload_resp (io_output_r_payload_resp[1:0] ), //i
+ .io_output_r_payload_last (io_output_r_payload_last ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ Asic32To64UpsizerAxi4WriteOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 writeOnly (
+ .io_input_aw_valid (io_input_aw_valid ), //i
+ .io_input_aw_ready (writeOnly_io_input_aw_ready ), //o
+ .io_input_aw_payload_addr (io_input_aw_payload_addr[31:0] ), //i
+ .io_input_aw_payload_id (io_input_aw_payload_id[7:0] ), //i
+ .io_input_aw_payload_region (io_input_aw_payload_region[3:0] ), //i
+ .io_input_aw_payload_len (io_input_aw_payload_len[7:0] ), //i
+ .io_input_aw_payload_size (io_input_aw_payload_size[2:0] ), //i
+ .io_input_aw_payload_burst (io_input_aw_payload_burst[1:0] ), //i
+ .io_input_aw_payload_lock (io_input_aw_payload_lock ), //i
+ .io_input_aw_payload_cache (io_input_aw_payload_cache[3:0] ), //i
+ .io_input_aw_payload_qos (io_input_aw_payload_qos[3:0] ), //i
+ .io_input_aw_payload_prot (io_input_aw_payload_prot[2:0] ), //i
+ .io_input_w_valid (io_input_w_valid ), //i
+ .io_input_w_ready (writeOnly_io_input_w_ready ), //o
+ .io_input_w_payload_data (io_input_w_payload_data[31:0] ), //i
+ .io_input_w_payload_strb (io_input_w_payload_strb[3:0] ), //i
+ .io_input_w_payload_last (io_input_w_payload_last ), //i
+ .io_input_b_valid (writeOnly_io_input_b_valid ), //o
+ .io_input_b_ready (io_input_b_ready ), //i
+ .io_input_b_payload_id (writeOnly_io_input_b_payload_id[7:0] ), //o
+ .io_input_b_payload_resp (writeOnly_io_input_b_payload_resp[1:0] ), //o
+ .io_output_aw_valid (writeOnly_io_output_aw_valid ), //o
+ .io_output_aw_ready (io_output_aw_ready ), //i
+ .io_output_aw_payload_addr (writeOnly_io_output_aw_payload_addr[31:0] ), //o
+ .io_output_aw_payload_id (writeOnly_io_output_aw_payload_id[7:0] ), //o
+ .io_output_aw_payload_region (writeOnly_io_output_aw_payload_region[3:0]), //o
+ .io_output_aw_payload_len (writeOnly_io_output_aw_payload_len[7:0] ), //o
+ .io_output_aw_payload_size (writeOnly_io_output_aw_payload_size[2:0] ), //o
+ .io_output_aw_payload_burst (writeOnly_io_output_aw_payload_burst[1:0] ), //o
+ .io_output_aw_payload_lock (writeOnly_io_output_aw_payload_lock ), //o
+ .io_output_aw_payload_cache (writeOnly_io_output_aw_payload_cache[3:0] ), //o
+ .io_output_aw_payload_qos (writeOnly_io_output_aw_payload_qos[3:0] ), //o
+ .io_output_aw_payload_prot (writeOnly_io_output_aw_payload_prot[2:0] ), //o
+ .io_output_w_valid (writeOnly_io_output_w_valid ), //o
+ .io_output_w_ready (io_output_w_ready ), //i
+ .io_output_w_payload_data (writeOnly_io_output_w_payload_data[63:0] ), //o
+ .io_output_w_payload_strb (writeOnly_io_output_w_payload_strb[7:0] ), //o
+ .io_output_w_payload_last (writeOnly_io_output_w_payload_last ), //o
+ .io_output_b_valid (io_output_b_valid ), //i
+ .io_output_b_ready (writeOnly_io_output_b_ready ), //o
+ .io_output_b_payload_id (io_output_b_payload_id[7:0] ), //i
+ .io_output_b_payload_resp (io_output_b_payload_resp[1:0] ), //i
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ assign io_input_ar_ready = readOnly_io_input_ar_ready;
+ assign io_input_r_valid = readOnly_io_input_r_valid;
+ assign io_input_r_payload_data = readOnly_io_input_r_payload_data;
+ assign io_input_r_payload_id = readOnly_io_input_r_payload_id;
+ assign io_input_r_payload_resp = readOnly_io_input_r_payload_resp;
+ assign io_input_r_payload_last = readOnly_io_input_r_payload_last;
+ assign io_input_aw_ready = writeOnly_io_input_aw_ready;
+ assign io_input_w_ready = writeOnly_io_input_w_ready;
+ assign io_input_b_valid = writeOnly_io_input_b_valid;
+ assign io_input_b_payload_id = writeOnly_io_input_b_payload_id;
+ assign io_input_b_payload_resp = writeOnly_io_input_b_payload_resp;
+ assign io_output_ar_valid = readOnly_io_output_ar_valid;
+ assign io_output_ar_payload_addr = readOnly_io_output_ar_payload_addr;
+ assign io_output_ar_payload_id = readOnly_io_output_ar_payload_id;
+ assign io_output_ar_payload_region = readOnly_io_output_ar_payload_region;
+ assign io_output_ar_payload_len = readOnly_io_output_ar_payload_len;
+ assign io_output_ar_payload_size = readOnly_io_output_ar_payload_size;
+ assign io_output_ar_payload_burst = readOnly_io_output_ar_payload_burst;
+ assign io_output_ar_payload_lock = readOnly_io_output_ar_payload_lock;
+ assign io_output_ar_payload_cache = readOnly_io_output_ar_payload_cache;
+ assign io_output_ar_payload_qos = readOnly_io_output_ar_payload_qos;
+ assign io_output_ar_payload_prot = readOnly_io_output_ar_payload_prot;
+ assign io_output_r_ready = readOnly_io_output_r_ready;
+ assign io_output_aw_valid = writeOnly_io_output_aw_valid;
+ assign io_output_aw_payload_addr = writeOnly_io_output_aw_payload_addr;
+ assign io_output_aw_payload_id = writeOnly_io_output_aw_payload_id;
+ assign io_output_aw_payload_region = writeOnly_io_output_aw_payload_region;
+ assign io_output_aw_payload_len = writeOnly_io_output_aw_payload_len;
+ assign io_output_aw_payload_size = writeOnly_io_output_aw_payload_size;
+ assign io_output_aw_payload_burst = writeOnly_io_output_aw_payload_burst;
+ assign io_output_aw_payload_lock = writeOnly_io_output_aw_payload_lock;
+ assign io_output_aw_payload_cache = writeOnly_io_output_aw_payload_cache;
+ assign io_output_aw_payload_qos = writeOnly_io_output_aw_payload_qos;
+ assign io_output_aw_payload_prot = writeOnly_io_output_aw_payload_prot;
+ assign io_output_w_valid = writeOnly_io_output_w_valid;
+ assign io_output_w_payload_data = writeOnly_io_output_w_payload_data;
+ assign io_output_w_payload_strb = writeOnly_io_output_w_payload_strb;
+ assign io_output_w_payload_last = writeOnly_io_output_w_payload_last;
+ assign io_output_b_ready = writeOnly_io_output_b_ready;
+
+endmodule
+
+module Asic32To64UpsizerAxi4WriteOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_aw_valid,
+ output reg io_input_aw_ready,
+ input [31:0] io_input_aw_payload_addr,
+ input [7:0] io_input_aw_payload_id,
+ input [3:0] io_input_aw_payload_region,
+ input [7:0] io_input_aw_payload_len,
+ input [2:0] io_input_aw_payload_size,
+ input [1:0] io_input_aw_payload_burst,
+ input [0:0] io_input_aw_payload_lock,
+ input [3:0] io_input_aw_payload_cache,
+ input [3:0] io_input_aw_payload_qos,
+ input [2:0] io_input_aw_payload_prot,
+ input io_input_w_valid,
+ output io_input_w_ready,
+ input [31:0] io_input_w_payload_data,
+ input [3:0] io_input_w_payload_strb,
+ input io_input_w_payload_last,
+ output io_input_b_valid,
+ input io_input_b_ready,
+ output [7:0] io_input_b_payload_id,
+ output [1:0] io_input_b_payload_resp,
+ output io_output_aw_valid,
+ input io_output_aw_ready,
+ output [31:0] io_output_aw_payload_addr,
+ output [7:0] io_output_aw_payload_id,
+ output [3:0] io_output_aw_payload_region,
+ output reg [7:0] io_output_aw_payload_len,
+ output reg [2:0] io_output_aw_payload_size,
+ output [1:0] io_output_aw_payload_burst,
+ output [0:0] io_output_aw_payload_lock,
+ output [3:0] io_output_aw_payload_cache,
+ output [3:0] io_output_aw_payload_qos,
+ output [2:0] io_output_aw_payload_prot,
+ output io_output_w_valid,
+ input io_output_w_ready,
+ output [63:0] io_output_w_payload_data,
+ output [7:0] io_output_w_payload_strb,
+ output io_output_w_payload_last,
+ input io_output_b_valid,
+ output io_output_b_ready,
+ input [7:0] io_output_b_payload_id,
+ input [1:0] io_output_b_payload_resp,
+ input clk,
+ input reset
+);
+
+ wire [14:0] _zz_cmdLogic_byteCount;
+ wire [10:0] _zz_cmdLogic_incrLen;
+ wire [10:0] _zz_cmdLogic_incrLen_1;
+ wire [2:0] _zz_cmdLogic_incrLen_2;
+ wire [3:0] _zz_dataLogic_byteCounterNext;
+ wire [7:0] _zz_dataLogic_byteCounterNext_1;
+ reg [7:0] _zz_dataLogic_byteActivity;
+ wire [1:0] _zz_dataLogic_byteActivity_1;
+ wire cmdLogic_outputFork_valid;
+ wire cmdLogic_outputFork_ready;
+ wire [31:0] cmdLogic_outputFork_payload_addr;
+ wire [7:0] cmdLogic_outputFork_payload_id;
+ wire [3:0] cmdLogic_outputFork_payload_region;
+ wire [7:0] cmdLogic_outputFork_payload_len;
+ wire [2:0] cmdLogic_outputFork_payload_size;
+ wire [1:0] cmdLogic_outputFork_payload_burst;
+ wire [0:0] cmdLogic_outputFork_payload_lock;
+ wire [3:0] cmdLogic_outputFork_payload_cache;
+ wire [3:0] cmdLogic_outputFork_payload_qos;
+ wire [2:0] cmdLogic_outputFork_payload_prot;
+ wire cmdLogic_dataFork_valid;
+ wire cmdLogic_dataFork_ready;
+ wire [31:0] cmdLogic_dataFork_payload_addr;
+ wire [7:0] cmdLogic_dataFork_payload_id;
+ wire [3:0] cmdLogic_dataFork_payload_region;
+ wire [7:0] cmdLogic_dataFork_payload_len;
+ wire [2:0] cmdLogic_dataFork_payload_size;
+ wire [1:0] cmdLogic_dataFork_payload_burst;
+ wire [0:0] cmdLogic_dataFork_payload_lock;
+ wire [3:0] cmdLogic_dataFork_payload_cache;
+ wire [3:0] cmdLogic_dataFork_payload_qos;
+ wire [2:0] cmdLogic_dataFork_payload_prot;
+ reg io_input_aw_fork2_logic_linkEnable_0;
+ reg io_input_aw_fork2_logic_linkEnable_1;
+ wire when_Stream_l993;
+ wire when_Stream_l993_1;
+ wire cmdLogic_outputFork_fire;
+ wire cmdLogic_dataFork_fire;
+ wire [9:0] cmdLogic_byteCount;
+ wire [7:0] cmdLogic_incrLen;
+ wire when_Axi4Upsizer_l21;
+ wire when_Axi4Upsizer_l24;
+ reg [2:0] dataLogic_byteCounter;
+ reg [2:0] dataLogic_size;
+ reg dataLogic_outputValid;
+ reg dataLogic_outputLast;
+ reg dataLogic_busy;
+ reg dataLogic_incrementByteCounter;
+ reg dataLogic_alwaysFire;
+ wire [3:0] dataLogic_byteCounterNext;
+ reg [63:0] dataLogic_dataBuffer;
+ reg [7:0] dataLogic_maskBuffer;
+ wire [7:0] dataLogic_byteActivity;
+ wire io_output_w_fire;
+ wire io_output_w_isStall;
+ wire io_input_w_fire;
+ wire when_Axi4Upsizer_l59;
+ wire when_Axi4Upsizer_l59_1;
+ wire when_Axi4Upsizer_l59_2;
+ wire when_Axi4Upsizer_l59_3;
+ wire when_Axi4Upsizer_l59_4;
+ wire when_Axi4Upsizer_l59_5;
+ wire when_Axi4Upsizer_l59_6;
+ wire when_Axi4Upsizer_l59_7;
+ wire cmdLogic_dataFork_fire_1;
+ wire when_Axi4Upsizer_l68;
+ wire when_Axi4Upsizer_l68_1;
+ wire when_Axi4Upsizer_l68_2;
+
+ assign _zz_cmdLogic_byteCount = ({7'd0,io_input_aw_payload_len} <<< io_input_aw_payload_size);
+ assign _zz_cmdLogic_incrLen = ({1'b0,cmdLogic_byteCount} + _zz_cmdLogic_incrLen_1);
+ assign _zz_cmdLogic_incrLen_2 = io_input_aw_payload_addr[2 : 0];
+ assign _zz_cmdLogic_incrLen_1 = {8'd0, _zz_cmdLogic_incrLen_2};
+ assign _zz_dataLogic_byteCounterNext_1 = ({7'd0,1'b1} <<< dataLogic_size);
+ assign _zz_dataLogic_byteCounterNext = _zz_dataLogic_byteCounterNext_1[3:0];
+ assign _zz_dataLogic_byteActivity_1 = dataLogic_size[1:0];
+ always @(*) begin
+ case(_zz_dataLogic_byteActivity_1)
+ 2'b00 : _zz_dataLogic_byteActivity = 8'h01;
+ 2'b01 : _zz_dataLogic_byteActivity = 8'h03;
+ default : _zz_dataLogic_byteActivity = 8'h0f;
+ endcase
+ end
+
+ always @(*) begin
+ io_input_aw_ready = 1'b1;
+ if(when_Stream_l993) begin
+ io_input_aw_ready = 1'b0;
+ end
+ if(when_Stream_l993_1) begin
+ io_input_aw_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l993 = ((! cmdLogic_outputFork_ready) && io_input_aw_fork2_logic_linkEnable_0);
+ assign when_Stream_l993_1 = ((! cmdLogic_dataFork_ready) && io_input_aw_fork2_logic_linkEnable_1);
+ assign cmdLogic_outputFork_valid = (io_input_aw_valid && io_input_aw_fork2_logic_linkEnable_0);
+ assign cmdLogic_outputFork_payload_addr = io_input_aw_payload_addr;
+ assign cmdLogic_outputFork_payload_id = io_input_aw_payload_id;
+ assign cmdLogic_outputFork_payload_region = io_input_aw_payload_region;
+ assign cmdLogic_outputFork_payload_len = io_input_aw_payload_len;
+ assign cmdLogic_outputFork_payload_size = io_input_aw_payload_size;
+ assign cmdLogic_outputFork_payload_burst = io_input_aw_payload_burst;
+ assign cmdLogic_outputFork_payload_lock = io_input_aw_payload_lock;
+ assign cmdLogic_outputFork_payload_cache = io_input_aw_payload_cache;
+ assign cmdLogic_outputFork_payload_qos = io_input_aw_payload_qos;
+ assign cmdLogic_outputFork_payload_prot = io_input_aw_payload_prot;
+ assign cmdLogic_outputFork_fire = (cmdLogic_outputFork_valid && cmdLogic_outputFork_ready);
+ assign cmdLogic_dataFork_valid = (io_input_aw_valid && io_input_aw_fork2_logic_linkEnable_1);
+ assign cmdLogic_dataFork_payload_addr = io_input_aw_payload_addr;
+ assign cmdLogic_dataFork_payload_id = io_input_aw_payload_id;
+ assign cmdLogic_dataFork_payload_region = io_input_aw_payload_region;
+ assign cmdLogic_dataFork_payload_len = io_input_aw_payload_len;
+ assign cmdLogic_dataFork_payload_size = io_input_aw_payload_size;
+ assign cmdLogic_dataFork_payload_burst = io_input_aw_payload_burst;
+ assign cmdLogic_dataFork_payload_lock = io_input_aw_payload_lock;
+ assign cmdLogic_dataFork_payload_cache = io_input_aw_payload_cache;
+ assign cmdLogic_dataFork_payload_qos = io_input_aw_payload_qos;
+ assign cmdLogic_dataFork_payload_prot = io_input_aw_payload_prot;
+ assign cmdLogic_dataFork_fire = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign io_output_aw_valid = cmdLogic_outputFork_valid;
+ assign cmdLogic_outputFork_ready = io_output_aw_ready;
+ assign io_output_aw_payload_addr = cmdLogic_outputFork_payload_addr;
+ assign io_output_aw_payload_id = cmdLogic_outputFork_payload_id;
+ assign io_output_aw_payload_region = cmdLogic_outputFork_payload_region;
+ always @(*) begin
+ io_output_aw_payload_len = cmdLogic_outputFork_payload_len;
+ if(when_Axi4Upsizer_l21) begin
+ io_output_aw_payload_len = cmdLogic_incrLen;
+ end
+ end
+
+ always @(*) begin
+ io_output_aw_payload_size = cmdLogic_outputFork_payload_size;
+ if(when_Axi4Upsizer_l21) begin
+ io_output_aw_payload_size = 3'b011;
+ if(when_Axi4Upsizer_l24) begin
+ io_output_aw_payload_size = io_input_aw_payload_size;
+ end
+ end
+ end
+
+ assign io_output_aw_payload_burst = cmdLogic_outputFork_payload_burst;
+ assign io_output_aw_payload_lock = cmdLogic_outputFork_payload_lock;
+ assign io_output_aw_payload_cache = cmdLogic_outputFork_payload_cache;
+ assign io_output_aw_payload_qos = cmdLogic_outputFork_payload_qos;
+ assign io_output_aw_payload_prot = cmdLogic_outputFork_payload_prot;
+ assign cmdLogic_byteCount = _zz_cmdLogic_byteCount[9:0];
+ assign cmdLogic_incrLen = _zz_cmdLogic_incrLen[10 : 3];
+ assign when_Axi4Upsizer_l21 = (io_output_aw_payload_burst == 2'b01);
+ assign when_Axi4Upsizer_l24 = (io_input_aw_payload_len == 8'h00);
+ assign dataLogic_byteCounterNext = ({1'b0,dataLogic_byteCounter} + _zz_dataLogic_byteCounterNext);
+ assign dataLogic_byteActivity = (_zz_dataLogic_byteActivity <<< dataLogic_byteCounter);
+ assign io_output_w_fire = (io_output_w_valid && io_output_w_ready);
+ assign io_output_w_valid = dataLogic_outputValid;
+ assign io_output_w_isStall = (io_output_w_valid && (! io_output_w_ready));
+ assign io_input_w_ready = (dataLogic_busy && (! io_output_w_isStall));
+ assign io_output_w_payload_data = dataLogic_dataBuffer;
+ assign io_output_w_payload_strb = dataLogic_maskBuffer;
+ assign io_output_w_payload_last = dataLogic_outputLast;
+ assign io_input_w_fire = (io_input_w_valid && io_input_w_ready);
+ assign when_Axi4Upsizer_l59 = dataLogic_byteActivity[0];
+ assign when_Axi4Upsizer_l59_1 = dataLogic_byteActivity[1];
+ assign when_Axi4Upsizer_l59_2 = dataLogic_byteActivity[2];
+ assign when_Axi4Upsizer_l59_3 = dataLogic_byteActivity[3];
+ assign when_Axi4Upsizer_l59_4 = dataLogic_byteActivity[4];
+ assign when_Axi4Upsizer_l59_5 = dataLogic_byteActivity[5];
+ assign when_Axi4Upsizer_l59_6 = dataLogic_byteActivity[6];
+ assign when_Axi4Upsizer_l59_7 = dataLogic_byteActivity[7];
+ assign cmdLogic_dataFork_fire_1 = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign when_Axi4Upsizer_l68 = (3'b000 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_1 = (3'b001 < cmdLogic_dataFork_payload_size);
+ assign when_Axi4Upsizer_l68_2 = (3'b010 < cmdLogic_dataFork_payload_size);
+ assign cmdLogic_dataFork_ready = (! dataLogic_busy);
+ assign io_input_b_valid = io_output_b_valid;
+ assign io_output_b_ready = io_input_b_ready;
+ assign io_input_b_payload_id = io_output_b_payload_id;
+ assign io_input_b_payload_resp = io_output_b_payload_resp;
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b1;
+ dataLogic_outputValid <= 1'b0;
+ dataLogic_busy <= 1'b0;
+ dataLogic_maskBuffer <= 8'h00;
+ end else begin
+ if(cmdLogic_outputFork_fire) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdLogic_dataFork_fire) begin
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_aw_ready) begin
+ io_input_aw_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_aw_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(io_output_w_ready) begin
+ dataLogic_outputValid <= 1'b0;
+ end
+ if(io_output_w_fire) begin
+ dataLogic_maskBuffer <= 8'h00;
+ end
+ if(io_input_w_fire) begin
+ dataLogic_outputValid <= ((dataLogic_byteCounterNext[3] || io_input_w_payload_last) || dataLogic_alwaysFire);
+ if(io_input_w_payload_last) begin
+ dataLogic_busy <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l59) begin
+ dataLogic_maskBuffer[0] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_1) begin
+ dataLogic_maskBuffer[1] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_2) begin
+ dataLogic_maskBuffer[2] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_3) begin
+ dataLogic_maskBuffer[3] <= io_input_w_payload_strb[3];
+ end
+ if(when_Axi4Upsizer_l59_4) begin
+ dataLogic_maskBuffer[4] <= io_input_w_payload_strb[0];
+ end
+ if(when_Axi4Upsizer_l59_5) begin
+ dataLogic_maskBuffer[5] <= io_input_w_payload_strb[1];
+ end
+ if(when_Axi4Upsizer_l59_6) begin
+ dataLogic_maskBuffer[6] <= io_input_w_payload_strb[2];
+ end
+ if(when_Axi4Upsizer_l59_7) begin
+ dataLogic_maskBuffer[7] <= io_input_w_payload_strb[3];
+ end
+ end
+ if(cmdLogic_dataFork_fire_1) begin
+ dataLogic_busy <= 1'b1;
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(io_input_w_fire) begin
+ if(dataLogic_incrementByteCounter) begin
+ dataLogic_byteCounter <= dataLogic_byteCounterNext[2:0];
+ end
+ dataLogic_outputLast <= io_input_w_payload_last;
+ if(when_Axi4Upsizer_l59) begin
+ dataLogic_dataBuffer[7 : 0] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_1) begin
+ dataLogic_dataBuffer[15 : 8] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_2) begin
+ dataLogic_dataBuffer[23 : 16] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_3) begin
+ dataLogic_dataBuffer[31 : 24] <= io_input_w_payload_data[31 : 24];
+ end
+ if(when_Axi4Upsizer_l59_4) begin
+ dataLogic_dataBuffer[39 : 32] <= io_input_w_payload_data[7 : 0];
+ end
+ if(when_Axi4Upsizer_l59_5) begin
+ dataLogic_dataBuffer[47 : 40] <= io_input_w_payload_data[15 : 8];
+ end
+ if(when_Axi4Upsizer_l59_6) begin
+ dataLogic_dataBuffer[55 : 48] <= io_input_w_payload_data[23 : 16];
+ end
+ if(when_Axi4Upsizer_l59_7) begin
+ dataLogic_dataBuffer[63 : 56] <= io_input_w_payload_data[31 : 24];
+ end
+ end
+ if(cmdLogic_dataFork_fire_1) begin
+ dataLogic_byteCounter <= cmdLogic_dataFork_payload_addr[2:0];
+ if(when_Axi4Upsizer_l68) begin
+ dataLogic_byteCounter[0] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_1) begin
+ dataLogic_byteCounter[1] <= 1'b0;
+ end
+ if(when_Axi4Upsizer_l68_2) begin
+ dataLogic_byteCounter[2] <= 1'b0;
+ end
+ dataLogic_size <= cmdLogic_dataFork_payload_size;
+ dataLogic_alwaysFire <= (! (cmdLogic_dataFork_payload_burst == 2'b01));
+ dataLogic_incrementByteCounter <= (! (cmdLogic_dataFork_payload_burst == 2'b00));
+ end
+ end
+
+
+endmodule
+
+module Asic32To64UpsizerAxi4ReadOnlyUpsizer_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_input_ar_valid,
+ output reg io_input_ar_ready,
+ input [31:0] io_input_ar_payload_addr,
+ input [7:0] io_input_ar_payload_id,
+ input [3:0] io_input_ar_payload_region,
+ input [7:0] io_input_ar_payload_len,
+ input [2:0] io_input_ar_payload_size,
+ input [1:0] io_input_ar_payload_burst,
+ input [0:0] io_input_ar_payload_lock,
+ input [3:0] io_input_ar_payload_cache,
+ input [3:0] io_input_ar_payload_qos,
+ input [2:0] io_input_ar_payload_prot,
+ output io_input_r_valid,
+ input io_input_r_ready,
+ output [31:0] io_input_r_payload_data,
+ output [7:0] io_input_r_payload_id,
+ output [1:0] io_input_r_payload_resp,
+ output io_input_r_payload_last,
+ output io_output_ar_valid,
+ input io_output_ar_ready,
+ output [31:0] io_output_ar_payload_addr,
+ output [7:0] io_output_ar_payload_id,
+ output [3:0] io_output_ar_payload_region,
+ output [7:0] io_output_ar_payload_len,
+ output reg [2:0] io_output_ar_payload_size,
+ output [1:0] io_output_ar_payload_burst,
+ output [0:0] io_output_ar_payload_lock,
+ output [3:0] io_output_ar_payload_cache,
+ output [3:0] io_output_ar_payload_qos,
+ output [2:0] io_output_ar_payload_prot,
+ input io_output_r_valid,
+ output io_output_r_ready,
+ input [63:0] io_output_r_payload_data,
+ input [7:0] io_output_r_payload_id,
+ input [1:0] io_output_r_payload_resp,
+ input io_output_r_payload_last,
+ input clk,
+ input reset
+);
+
+ wire dataLogic_cmdPush_fifo_io_pop_ready;
+ wire dataLogic_cmdPush_fifo_io_push_ready;
+ wire dataLogic_cmdPush_fifo_io_pop_valid;
+ wire [2:0] dataLogic_cmdPush_fifo_io_pop_payload_startAt;
+ wire [2:0] dataLogic_cmdPush_fifo_io_pop_payload_endAt;
+ wire [2:0] dataLogic_cmdPush_fifo_io_pop_payload_size;
+ wire [7:0] dataLogic_cmdPush_fifo_io_pop_payload_id;
+ wire [4:0] dataLogic_cmdPush_fifo_io_occupancy;
+ wire [4:0] dataLogic_cmdPush_fifo_io_availability;
+ wire [14:0] _zz_cmdLogic_byteCount;
+ wire [10:0] _zz_cmdLogic_incrLen;
+ wire [10:0] _zz_cmdLogic_incrLen_1;
+ wire [2:0] _zz_cmdLogic_incrLen_2;
+ wire [31:0] _zz_dataLogic_cmdPush_payload_endAt;
+ wire [31:0] _zz_dataLogic_cmdPush_payload_endAt_1;
+ wire [14:0] _zz_dataLogic_cmdPush_payload_endAt_2;
+ wire [3:0] _zz_dataLogic_byteCounterNext;
+ wire [7:0] _zz_dataLogic_byteCounterNext_1;
+ reg [31:0] _zz_io_input_r_payload_data;
+ wire [0:0] _zz_io_input_r_payload_data_1;
+ wire cmdLogic_outputFork_valid;
+ wire cmdLogic_outputFork_ready;
+ wire [31:0] cmdLogic_outputFork_payload_addr;
+ wire [7:0] cmdLogic_outputFork_payload_id;
+ wire [3:0] cmdLogic_outputFork_payload_region;
+ wire [7:0] cmdLogic_outputFork_payload_len;
+ wire [2:0] cmdLogic_outputFork_payload_size;
+ wire [1:0] cmdLogic_outputFork_payload_burst;
+ wire [0:0] cmdLogic_outputFork_payload_lock;
+ wire [3:0] cmdLogic_outputFork_payload_cache;
+ wire [3:0] cmdLogic_outputFork_payload_qos;
+ wire [2:0] cmdLogic_outputFork_payload_prot;
+ wire cmdLogic_dataFork_valid;
+ wire cmdLogic_dataFork_ready;
+ wire [31:0] cmdLogic_dataFork_payload_addr;
+ wire [7:0] cmdLogic_dataFork_payload_id;
+ wire [3:0] cmdLogic_dataFork_payload_region;
+ wire [7:0] cmdLogic_dataFork_payload_len;
+ wire [2:0] cmdLogic_dataFork_payload_size;
+ wire [1:0] cmdLogic_dataFork_payload_burst;
+ wire [0:0] cmdLogic_dataFork_payload_lock;
+ wire [3:0] cmdLogic_dataFork_payload_cache;
+ wire [3:0] cmdLogic_dataFork_payload_qos;
+ wire [2:0] cmdLogic_dataFork_payload_prot;
+ reg io_input_ar_fork2_logic_linkEnable_0;
+ reg io_input_ar_fork2_logic_linkEnable_1;
+ wire when_Stream_l993;
+ wire when_Stream_l993_1;
+ wire cmdLogic_outputFork_fire;
+ wire cmdLogic_dataFork_fire;
+ wire [9:0] cmdLogic_byteCount;
+ wire [7:0] cmdLogic_incrLen;
+ wire when_Axi4Upsizer_l108;
+ wire dataLogic_cmdPush_valid;
+ wire dataLogic_cmdPush_ready;
+ wire [2:0] dataLogic_cmdPush_payload_startAt;
+ wire [2:0] dataLogic_cmdPush_payload_endAt;
+ wire [2:0] dataLogic_cmdPush_payload_size;
+ wire [7:0] dataLogic_cmdPush_payload_id;
+ reg [2:0] dataLogic_size;
+ reg dataLogic_busy;
+ reg [7:0] dataLogic_id;
+ reg [2:0] dataLogic_byteCounter;
+ reg [2:0] dataLogic_byteCounterLast;
+ wire [3:0] dataLogic_byteCounterNext;
+ wire readOnly_dataLogic_cmdPush_fifo_io_pop_fire;
+ wire io_input_r_fire;
+
+ assign _zz_cmdLogic_byteCount = ({7'd0,io_input_ar_payload_len} <<< io_input_ar_payload_size);
+ assign _zz_cmdLogic_incrLen = ({1'b0,cmdLogic_byteCount} + _zz_cmdLogic_incrLen_1);
+ assign _zz_cmdLogic_incrLen_2 = io_input_ar_payload_addr[2 : 0];
+ assign _zz_cmdLogic_incrLen_1 = {8'd0, _zz_cmdLogic_incrLen_2};
+ assign _zz_dataLogic_cmdPush_payload_endAt = (cmdLogic_dataFork_payload_addr + _zz_dataLogic_cmdPush_payload_endAt_1);
+ assign _zz_dataLogic_cmdPush_payload_endAt_2 = ({7'd0,cmdLogic_dataFork_payload_len} <<< cmdLogic_dataFork_payload_size);
+ assign _zz_dataLogic_cmdPush_payload_endAt_1 = {17'd0, _zz_dataLogic_cmdPush_payload_endAt_2};
+ assign _zz_dataLogic_byteCounterNext_1 = ({7'd0,1'b1} <<< dataLogic_size);
+ assign _zz_dataLogic_byteCounterNext = _zz_dataLogic_byteCounterNext_1[3:0];
+ assign _zz_io_input_r_payload_data_1 = (dataLogic_byteCounter >>> 2'd2);
+ Asic32To64UpsizerStreamFifo_5b3f2212c953407c83e1cf8c9cc77ea9 dataLogic_cmdPush_fifo (
+ .io_push_valid (dataLogic_cmdPush_valid ), //i
+ .io_push_ready (dataLogic_cmdPush_fifo_io_push_ready ), //o
+ .io_push_payload_startAt (dataLogic_cmdPush_payload_startAt[2:0] ), //i
+ .io_push_payload_endAt (dataLogic_cmdPush_payload_endAt[2:0] ), //i
+ .io_push_payload_size (dataLogic_cmdPush_payload_size[2:0] ), //i
+ .io_push_payload_id (dataLogic_cmdPush_payload_id[7:0] ), //i
+ .io_pop_valid (dataLogic_cmdPush_fifo_io_pop_valid ), //o
+ .io_pop_ready (dataLogic_cmdPush_fifo_io_pop_ready ), //i
+ .io_pop_payload_startAt (dataLogic_cmdPush_fifo_io_pop_payload_startAt[2:0]), //o
+ .io_pop_payload_endAt (dataLogic_cmdPush_fifo_io_pop_payload_endAt[2:0] ), //o
+ .io_pop_payload_size (dataLogic_cmdPush_fifo_io_pop_payload_size[2:0] ), //o
+ .io_pop_payload_id (dataLogic_cmdPush_fifo_io_pop_payload_id[7:0] ), //o
+ .io_flush (1'b0 ), //i
+ .io_occupancy (dataLogic_cmdPush_fifo_io_occupancy[4:0] ), //o
+ .io_availability (dataLogic_cmdPush_fifo_io_availability[4:0] ), //o
+ .clk (clk ), //i
+ .reset (reset ) //i
+ );
+ always @(*) begin
+ case(_zz_io_input_r_payload_data_1)
+ 1'b0 : _zz_io_input_r_payload_data = io_output_r_payload_data[31 : 0];
+ default : _zz_io_input_r_payload_data = io_output_r_payload_data[63 : 32];
+ endcase
+ end
+
+ always @(*) begin
+ io_input_ar_ready = 1'b1;
+ if(when_Stream_l993) begin
+ io_input_ar_ready = 1'b0;
+ end
+ if(when_Stream_l993_1) begin
+ io_input_ar_ready = 1'b0;
+ end
+ end
+
+ assign when_Stream_l993 = ((! cmdLogic_outputFork_ready) && io_input_ar_fork2_logic_linkEnable_0);
+ assign when_Stream_l993_1 = ((! cmdLogic_dataFork_ready) && io_input_ar_fork2_logic_linkEnable_1);
+ assign cmdLogic_outputFork_valid = (io_input_ar_valid && io_input_ar_fork2_logic_linkEnable_0);
+ assign cmdLogic_outputFork_payload_addr = io_input_ar_payload_addr;
+ assign cmdLogic_outputFork_payload_id = io_input_ar_payload_id;
+ assign cmdLogic_outputFork_payload_region = io_input_ar_payload_region;
+ assign cmdLogic_outputFork_payload_len = io_input_ar_payload_len;
+ assign cmdLogic_outputFork_payload_size = io_input_ar_payload_size;
+ assign cmdLogic_outputFork_payload_burst = io_input_ar_payload_burst;
+ assign cmdLogic_outputFork_payload_lock = io_input_ar_payload_lock;
+ assign cmdLogic_outputFork_payload_cache = io_input_ar_payload_cache;
+ assign cmdLogic_outputFork_payload_qos = io_input_ar_payload_qos;
+ assign cmdLogic_outputFork_payload_prot = io_input_ar_payload_prot;
+ assign cmdLogic_outputFork_fire = (cmdLogic_outputFork_valid && cmdLogic_outputFork_ready);
+ assign cmdLogic_dataFork_valid = (io_input_ar_valid && io_input_ar_fork2_logic_linkEnable_1);
+ assign cmdLogic_dataFork_payload_addr = io_input_ar_payload_addr;
+ assign cmdLogic_dataFork_payload_id = io_input_ar_payload_id;
+ assign cmdLogic_dataFork_payload_region = io_input_ar_payload_region;
+ assign cmdLogic_dataFork_payload_len = io_input_ar_payload_len;
+ assign cmdLogic_dataFork_payload_size = io_input_ar_payload_size;
+ assign cmdLogic_dataFork_payload_burst = io_input_ar_payload_burst;
+ assign cmdLogic_dataFork_payload_lock = io_input_ar_payload_lock;
+ assign cmdLogic_dataFork_payload_cache = io_input_ar_payload_cache;
+ assign cmdLogic_dataFork_payload_qos = io_input_ar_payload_qos;
+ assign cmdLogic_dataFork_payload_prot = io_input_ar_payload_prot;
+ assign cmdLogic_dataFork_fire = (cmdLogic_dataFork_valid && cmdLogic_dataFork_ready);
+ assign io_output_ar_valid = cmdLogic_outputFork_valid;
+ assign cmdLogic_outputFork_ready = io_output_ar_ready;
+ assign io_output_ar_payload_addr = cmdLogic_outputFork_payload_addr;
+ assign io_output_ar_payload_region = cmdLogic_outputFork_payload_region;
+ assign io_output_ar_payload_burst = cmdLogic_outputFork_payload_burst;
+ assign io_output_ar_payload_lock = cmdLogic_outputFork_payload_lock;
+ assign io_output_ar_payload_cache = cmdLogic_outputFork_payload_cache;
+ assign io_output_ar_payload_qos = cmdLogic_outputFork_payload_qos;
+ assign io_output_ar_payload_prot = cmdLogic_outputFork_payload_prot;
+ assign cmdLogic_byteCount = _zz_cmdLogic_byteCount[9:0];
+ assign cmdLogic_incrLen = _zz_cmdLogic_incrLen[10 : 3];
+ always @(*) begin
+ io_output_ar_payload_size = 3'b011;
+ if(when_Axi4Upsizer_l108) begin
+ io_output_ar_payload_size = io_input_ar_payload_size;
+ end
+ end
+
+ assign io_output_ar_payload_len = cmdLogic_incrLen;
+ assign io_output_ar_payload_id = 8'h00;
+ assign when_Axi4Upsizer_l108 = (io_input_ar_payload_len == 8'h00);
+ assign dataLogic_cmdPush_valid = cmdLogic_dataFork_valid;
+ assign cmdLogic_dataFork_ready = dataLogic_cmdPush_ready;
+ assign dataLogic_cmdPush_payload_startAt = cmdLogic_dataFork_payload_addr[2:0];
+ assign dataLogic_cmdPush_payload_endAt = _zz_dataLogic_cmdPush_payload_endAt[2:0];
+ assign dataLogic_cmdPush_payload_size = cmdLogic_dataFork_payload_size;
+ assign dataLogic_cmdPush_payload_id = cmdLogic_dataFork_payload_id;
+ assign dataLogic_cmdPush_ready = dataLogic_cmdPush_fifo_io_push_ready;
+ assign dataLogic_byteCounterNext = ({1'b0,dataLogic_byteCounter} + _zz_dataLogic_byteCounterNext);
+ assign readOnly_dataLogic_cmdPush_fifo_io_pop_fire = (dataLogic_cmdPush_fifo_io_pop_valid && dataLogic_cmdPush_fifo_io_pop_ready);
+ assign dataLogic_cmdPush_fifo_io_pop_ready = (! dataLogic_busy);
+ assign io_input_r_fire = (io_input_r_valid && io_input_r_ready);
+ assign io_input_r_valid = (io_output_r_valid && dataLogic_busy);
+ assign io_input_r_payload_last = (io_output_r_payload_last && (dataLogic_byteCounter == dataLogic_byteCounterLast));
+ assign io_input_r_payload_resp = io_output_r_payload_resp;
+ assign io_input_r_payload_data = _zz_io_input_r_payload_data;
+ assign io_input_r_payload_id = dataLogic_id;
+ assign io_output_r_ready = ((dataLogic_busy && io_input_r_ready) && (io_input_r_payload_last || dataLogic_byteCounterNext[3]));
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b1;
+ dataLogic_busy <= 1'b0;
+ end else begin
+ if(cmdLogic_outputFork_fire) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b0;
+ end
+ if(cmdLogic_dataFork_fire) begin
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b0;
+ end
+ if(io_input_ar_ready) begin
+ io_input_ar_fork2_logic_linkEnable_0 <= 1'b1;
+ io_input_ar_fork2_logic_linkEnable_1 <= 1'b1;
+ end
+ if(readOnly_dataLogic_cmdPush_fifo_io_pop_fire) begin
+ dataLogic_busy <= 1'b1;
+ end
+ if(io_input_r_fire) begin
+ if(io_input_r_payload_last) begin
+ dataLogic_busy <= 1'b0;
+ end
+ end
+ end
+ end
+
+ always @(posedge clk) begin
+ if(readOnly_dataLogic_cmdPush_fifo_io_pop_fire) begin
+ dataLogic_byteCounter <= dataLogic_cmdPush_fifo_io_pop_payload_startAt;
+ dataLogic_byteCounterLast <= dataLogic_cmdPush_fifo_io_pop_payload_endAt;
+ dataLogic_size <= dataLogic_cmdPush_fifo_io_pop_payload_size;
+ dataLogic_id <= dataLogic_cmdPush_fifo_io_pop_payload_id;
+ end
+ if(io_input_r_fire) begin
+ dataLogic_byteCounter <= dataLogic_byteCounterNext[2:0];
+ end
+ end
+
+
+endmodule
+
+module Asic32To64UpsizerStreamFifo_5b3f2212c953407c83e1cf8c9cc77ea9 (
+ input io_push_valid,
+ output io_push_ready,
+ input [2:0] io_push_payload_startAt,
+ input [2:0] io_push_payload_endAt,
+ input [2:0] io_push_payload_size,
+ input [7:0] io_push_payload_id,
+ output io_pop_valid,
+ input io_pop_ready,
+ output [2:0] io_pop_payload_startAt,
+ output [2:0] io_pop_payload_endAt,
+ output [2:0] io_pop_payload_size,
+ output [7:0] io_pop_payload_id,
+ input io_flush,
+ output [4:0] io_occupancy,
+ output [4:0] io_availability,
+ input clk,
+ input reset
+);
+
+ reg [16:0] _zz_logic_ram_port0;
+ wire [3:0] _zz_logic_pushPtr_valueNext;
+ wire [0:0] _zz_logic_pushPtr_valueNext_1;
+ wire [3:0] _zz_logic_popPtr_valueNext;
+ wire [0:0] _zz_logic_popPtr_valueNext_1;
+ wire _zz__zz_logic_ram_port0;
+ wire _zz__zz_io_pop_payload_startAt;
+ wire [16:0] _zz__zz_logic_ram_port1;
+ wire [3:0] _zz_io_availability;
+ reg _zz_1;
+ reg logic_pushPtr_willIncrement;
+ reg logic_pushPtr_willClear;
+ reg [3:0] logic_pushPtr_valueNext;
+ reg [3:0] logic_pushPtr_value;
+ wire logic_pushPtr_willOverflowIfInc;
+ wire logic_pushPtr_willOverflow;
+ reg logic_popPtr_willIncrement;
+ reg logic_popPtr_willClear;
+ reg [3:0] logic_popPtr_valueNext;
+ reg [3:0] logic_popPtr_value;
+ wire logic_popPtr_willOverflowIfInc;
+ wire logic_popPtr_willOverflow;
+ wire logic_ptrMatch;
+ reg logic_risingOccupancy;
+ wire logic_pushing;
+ wire logic_popping;
+ wire logic_empty;
+ wire logic_full;
+ reg _zz_io_pop_valid;
+ wire [16:0] _zz_io_pop_payload_startAt;
+ wire when_Stream_l1123;
+ wire [3:0] logic_ptrDif;
+ reg [16:0] logic_ram [0:15];
+
+ assign _zz_logic_pushPtr_valueNext_1 = logic_pushPtr_willIncrement;
+ assign _zz_logic_pushPtr_valueNext = {3'd0, _zz_logic_pushPtr_valueNext_1};
+ assign _zz_logic_popPtr_valueNext_1 = logic_popPtr_willIncrement;
+ assign _zz_logic_popPtr_valueNext = {3'd0, _zz_logic_popPtr_valueNext_1};
+ assign _zz_io_availability = (logic_popPtr_value - logic_pushPtr_value);
+ assign _zz__zz_io_pop_payload_startAt = 1'b1;
+ assign _zz__zz_logic_ram_port1 = {io_push_payload_id,{io_push_payload_size,{io_push_payload_endAt,io_push_payload_startAt}}};
+ always @(posedge clk) begin
+ if(_zz__zz_io_pop_payload_startAt) begin
+ _zz_logic_ram_port0 <= logic_ram[logic_popPtr_valueNext];
+ end
+ end
+
+ always @(posedge clk) begin
+ if(_zz_1) begin
+ logic_ram[logic_pushPtr_value] <= _zz__zz_logic_ram_port1;
+ end
+ end
+
+ always @(*) begin
+ _zz_1 = 1'b0;
+ if(logic_pushing) begin
+ _zz_1 = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_pushPtr_willIncrement = 1'b0;
+ if(logic_pushing) begin
+ logic_pushPtr_willIncrement = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_pushPtr_willClear = 1'b0;
+ if(io_flush) begin
+ logic_pushPtr_willClear = 1'b1;
+ end
+ end
+
+ assign logic_pushPtr_willOverflowIfInc = (logic_pushPtr_value == 4'b1111);
+ assign logic_pushPtr_willOverflow = (logic_pushPtr_willOverflowIfInc && logic_pushPtr_willIncrement);
+ always @(*) begin
+ logic_pushPtr_valueNext = (logic_pushPtr_value + _zz_logic_pushPtr_valueNext);
+ if(logic_pushPtr_willClear) begin
+ logic_pushPtr_valueNext = 4'b0000;
+ end
+ end
+
+ always @(*) begin
+ logic_popPtr_willIncrement = 1'b0;
+ if(logic_popping) begin
+ logic_popPtr_willIncrement = 1'b1;
+ end
+ end
+
+ always @(*) begin
+ logic_popPtr_willClear = 1'b0;
+ if(io_flush) begin
+ logic_popPtr_willClear = 1'b1;
+ end
+ end
+
+ assign logic_popPtr_willOverflowIfInc = (logic_popPtr_value == 4'b1111);
+ assign logic_popPtr_willOverflow = (logic_popPtr_willOverflowIfInc && logic_popPtr_willIncrement);
+ always @(*) begin
+ logic_popPtr_valueNext = (logic_popPtr_value + _zz_logic_popPtr_valueNext);
+ if(logic_popPtr_willClear) begin
+ logic_popPtr_valueNext = 4'b0000;
+ end
+ end
+
+ assign logic_ptrMatch = (logic_pushPtr_value == logic_popPtr_value);
+ assign logic_pushing = (io_push_valid && io_push_ready);
+ assign logic_popping = (io_pop_valid && io_pop_ready);
+ assign logic_empty = (logic_ptrMatch && (! logic_risingOccupancy));
+ assign logic_full = (logic_ptrMatch && logic_risingOccupancy);
+ assign io_push_ready = (! logic_full);
+ assign io_pop_valid = ((! logic_empty) && (! (_zz_io_pop_valid && (! logic_full))));
+ assign _zz_io_pop_payload_startAt = _zz_logic_ram_port0;
+ assign io_pop_payload_startAt = _zz_io_pop_payload_startAt[2 : 0];
+ assign io_pop_payload_endAt = _zz_io_pop_payload_startAt[5 : 3];
+ assign io_pop_payload_size = _zz_io_pop_payload_startAt[8 : 6];
+ assign io_pop_payload_id = _zz_io_pop_payload_startAt[16 : 9];
+ assign when_Stream_l1123 = (logic_pushing != logic_popping);
+ assign logic_ptrDif = (logic_pushPtr_value - logic_popPtr_value);
+ assign io_occupancy = {(logic_risingOccupancy && logic_ptrMatch),logic_ptrDif};
+ assign io_availability = {((! logic_risingOccupancy) && logic_ptrMatch),_zz_io_availability};
+ always @(posedge clk or posedge reset) begin
+ if(reset) begin
+ logic_pushPtr_value <= 4'b0000;
+ logic_popPtr_value <= 4'b0000;
+ logic_risingOccupancy <= 1'b0;
+ _zz_io_pop_valid <= 1'b0;
+ end else begin
+ logic_pushPtr_value <= logic_pushPtr_valueNext;
+ logic_popPtr_value <= logic_popPtr_valueNext;
+ _zz_io_pop_valid <= (logic_popPtr_valueNext == logic_pushPtr_value);
+ if(when_Stream_l1123) begin
+ logic_risingOccupancy <= logic_pushing;
+ end
+ if(io_flush) begin
+ logic_risingOccupancy <= 1'b0;
+ end
+ end
+ end
+
+
+endmodule
+
+
+`resetall
+`timescale 1ns/1ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+OOoBg4gI2nZAz8wwveQb2xYziCO/14ylivOE2CroC0KR1q446pg5ZHoTPlNXu9oR
+FRdk+YQI93EEtwl0LJTuMb+sGUNIUS2ieLbzb7gpgkBuOgUljkWzXsN0p2S8f9nQ
+QN9I/ZlxuRJ+sjdUPzEEEWHeUFIamGV/bFLJQRvloxvTvwLpmavqG6GhWi2vdXHo
+7WqQVvDZRXw2M1o9dR9PdlpAkysf1TragnGQk5AkUZ3qOXFRHbxOhnJyTnaE1GyX
+Oq59frbbD4+rLXSfc5EcBvIcpDJOgpRiCtikYUTFmw45b5M9gLaBYasEi8c7ZLIR
+hQNrovA1RmOBbD4PGOXIrw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 752 )
+`pragma protect data_block
+om+C6TrXX7WvV09MgL6R62R+Od59uPw5eeLNNbNww55GLUXwwj/XGluwdblYZx9I
+X+OGjlllzxPGhddDes1uu0dNKh2ykfPsuWVHff2KPOJBKoYeNx6pVHSJR6EuePH0
+AhyaQM8gII6oK6SM94NjiC9BWcfDvsjfNZytp9D451ZvKE98e0NYabL8MIo9s2kV
+hXffla5eL/f4PK7O6Y5XPFWrEpZtzAnWBDgKmEsiwAaDCKqGSY4iiwUewIaBv+no
++Ka4H3jnDmn/kGjkCfbajYK06RFHwFFJlgAzE5OFkMY8Ksmj63sVYM69D9UbM9DF
+niOhc7FJg8UxSMZivgX9broAWkURRuJv8CeV37kSTWQY3ZEYK5YVCUjgwJEDCYju
+ttWTXEpc3zXD52bxJep6OqjHO4n3brwnDjGeWrfb2IENd5VuXBspvMZ+2N3dGmpM
+2nyNRZa7erdjUbB3k9+o0Efs02Jvj7TCsviSczk7axZYkJZI4mxPF+b8FStXCvEB
+LXfZ7zKmlAcvi4QhCJ3anblnrJDeiGvv5UisphO/KeahF76MYUcZZi2tkiS7KcqN
+BgGiZEgzvz6q/euENKIJAJI7Z+YoEOXDZfFoEW20WgSe2LbF5HK0npobYc8MHqIs
+Pj1UIlLucUKcAg865RSblbpeLgNK5ryqdU+QOwi1pM8JFsgF48JfdVWMaFu9sWdV
+zMNn55XZ4AvwOAnua8nN1fZ6mOpwJX4Ebii/zW5S/6Mm0kbhHkqZg78eXQEQMbJP
+5YUFRgm2EkdKkxUmk2qwycEMEqLvXk/aOg48zpGcLAp9LwMjFRotYNW5+ygxGGQ9
+WR2CYo06vLomSI/uE7XlTHHUArxUtH385f1fq7V4QRutX19Wjq6GyG/YJWl2JURc
+u+WqUFTAylQRC8Fhb+BPUoP6oW1YmiFwJ0LDM6xFkFWk7by/1wO0DdZV+slmdKR2
+1sxJAK6dd4yk223AytIzJlN7eZ9pmgJa3n4/X0QNDSY=
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+lvtXQ11Z9LNNq59Ajdesxcgo5CSVwrUQlGzmWsibhgsAsHyCjqyj0vMRSR+QiEty
+/yyi7z21Q4K7YH9jOeDy5ci704W9tiZzbY6jJLUXKIB8tCJnB8DHWfmPTJjac1+X
+kAprlwdHkFxurVjCyvzvpsDzl+7qd3dfEhaBAOQTrigUU88CdOFxwRcXpGn8arty
+jpeOR3kDUSTf2tPHovV/i7635KJFX7o+tzJgPU4pQpgxBuHNN2b2rUy4eZxHS8/K
+SkBE3iIjiOUYaJHZOgUGks3PvjFmmj3eD3ktt+v8nt/ozHPjJ7+uP8/p3i+qPyOY
+4YYq/Ldon1lQeJanU4emrg==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 800 )
+`pragma protect data_block
+LXRln5CGH/X3ZcC9f1s9GTxumdb3ijnQQ2FPf5CLS40wU3FpMlOGzCsOTBaQ0U2F
+9oguD9QGHXfbD1Nd7PairdinewSLKx8JR2NJDQobGByPc+ysqVmUtvuhRNKAl33p
+T6XjMlhW+ErrSsLQLWyzVl/WuxdW9LxIu0sJtoA07ny3Tlv/mazOJBv/qiQeV4MN
+ME3SEpILxBCTIfkZTacMxEgSQWExjpebTwhrH+qQ6BlH+G5OLRJkwgGf3zlGBAOv
+WooRGb02wwE4zZT8LVq75rMiXDHrLTYLa33sLqoXQlIBMH8+EyVUyg803Ob8M3T3
+P0pOvZ3YinKmZt0udsR76q1filXw7Vr4pNnqfY6jN5Tcx4SfVVOrAgATj0mb6yO4
+PN5I8gqTmaiF2qTM3Z9OvVEH/15Q+L5BIfkaD7NrXvexgwjTCbQZAqOhro8gUp8I
+0FU85AMYy3vh0GId10O0gj9uIqlBOCzpSPp4v+vxYL9gXe71r8jkBkx7xWspnrlV
+reIqWJt6b5eVQ0Evqm0zoWTq1f3KG2QlOcv2XRxexmjrZJxN18uWjtHJT79Z9HdF
+zD0dyC2++DANYrfY3k2Bdjq9ul3WjDfIF1IZmie5nqpY/Doo06O4BvzJma47Ridu
+McqvFIpZnD8bO/fJpsHFSTGOJ/XgjTD6L/mAUMgNg/xywOohLinUAFv7btl1cos3
+11npbTSOQo68RlTNeyZWtZ+Jl7ymhhjlYDbUu/vXwSN4eZuWWwL7ZggynnqMSRC6
+mkr+GDI2YWg+2zYAGJ2dbgcgug8yKlwu7pGL1jXD2NIGOTpSB4Za71jBoqh7baly
+3w+qb2Jpj3QpmzfCsMJb/QfVrtQ9pXl6uRnvN0hp+MM+hkRTZmW2QcHa0qMk5408
+UYZQGWsUBKVwB9lktWOt7QSXi7MVPzzHtwB0LM0jAYZGP9JXj5w3GXjKQt5lfdv8
+7fEoOfhB23IpJpo70B2ONKCH6eIA2BI9kvFO0JaafaohQixe6ZP0x6E1H9Uj1d8Z
+uBMxCVtI9jJ+5v6FXlHl19YPtiRAPje2oBZ7f5kz7jg=
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+YZcxj4NiuiyaBjwj3+i08UfgElpJok6CAPrtf/VeNVjKQ4vA0nsIxPTauJCmLxEk
+n2CsXLkWDAo0vTBJ27P2Gzis+Byuf3ie2/rrt4Nsk3r0oYiZI+/ne+066AsA5vmj
+nqK12/q++uVjy1BnXRhJWwyJxZPo+9rnGQRERXZmgh+QZ6ejYS72L8ufrSK4hPmE
+2/vPW+haIsw4iifrZaqfmJNT6OA24BG8ZnyU/hCNVUwzybiZ5NNgyzuo4U3x3eq/
+b3ZP5uRk7g57KmnXDVio+dAa5DNl+z4ImILcjLDJcqJ7TBRa26pECkiCFo/84A3K
+87RH6WBz+a0EgK85kgWFBQ==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 5808 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+mEtbV9EGXcpC/6yko1/E5fksxy4umj6Ln9zdp/k87D3GnzU6MtGj2lR4GCbisMd+
+Rbqmu++LZV+2wB32AtLnsLppKmsYhO9jjXRe4xPQK1niY8CuPx9Fr5cd2zq0iVnF
+bFX+yY9CqzKEM9Mvztoxmllg6ROMAs03PPD458s652wcEEnPn5klZ2tYXy1JQEyI
+wuK0EmtlFp4B+IrUHiZZJoJBxmxQCtz1uIZrR8PF4sBs4OO9W5NB6s4hrEzn7Jkj
+sQlyyW4RgbyZlTqNt3mz8Zwu3iGowx4s4CGhhIpgPPWdlJWY0smeNKsbmJXvOn+j
+9uRi9+ghgR+LTAxZo0Ibig==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 2048 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+J5uwiQrMgxLjAj13SAy3vsBmkypkUHuPQwyAno2NI+dh6ADhBeGoXkLbyWfXNO1S
+b05RGEBtTRrRNY6f8sSoZPBYR58MJ73nuTvU++VlZj/tjtveso5nLIb3L9Vkcd9u
+0AiQMLa2c0BwzGlJOtCwvWFRdnBcL99FI+19wu3C5WuQGCEmRoMY/ws1Iqm37Kqw
+U1xX3Dwt8W6rsiXga2zZB25WuvJH7x4XHQfNqjaLhKknhS2JfB26tukpUQnAWPnW
+dD5cGa9rs9jsi3/A7lx2vFtvkxyCF2QF4w0Gp/PVpiJE/shh4MsCHia43FXoq7AA
++ky0TMuOm0HojmlyU4c00Q==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 8624 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+jUjs/IOtuXb97xlmyLq5Edj4QcB1X4njm+CwasvqhiKDISF/uEFDJMVIj/u+M795
+kVf3cOwkzvRxZbOyaqa3d3dNrJpmCfLcCQe9XSPq6gw7Zx5h7mCBR8CgBosd/bPN
+dJDcmWwSeM2dAAY1L8RWZaVAt0ECVzK/jKZ13nbpAbZzrtXkLSGEm7C2YEoVz0ZN
+pBI0A7g9Sefz2Hy6Y0d8HdbJMKW7zm7KRME3k29eMtEmlE1qKdJfxIduXCGWs2Mb
+qKWPodTwUcLeIzd872zib1vwIJdgR6giq/AJhdiN5IcJxFDvjjatsulWYSfE1iO/
+jiC1tGg4ec/+iJP41bbQRw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 15200 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`resetall
+`timescale 1ns/1ps
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+PmlpB/6YO0aYZmLonOSfv1AKI1gSH8MDYymmabRlHFrShbqvDGa8mxE4q7jVthDq
+MeTpb7dntYmVLpQ3jrou9qzgE3VzCDgyllo3TuIcQpf8xbi/clZ9EKTPRNrkLHXj
+Jn2QVUXy1p5jRGkj8FP9VCUZbrPJDbUrwkO2Q2VtHlAdHQAM6Z7U9pJ6k+4Lt6z1
+rqGgvu8nZroCzTOKDA9a17sB/IvYRCebzdw86ug8kfwFO6z9joWnFo8nHyg56sAc
+aAcfkjyAi9uRiIQ3EUPJmFFtDYsOMqGzh3SmruIKWWPaL4HbH8ef7gp6ZFGqR+Wb
+scvgrPSCW0tEJhX8tcsUCA==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 9184 )
+`pragma protect data_block
+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
+WspkIpJhdVSfmzKexGLmdg==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`resetall
+`timescale 1ns/1ps
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+nUxQKBNOPAXm4SMK2ufDYCaxH6chMgD/G9EkTxUt+C4Nt0uAomJL0bJYD4mF8lOC
+r95tiqs1UL9IxPtBQ7/tBv0W/JFRZJ/wPbPiqsu4V9ZtWkRNwuwhOdkOe7peQbYK
+zj/GKqe/6NnDKvo2Xqr8SF+tE+6MaDB0XilqCHc+dyO0o3AqDAhL7mynjFjvo2j7
+F0v0ToZFohVnUNWznEKxKGU+H0NlmNfYSoUlYleeUiwQo0B/drPTh3EFxzaaGSSm
+pPi3nW/4vKGCaEpyX/VJFfaWzNLoaHeq0OqPZ7aGQpV50GLpDMglFlYSca6t4OZR
+MdwaEqtceeAjFhWd1AnrWg==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 7296 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`resetall
+`timescale 1ns/1ps
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+MItf4LQolnfNNZYJvjTV4ETejF9FWX+Iw4l1AlQF8c/u5UZCDVmqg2Z2l3n+esxQ
+tbWXCpsG/kio6VnHwWXHXsEhunA/mY2EAnxUsfL3KKUd4+4eAhtjJdq6aYmG1IAn
+eLYlsFV5MOuibkR5Bk4JLcZMSNn6d1XdMUxIAvwj0O5grxxtVAj13Bcun1IXhnp2
+s8I7f+zNaUtQMTYUZNSicjSk7p8QVxCfaTAmwZK5E7qQMcaFvHjPEtG5nv9ne7PD
+mQnlHeodgRtKy1OFs3ajfiit9bQRYdPfmBBJurC1Gn53Z+6x9PiMb6wTheXN42U1
+6PnKOGnFskNUTm9yXBibqA==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 8176 )
+`pragma protect data_block
+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
+Yftoo8DW41HDqmpgZj/tUg==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`resetall
+`timescale 1ns/1ps
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+IbSG7Grboq2nZ104ab+a/+lBKvy3RnVPf91eIPRpwQOtsDLKLPZ1ylPWfu5llh+u
+0HiEpTDTBNXfL5Z/Bw0JVPbF658H8g4lvM2q35TW/+HM4h3PPwAG+H8j7XJ46HjA
+QUI5/vpzx1W069wbVAKK9JZGH/SBrS0FKlV7pupYYQoUWwKULicdTyUn2enKQF1T
+B/+KU8whV5QuENrwXYZ4JGl/WkO/WhC8xWW3G6NwnoxUenpB3Gzg/KsaekaN2GhI
+FD3esESRqJsvtSUJRBOwm+QdjdhIm+pkvJq5eptgpqANXyyO6YVIJ54bKK4cCmbY
+UuWQyYsM4xa1ficMoB6TIA==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 7280 )
+`pragma protect data_block
+naLN5qhzy4XXLyb6zLajhcevS11hu/SfzYR7GfnloyPaUYlRclKMhyZ9F1AZraFl
+BuymX3VA5Tv7D02ejw4vpgo+LCyJxGhxIE/esj+Hl5mTk/5s+dHeGIYwCi7DH9N0
+e0H9wNHRryN0kKnj4LVtJPuI65dRfU6N2p6aIIoBGj+fJva041sfAcE0StR0ijbV
+pmzOxPNeIuaylF5Hwbs28IHMNnmJUj/2EjzStsIxaozgzwvHkGv0ldUgqSBfVla8
+9fEOsq9yjC179N5onPmsDD62CmaSgUoGzKl14irUndtToyHC+6+NjkSP7jABqQgU
++dE6c5sKAJM5EpxOHZZOQXEhAciZ+8zqwIPzsotXAb0AxDcW1dc7S9QJLEpPi4jA
+Mbg0f0w18K7IVTpG5/Yt7iIMxaKaPuw8ez65cf6CdhVP2IdSzFvS9/MOieSiM16x
+yRFmQQkzUfdPoWwH+uRPjZgqy8N+Hr11bbla1nUTL2E3C0w2tIi9U6R8iAbE2A3F
+94CckZZor6nzBvidleuD+F2Vai2V/4Uh3YX145Pp4+r1KhnnT4ZMFbXb+n8I8fRn
+dg9rpH0wotOJ9eREBeDWZe/lGQ838d/njGilvK1azurlR3e3jZowtlU/q/2d8m7G
+aCRUD/EVda8+w6LkvG5dkr5XT5i3n/3J4FKu3PjR4TuNkdYFGacaUdUvfoPxZK3+
+HY85O2imphxYTpRA4CF6ZhyR6NbFqav/8W22kIlxRGF1anClIgfMBw4wz4TUz3WN
+1awPPgmYRVu8+CgRUxnBAYQnwmYnGn4bc+oIDukt+0fuO+dPLb5NvEILB3l8xi6k
+7er4AQRx9JNGIUG/rnCdiy2anaJHuVnqCT5RMp7yLnQ9wL4X1N8nwGH9Lmr5y5W3
+4xmgBieqOCr5QqpVpB32IELxPms5LdQnzfMYy9xOshbCzGUOXJnOtdcV2St8JvTM
+oXQgClYReYYDS32cbn6umLVlsK1jMqJtObLsXbKaqejsXJjopFirb2sMrd8my9hf
+cfiTKUxWCO/fDJ5I1hMt+aWtnEe4Vyg5AqHc22nNClXGi4TcqzBkpVDoGpsYpFw/
+uRowYonwzb/bk2hfprJeujLzq2RY58AW2Wf8oBJhccybdV5kM7XMY9ci5ssldMSx
+VT1UIoUlZ7pqDPFxyX8QubuPMSOZFeKPW19U5jJBP9AGpdCK8pCo71jpc0EJ4/uv
+S2RlRm9jtarabKm1/jOx7ArDfJkCot/0Uc4JUx7qmhdpDtuCUANuiyn5sdM448aT
+dBdotDopJjVVY+0q+0bBsvlFuAwDBSZJLjFILGfrjvVA0uU2v+7ffVvmPCbgt963
+Q7jwxcMQSb5+68YTyRyg9bfvfWeirDNJawCCuWlO6ZCDT2cW/vWKtg1W0wHXcnC/
+c8WY60Kfu8ryx1x8KmbD38LEsbMBIZW8mdVkgQWQ1ffK+O9mHOawHim3ut5UdoE3
+4laCqnJrfpfXlF4dBmPc5yI2t17cxbQoTpRMH28FbmCLE1Kcfo52qV2BZfRvliyF
+2Rr7gyNU6lrkcJh4Mj6//LsD0AjnGCbZcY+xMFjXxDjJrNGqY5fPZmkejFYYe1vP
+Rh/8htFO7ssBwlHyFET/FS2SVfgq7aKxEKgdf3TvX/wgWRINVJ4CATYnkN5RH87K
+eOTl9ihXwo5tnpp8Oy1fAZNhqMVtp4Xtu2oKO7T+p9pYk+N8ILEx5tTMSgl4sxHI
+g6z3kKOWyq/XXiR3wnC89aqprXPBwXrhkXFN5iw48cwIKwmRxwTrIEwpjqr9jnRF
+XL/S7Q6WkKJDyKq4v8ktEEhayBC1tjPOVDK895nbxCG9uPyUAK9Pd1ow+WumiZWN
+YLP/QOD44oKaMptxTjxDKeVQwEjNJmGKlwJnxLXI6jQ60aFbQHkO2qHKpaF/xS2w
+toL1XhZMM15rgIuIaUOYaWQEC2QhvGW4ZqI1CUHgzgPxE0C8ZR07TqQX+RdmvAfk
+hJpwnY4caaftjpM1ygjjtX3T1s16T4nRMTO00wBWYeqycgG1THtZXsMubpbsH00t
+bQ1c32C1BRERRMQvWu079zuExFutWr6/uGpnxLXIg4Nq/ec2s7p+0ewFlE+oLGrT
+iGt2m2LL8HTsHu/HL33Mwqumzyc++PredpJTE3lHlCIyBKLK8fwHxFaSLtiqFxnK
+lWyRoROOAgrGHi9Au4vMikyUElrlyC4XEiIyAma7P1txsVkeMtUQ2TmiF1C3l+co
+Os4MzsMP0/LePW2BY+CsuhXuPCi7y+6BTantFLo9md0hkmeNhHfJlcIzkohRokNR
+ITg7VufkiEMFvqIqyjA8QN5tirGi8KLn0Ox7AYfcaYOlNrxfAqZG/bw6jm4m+G28
+DZ+5SpCwO6WD48XhR9MPdmAI1k09prcfcJs5Vf84a6wbneM2yj51Bp5rxqYogwV+
+iV4fkoO3ok01odzxijwIcCSjuFHqijps4kVIJ6X/w6ipi5Q7yDrF40rH641K+VL0
+TK86dboQw0ZcgKnc7zsmDzrvDD+dcX3dp3L/AFulpz/TFZ69pXpoHEwx+TFXkErF
+wdAjDiQ5Jpa7Mw2kodQggx3FPgx77Sq0zQxvi3N6yO8FR7RiyiJFdjmBDXUwy9Wp
+Gb0EVMaN40PLCeY2CAc4LhipCBEcfRh4gK0fh8Sw5sE7xWNUr9ghiu1FzJlKckek
+7BUmPbtKJlzpwW5y9mr/kTGbgWTzZtwvhsMxbACbklEH8BJrjqFdaNqCNyiL/dzx
+7ZiBSU5dJn40eMHT6lPssTtawVNIlehWZMiVkRdD6fM0O/DHtH4/LXHup8k7mi8D
+VG3n1S30H+WZmJTx6NLJIIArcu1uM4wc+UR8INNSd9riAM2mtWSm2T+OGm6UfuWN
+BHQQpnzflhPm4QJ6x3NYP32+fCVZ4vO8Iqe9to//f8+O+b49R0iMVNf+9C4vx4cX
+oDUJhllunytkbdhevwGBlsCe5gQsj7EZd12mt3jq1Wff4+qvnPZBSFvofBzYk4lQ
+qXSDgN/ilJV0yjzEEahEUGZLr/ZMXvpdHkVaH8WrdEilaS5ZstDVjpMnzPMWUxeR
+jY5feomXJG2Y6wzsbGMXrOLRFsS8VqqdRRR8mpesUX0UILXwB9HwgtB0gAp9Jbza
+1VMs3YuvSQ+aHXkCAWSS56FhkgPDsntJKC9ju40cKki8a53SfeSAe/x4TjGnqWGT
+9OCMtyJctd203IG9pBc1KOYOr7/8x3OVAO9UUr8jnv3zIU5tuKkGOHMj7cLV3f6n
+NLQsNhbmPOU3qgohq6Yont+2HmMc2Mh/1mc/SsEY781O7EYO5Lro+YpnnLHbYX0u
+kFjg/zjhG99FLSdrCTMsH13HpoDEiYFx7YUae9e/I7wzG34OBBy+jliSDSxwu88q
+rKDYrPb6TVMCDnlqyLFCQVcZygFWuWCupPi+/tSvQ8GoLNcZLUu4ButNb8Q/vZ31
+C/SAAlEHDBKz7e8NI14UYgWnZNyzo6qwRSbeg+Kb/+BQ/9DwTsj8VdIBcL9NsSfr
+VmWFbreRaqT2vzrYDYuWbcniLX0xN/0zwEOM2WHHd5rUx32LjGmKtInkbq4mlagn
+2uQ8/9tqZbSMp3egjYRM6dmLRvWkZyFT47MPP2KVsXalMyxXQxIADHJjiWE2T7l9
+9+LBzl+NkKRJzak8Ymz2EpAQ7gxkqC0NyFN/H5XBR2uxdu6vB7/uGrFVazIz3JGD
+aG7xOCZOnFJmxVfC/i1KR5xKZa45Mq4l2oOZfQq61fy6ZCYhMLTRAV9IeHiPmmvA
+k3ZY5/3QU8chqCDsmwzJsRgCqRC892aJ9BQ3SKdmgX2wnOxKfmQolNovEnS+TZuP
+hp+PH2O3H+YEy23zbu9TPRGHAC916GXfhOBV00DrLhkDl3AbL9XIiiY6rvZWDdJ4
+aixrmwvPhCp0bvf65kVqQvhtqrhqRDkN/ONy2Gi4aOkuU6aXYEF+skuDYYGPS3hV
+8UmBuTmQvuYXohzAEdtKvIblvrVFyTZ2go9G7WhzpZnMqhjlPvFJMLF88aDzBB+7
+DshEPz4hIBzg3e+Vie+nNrakNlS0GG8shRQAE5mB1ydpkd8p+hk+lsLa+ej+R+kQ
+jsCh2r1oEks6s/3Zs/tTs1SXQmwEDFRJrYVAD62YdiB4CpqKa1ESJO4VKX8sVVUG
+y3VZFYi66btcQY//qZHn8MQX+/89cIvwtax9KGdZSTBdx1u+8986VBj5KcH4rEsM
+05geOZPvY41+YNFBKyeJ+Dm9zhu8fS4QBW3PAeYuiGG0fovDGsn2ESVLZxdu2zS7
+zm/nsfKZd3/wx8UCqmRkLpTfVyedo+yGP9C0K00njrILBTtv2cmNjsCTFnlEeHO/
+A+2vK17KjiXhdcFCfCUZ0AW5gAVrIRvpA71oV3Lo7rwJ+SX9s90nM7cPTNEo/N+B
+yiug8KW5KkbIVZMYBpV3hkitR2zfN0qH1w3AGLLr+nKoThcGj43ORTNZG0ZM7+pC
+jDnBgfpCW0n7NuBUm0PUEGYRogNs1Fsuvk80WJQRGbMMXQ6C0z98CUa81wd8A6ET
+kzYoQj6z+VxTG1LhOx5J/tNqh8EFhlD4wjQDFgutWK2qzrSoOOayXIHxFe7HrjkN
+vGFW8UQ8vocWm2RcXJZHNQhOiYA2yTucQE7y3dzdwFE/rdMQcv4BEhnp8zMM4VVB
+Q8xjzCSfwaB4entw9o5rQZAujrMTudgCd3YGmU4emoyPoC6xZYla5ZBoJ83mO0N+
+y1DWT+Uwi4MLsxTHXApEwkrPJFk9TpAxBngJsWTQOzq80tyNIiopkCDHGv9T1Cmm
+/bO7FiCWVlSxESm+y9yJHaw5knZcjl4PpwXIu4JNYsz0sUJ+F3QKGLhe8GsyuXPL
+RDAtDNJYKCR0jNULQMrAJ8SoWVTtHmukrTX/W6/03CIlBIMbjar8ipFOTu77C6YS
+YXs2Cs7lwNnKlrTFheHsG2MXoY3gyDOifM6sOv3CAj1G+fyWnA1ODCA7JINOcAwT
+L9dRQq1Dv6oFl9BA03YCILPi4XzCvvQ02+0EEde3othfFx0HPPglL2D5FPhu5OuE
+yWwBc2VVXfLHP0QN16femvb2L0GeArx4xZNXtGZV3zZMIgHwL9wv/gC+50Oa08VI
+mzCLFNA0pdzlVluLeSSDgWqY4ma44SXDwB2Mwq0ndrLpp9a9p1XlLfdCc0+m0ObQ
+5SQGZ9QeO4pI4yyD7hhczTHqXRUgSi2clyl7RysbGMzUucOUGCdkw2Nr5R/NutZ8
+Auh6JsCBD/AJnPu9t0gkp+6qa2QCsrU6o11Moh8ajaxJxZGtgh9vlHV3WhBJmRuK
+C2C6eZXPl3m5taoAyvyemDURDl47bsh/dasGFepinwq18xvML7yqCIEJUSfV7HFk
+FXXpL1C69xvlZ/oLMzCUeLVXTnIOND5BTjvtYovfad7K6tmF3N/5acp3XK8OSSIG
+Q7g/k01wQ4hlXEPQyd0lmp6+/en0WMlI+KPQ3Wcvd4YqeUOsH2jbgSC6EacvJ7bv
+uPRa538cg+9jTaAnqBxg1sqllXLlP3SzwImLvuPZ6R9k+rYtepSwNxssFVUimPwO
+dfqHAm/s5yQlQhxF8JKYRnbLFsDjQY1px4owLenlPMjYeTC1DzLICSkFOEcGdUwX
+K8A/IN1grPUbnJHpV8vyFGSEYK+VJnTrFlYLRmnXbMY07scpjoCLe91dVC94Q1a+
+k5MXNCD5qYlbRVaXd/iTR3rKjmsZYi9fyImfsXUkyFiV28Mla31YRF7lHr9AIemp
+CQkPb0RWVe+HT1UaCjchZTtpjgLXHE+zA02RLDfhvHHYxPFrlD7Ec65NyOnzutZ6
+yFClITy+6IfmeeORz/AGM6pfsiS2BygJpA79lx0M3l5DjIHZEfuY15Pg6UQFYmcy
+bO6jUDdANU40IDJh0YJH5kh9ZzZYHJr8WB5EZ9K9hB5wXDenWQYlvW8vAs/3+KcB
+EJAD2q+M997wugL+L+W/cw1TXFQNZKvkJYhXNFNm9xVSEEbxZsZAByXOW1B39K4a
+wbxkNFnhaVMl0rR+02jDF7ZvuPsGi/HLyavLD0oRt27mvnURL+xOCbEs4Zd5SXvp
+/kE4Q/e614pB3MumOSSimJ9PtWhTT87VQ3nxsZuCf595bdiQ8kIssXHVFOXrKn7M
+2lb5LPZpc4GpiSV3+SFqiS+IHkNsN2rac9f3AR5o/7rRDrKSocdz0dDm5l7no/vX
+1i+ohYjut06E54vXhPQlsoEylTvCU8D7sArPOU3En3iO0suMTdzN9ZjjIrcnG3mO
+kMDKLNFnkVtw85Wk/SpVzzvOauHl0Dbn6lA95pS/j9zdR2XPWkenLEznLPnhKpQO
+wL/A8VIWkMrvzj09wzcpxiqmR/BMOn5AmB+UGAEZBd5qnEjeitLQDQbzQIPn98YM
+SVYmcLFLweTxQsKnOM1ObfoeqV9xpqeWJ+H35pdh9GpIy6vDysqeifZIqDKz8bK3
+JVIO7tA4oCiBjZeeK56JBpDN1dT9I8qBf7QpXYly9FBbz/aDrzx82kgdtiuQSdXJ
+s6fhUimgs4NBtZv52NmymUTuejOTyRXR3QmTsIBLMihI0Qtml67u8KOujd5MGxaX
+AEQ+8IWvQP/HEIgaNVqGvzgRGy277eBTI1piX8zEpmP8KbcfUiwR6TRRVMNyXRGH
+zU3eZ0samPhQMjCgaMb4flgX1YN02TnhSQA+THGGUL4lIcBklbNmLevdBRZ2J2An
+f08ScFKxe/6u8gef2lcuHEoSEPRKYoRAnpCCdc1aYI/2aH0JKX4do3OGguEDNVyx
+WnVugMP7uqG+rwRKKkF4BNxspjC1k7YOvxfgntg3R4X2Ri3J1L8ZoBlR1habHTtv
+P/31hTchZztrHrhcUm7zUASRgMVgBng3Jtd7c2tYIc7KQYBR4Kf6o9WjiEqLyLrN
+0y32VJmYF0bVlTC04khERRNq0VIlk9vMlOmeMMhn1WrLdDE9H1GXRDXvqIEMKZ/b
+fMUCSlHw/5rdcj/Wzm4oiDTIGKlYbhRSv2biB+ziSNSQFuIfjgGMQaEXuDG4ytSp
+nlCSROqhO8BMz9JEFAC7wK/XWPg10yP+f4OAh51T/t/ilBbxiknk8SDHB+pQ0Rkb
+2tbYNAbV0tGb7m3FEgjYDLJ+2chFPBN++C97RciEPrQdolDaeTiYmCJnPuBsWFNG
+1+JEV0FfHvoDLThQekQc9//cZR65+tjZHW7jlRhj8QBuIdRSBJn7gwZgn10wtjvS
+rsN2dmajbhIvOr8+57Ue41iLP5gylmAIRhtSNsavXiKRgvY6/VQBPJrPA/Elm7RI
+L9Ve425i4CsKWXY0zN/N5gPdP+tgp02Bi+bvpzJzE6L4ULOXtTsPMDbFStTeKN6/
+4BuOtpQvmasMkKJnxlu2BaqtwY+DyWQXwBzMyEnRXOH6FDy8QeJxJUpqeM9prSNA
+BuAI4hskQ3FVPOdKSkQsR8oXj5wd95zGJg9uNZ7UlMvOk3ETTZxDe4Wrklvyioce
+jRsQ2X7FkXuIE811AxrJO8g17XY9ut2J3XcmgGx6MfKOo2M1TbKMtw+rsYLAmyw8
+L9dchPSFZWMXaNQ5HCaF/Cib7FQNRlN5LYJBPpB5aacaOTXRnPCxpXbgloNnRvx5
+GhRGJnidgGz6j/9NEXUtVwxbs1z70Ws8yZRklauH18BkfSpH0zxzsk0e6AF8AHUq
+AwjZP0IN7INFYHxB3+wjnmsYiIzsnxLwJk5EFbn0x63fJlJR3QsmOr7MwlvVw62+
+PakhGAa6UEOJB6Vn/DrKUpjbcy8gENGF6Lphk/KdM7vPMq9M3aiwyxCZkPiiRVVD
+dhQG2BL+O+cf+YwNbYAOucjg5mrv85xosabr1YGizfR+1Dom3145p08UMfNMISms
+QYgW451lGwAmCp/ptuh9mNQfLnzdW4VaylD2Lw78uPDHJ940z8X7+cB7T1yZIWEv
+T4asMzupr2E0onu3V45UAFgRn8Y0imrRtYWivEVJuP2l2E/iUDIda316gQZtvFUc
+hWJDd0fUBGuP6i4P/zj2H1kAicfEHggPUXoIqWayvAR1ce2MqbXiXSw+VNPHVDEk
+ICf38xQLoX1HtpP3MSi8O6NGbsid6SHMxvFhRA/9Mrc7UvrChV8YqXqpOh1OYwQS
+9SiHPSHW8HIPycU7Li+PcbO+HBUT66sD6ltCqhABPGvbx6/oBa2CN3YJrqMGxqkA
+cUP6bvLK6fAZaSJbE9fxDTjfWbwjg2igQfRl+wkNmL6+WYCJt9KF9Q/isAZcTu/9
+kAMgNqLKVQDOxrZFJmR3cq1h0KCf6rJhewzMy/plJpuF4vp5vkD9f6q7lIdQ8Dzz
+c/MvFZUj8cP1EBylfgR/97CHoM/NlVxevqqg1Yl+baQuewXjv44/eZUqpELEQwIl
+j31BBrurg9cszfLYyMQT/y6Inrvc2bb7uirGCBF/5F/w32BYbIrkxqOmCJegiZg3
+6v1NlPRhI8xl7xS9ww2wPyAxZCo1egXaF9Wc2/hu4VtRekd6gfeXg9daeEwyXGVJ
+/IanHZ1piGfaFSNrlyBDqz0KejB15cv68+/lYpoA8WjLbUTZLUlyWdZmgsMeVSLZ
+PVMijZ83AFATFqTwWFJ3kXccC9TBwbpvxMOj/3wVvGiicXf9JUbZSpsiziSLlw8x
+gkwU/yEeYYRXzKxRkgJRGFGpvNp+K6NSIdtNIkbtCh2WWfOZmGTHWtJPafdAJ63l
+idCzh7Cs/Ia1F0Zfso1pCV9eXWzbv461WF/guS/PpAEKdZsGGPqBHbVn22vMOOlO
+CekHm9Ynk6ZijLlCKqZl5DF9WVcmo3pOgqb6vmII08tqKWAgilF/7GCau0xYzUQO
+90rXqbiYFm57pebSvY/taA00LPhVKG/TH7l3n+9OXmb1wfAsIdlA9RBDRiAA9MhG
+pFmDBeSg68kQITM/wq9ljX4BxhkEuLLr1OUMTXdE69+5DgTON89WA8eZdh+Km2zm
+lUy8AoJhm8bYcZytZaSRn3fjlGqx9zgRyjrh2lBgW/4q0/RaGz6AcH4g4/lF+Tm8
+ybMq1Nww2vaUl4fYC/QncZq5OiXem+GmXfFL6NTZWinBMvHC3umZCO7XJHDHUbb8
+Q4vBrga2xKnfv3fIQ/n4tKv1ns0rl4KUw3oS67HQhIHgTcOgBjecDiQ8y91svu/+
+dzvqvF6PMOD9c+YcONSA1moJ1PEtT4qGK8+oVfU/tU1U53b7m8vn9PDr/N/nC+kE
+o75kx2YNABiIngmou+yFw0ZRDcijDwzpD75lYw+yy5dKi+rmXdiqGY5VgLgzZ3tF
+KjRloh4BS4wIq0dNhblYSSuKj9S7kGeoQlstd1tbvLoS6S4CzrbdRwL0LlRicQau
+6GywrhpkJpPMVypS7xEVPGvPK1bGfp+y1i9lJ77YmzWbAzrl0a84DCGgAjAF0ZtT
+jObPhfdXNOEvo8YYwaCRscnU1xHaZWUuX/F96ej6bR0sGdM4sGyySYOH0gMJQAQ5
++ft06ZZ/rRFAovTbZa8tV/LrZNspwjkjILRD2rw9jkKKP1BuDFLusATMDXAzeySk
+05gSIfnpHz566yR7/yurZljJ1Owfm1FHHGZCLD6ecwoaKcvpSlXTiTnUvSDmel+i
+iaJNNOIqcOAoP4PZ9DB1HgWqvc77FR2qlM35zH5IoSWg1VVN9f5ZS+wPwo8zRXru
+H+ywdu++A8khD6Z6ukzkrKiDAbwjGxzwOqPayzImo/g=
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`resetall
+`timescale 1ns/1ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+Xm1S9sj1JuCixXxxRRYRKD14QoS3afZKjplPN6ZSLQnAvIon2j7qx5mq8XGsgaSS
+IEzaBn837INyfSUXRKCDbOHB6vgrTaXMb6v0UzxxzPWS+b1IVkFQr8FAS35BRCmT
+NbIAI/Yorvx0WO3MSnUTRRpDBG8iOn/eVIjECdf9yJE/4mpgec+WdTcvzPWMSgUN
+AC41MmhJ+dYzesMt9m+NxO6FhP6/22rXjdUpKCdKZCyCQFtmRGfykI7AbREfU4zh
+oGDWnkWlKck0HShR7nAecXqLfG7+Gq5YF7MGzZ2f7KqpVXIzMVxQ015P2LWLKD0Q
+W1FNsNnFrHW1pzexa7KCDQ==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 688 )
+`pragma protect data_block
+d9NgTXPSU17ADKmxgIGRfmNOqDVkC3xL8aQNJSfELvwqHjM12d0BwF921Y4NSrAB
+2hny08w3bwVwZmMrG4mWIOg4TJhZFU8abxx16JZIuWDoFZArp2nzhXyunUk20E18
+DjbINy2UJjOconqd57OAgrFbkfE1sjygBNKBfNiWruHnc9ACTZgjNP4kMMKYnP4Q
++C7F9/Xpq93riPzugPgorK6JMDDO0j484pDigDe2pslBOviHjuiG1PusCsYQjS4k
+8xyUzI+IMaFD1o2IH2CaHTBym+SFlLR4MF6uh+o2fsJ8sDM4MRnxJqfeQlsbmGsM
+JEiYRkbaUze/Ftjp4hhnVIQwlkRQnqhKk2wI3RrFo3wNUKHuEZ9Jt+zFEI8VBUxU
+xG5JozZ1GvO3bl3emvy0eqcjgNDycd+VzaGXIFIfkPyFI6t7a+VoPPWd5L5OY+E8
+CxORS71knWP3SH21cw/7DBok2mmAPRx6gM4RSmpLWGBILWNMdDEig5Cap21OX7kW
+rNGUsqAyTBZZcRbvvubH7ON7IFuJqyGi7KCvM8q0j7GoWeJ66fcn0otjGNjPz3VJ
+m2oVkFMjqkHqzDURgMpzkkAY7P9tpeLJEnt/ETbNwEp/epgl5QwjjNrig/HP37yK
+t/hyIpWkFjWEjE2Es8U5/qbIaeYOGB3dHbMO+5cV6r8NfqB2hY3HivwDXVpI7pyl
+vswOsuKJk9+V0f0jzzr2T2IFXBzer5qGpQhtGTugdfzMu+VsQMEDZWYh9+Ui0PSk
+fQ25ZrSBkxXSck2Esed9zLN7WZvAEIeH84e9uGqHV73TJaW8pm6B9uc6S1kz8h2f
+JVb0WcSJCfMoycYsEStOZgOpE1mZjhqG24gnM8NYZ1TlgrGwh9Z4kqhhlooetldC
+cHL/fnhdSq7YRzoZsgU1lg==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+YCP7u1cObVZvbCw+OVJy7l9oTBWleoq9pu7Q1OQPRSS0YTyAEOS46qp9gwzKKhwN
+0zR5GV65ytGjNdr4ypFsh/u1ryyP+Xi25y1v0IaneY13gDBicykWGwlQqUcNiJM5
+hpa+wkVEQE+opumFfZGNlYO6XWC6VPewxzGFLG0jgTqLSxKckpAMOhtJRe9QDDID
+1Ogm7c98iqLCmdne915Er6r79LaO2eiQ4skhTnXdhNl4fSnifNNJAOHRzuLqb3Or
+nv8PDAzc22u35tJPGB2x/4lyeoh4L4sOlbn1xCyk/GoTqJaaB+cKDb6CkcwK6BMD
+W/DKlLnHCsJtQqRpnPB8OA==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 6880 )
+`pragma protect data_block
+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
+S2jcAZTRRhYfI2g/A6k3ew==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+UHE03qwRSxH7Y3SoeZzOc2GpMslhCPTTv2Gw5RwahMzvF3iwatslvcgDdd8fI2BD
+Dlu1c84ye8ZtLWKjSb7N3GsBoo3WL36AoYpYmyVW+heegZ8mZ46dNYCnxJYxoED7
+IvzgWWoOU2Bm2YgFxPOT2mKantYJ/ATXd8bVM09X+TEBE0e71DYDwhKvq3zCRpBI
+PRftlHhH8DbF/MWedexxU6i66X/9S2mAQwPN4YRBCOf/c7OJ/Ole/Zpf+Dnwo9qX
+aJp6T1LTtodRLhqdPlIWFk0iFCi1UWfs2NSsVGEcn05HspdOy/Fp5sIeXIK72cob
+oDG+vayEozPxF4e7YU1aAw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 7968 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+Z0bYUsBqE8947zdgGWPpqFrvmEzhq04RKLUN28rQ1wkTNc3p6zFpUJeEKPaQ9Q5V
+tCYl0NaYT5qvQhZvCzl+x/jJ8wBpv9J3+d7GNb7nnUIy/NMuLGEslilaFQlBW3Jx
+JcuDPbbVPZh2va/NooKz+kXCo82BfGYEKaWptjDHUpp3QHpOXlNpyho/A0yFqBSM
+AejUEZks6PR4s5Chf6BKcUmh7/XmEjgEZW9NnltYPxumu4dD/IWfrOuVW8f8xwYR
+Z97hT01NAlA3daomFvT8ZWfWFTypxCaR6SyOEXBxs3X3UloqjzT2lLIga9ZeNxnJ
+dpGd3a3KAPmgul1Fz5Mtwg==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 816 )
+`pragma protect data_block
+Pf/yNaDaWKTTpcOJbNx90t35XxwYm/d9wJOyWLKd5c80p1TKmFatZvMBgclEa4wm
+8M2luNdoyRCXtgCXi50UFmvDCdnKyfDg4RmdAGBqvP+DQXzbgq0r8Hcu3R2c3wRN
+dTOMqbGACK9r8AnAP6JVOPyWpeKNQ6fdAs0PxUHD/zDAy3eIY8xzpFkIH0QIw5Vd
+zg3YQ3fLlhg/CMJOliQARr+M0e286QIKm3zg4VEiVvBGJWAVCaM35O9a9Zk+yH6l
+or2juNa5ufSiR0AWyOVS6UPlrT5E3bIcuwEhZa9K8mocpS8sd99uS3QYwilx6wTX
+xpw3po/K6CcTc2xSIRZuGtIoDL7Nxa2aWlsl/pc2iho2+Y/HYDZThrmd7tw0XvFJ
+PtsreaARZHeJ7ANRzyrlQMdPmAvHCT4CjKIiyVKvcbgFUw7D2hMP/688qBFJwEPf
+OCQsn9Np7TGUpNWt6QG2R6M66lkyfaWYNx3vhn2qGO40/el4dpXgD1AlrDUgBuRu
+ZpBP0qIOOvsxghto0MOUaTuj3+Q/4iCLSc0dJ6d5o2j8sxz0klLbzDJySqdohJrA
+41mUZUvEZ4JN/flYe1TRCCHEdSk8h+KkvQfDqqJp/QDS7siyLQzm1JyvTKhFo8xu
+9buiNusDvnLILyoCW98w5kFDRf+zHhWKN73zOeHGQKfR0aO7fX3pxXLsEwLhK54b
+Wir5u7+9pv3n3v7469KZUa6zWzkjWcFjOHxaYA6DuURi4Smns05T0Y0rMtc8FSbF
+iUZCA5mPFRKviK+6VE2SsjuGkMCA2zm8qz9z6Vgh9t9Njkr2HoPnzquYQg3c58Kl
+iGHWXfuurDXwM/EkFVUF85ojRFGfXLF7sD1V5UNJYnKp4aQBM/8+TZkMB7aADvGS
+/pmGmD4xlwLYjDOWgp/7091/kTLRZSLPoq1OEcfO6Z5VqaAnDiL61UTbl3/DLjMh
+cH/jr8xaYKd9boxsCL5d/mSuu+iFFlVTYcZLhaoa8P4MYLRW2eaOjjuciNYperOb
+CgHc+0M97uB37gtHJWr/eMavucWdrh9vHieFTjsQ/ov7ZK9++h/m3x0K9faH7SvB
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`resetall
+`timescale 1ns/1ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+YgWaHP1VVrn8q56faPuNrQinWLe/8n2gJ9/4MU4MDUiGnK0PUfYovpXAmNkrRzRs
+VtwlC6Jj7InRw6kd0R+Y+eTMlcbioFK/qAxJSWfvQxCOPX8d7BT5wuWQFVsUoS+M
+oh+4OFFo4X9aa0mI7PEcrjEhR0n13PG73T68EVWvHz7FFgytscWtG8kwqOSOXmav
+jLPII6xmu7YPzZm/HiNsnMvvViuwT5aJb2CnGBw6n76GIMmghRK9Q0a/Qiylcaxx
+teyYIGLKW29sOz3rZ/ENSLo010LeR2MXNKrLgL+PIW6y4v/FQ362XfI1qYw2kVQm
+jpzkoevv37iwQEH6GlMwgg==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 480 )
+`pragma protect data_block
+Dd6JpxWofdheIkHFwrjiQ2TUBTsSrHi5N4DZxL5ImyVO0a8v8bX+ETlfPNZUE+8r
+SwuVh8rOFSay7+0pb14JXUqp+DkrtVuid+Hu0E/AF2LxkH8xuI4mtxHP4wpCkof+
+XA15pr/1OIO2oas5XoAkb3d4JYntYFFoODk4+Ry6tArSi0pQCUAbp2xlJccIS+7g
++yQ1oXZ31XRzEQ5dk0k3B51+5qfFF+dKhPCH/Df5via4wF9ZESfu2YPZlRfXdmiL
+yy9HzqqqDPfcuBtnGBqdYg7E+a8JV3eJr31WINkRjB466nVEkWlBw8tBpYiaDqZo
+u0czdrGrPhk/G0pUqGMW9g8fhtSf8+oKfEhbK/gLqlQ78J4aXdv53kni1ylyInQ3
+wV2jwkio/Mz4dx3QJbRxdjGpui22vVZ2a5YkBVEL4E2xARB/u4I0mhdtWP5+FIhJ
+TeOjuvTS4qw9jLUgJTmvsHnAjDsfwZzqa+7FQRfiR63Y073cnUHmB0H9CT2EuM8S
+Wb0yYNeBSqFL2A2zJNIj6ruwaUeT90eIoNB2hglHXBAkRfqiZM0hdbbuk/CcAjuz
+XD31yYRsEQXfcMmJ9P647dvYwdzECtBFUlP/DaczaapgIKvsnSArzKsq6691veHZ
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+mUjzSHf+uYPqL1n4IVyPVci4v0CrLYmPDHLV4awO61biHqpmrq1JTFqZBQseHQkH
+6cJcU4LYtSNM3V7yBbMqQgr+2S6WRbMzWLDk7oaYThKqu4qR52i/o1CLubg6qn1I
+ZFZY4okKZs8sbexheNKJFEH4N3Wx6tgv6nV7d6h7M2htuzLclk8xDgldmWT/3b+p
+G1LAS8Dq6Ll9eTtFx1t7AYLaCpaSUJfGQejrDqvXmTyUs09j8PYV+q84M8ow856B
+r6VT7J4TsQhul/FwXdFtG3r6+gx0T6HnCq6M0DDmeoz7gLnekNXKa5FMEstTWXIl
+ctxitcmi7/Z40dajl21emA==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 816 )
+`pragma protect data_block
+VLstfW6D5LEE7ZexczR1r7H5DG8rlhP4PiND05BP4I4l0Z+YIQHuCADYxsh6LEn4
+hfTsh68yilbNO1RYyv5EU2gjhG1upfVQG11+GG4wJ+ebrmO38+XL7NE4vKSi/uq1
+/FlhR19oRl1Xje3fr8W9zaMTqhu4zTBn09eWOORepwS4fMkhXDRdfK0Lcj6cfR32
+DajYlFXlce2ky2kjndjmYy4p+Ii2I3SMM253IdlwVcL/vDCxsPGhRjM1BbXXs3Rl
+Fg0A1IZPwQbTFdpIK1uNMjbEGfX1Rd1Axz2dzVQIpouDD7GKfL7fcDbknBi8ax72
+z5dSqevuYtuAYkXME8N35J8kSEm+PDHri4PAQn+PTZ7SlAAdwGoCshfev9Wh0FuA
+6dBHNnp1Xolo5hgBnLEpwk86eMfpCEmS2SOKT+PtQzbH/9ybtCy9cxyeQa94puNB
+pqLt2Yz6ZADpH7a1qHCSWk0R0KsH3G28FWaDVmx3hMo3v1hO69SSL8MaDkY9VaSy
+LeByRe8Ocunna3yDiT+ak3nldI6eEkox1A7a7fzP0wr/izyUB1nnoDUKTBTpUjQs
+imcM6DvZ12xUdevxNNDoT35XfdHilBxnXNUHukbkfKKa9DgELM763LGt50La05JD
+2DRS5asmgZUt3P6om/SMA5wupzfyGwJ1sD64NGeXn+9UY+o3kmQb1PFd3ojnGCSs
+Yk09kJiIMVT/Fvaz5kh7T3Fwq4fW54zRwQvkbBzHW0g4v3hQ14CKOY5ay57C1KPA
+Xd/gjm3erxvE5KRquwl9qBbPG5HXLdKGYsBkeHO2syi4KI8RepNnQMko2IFoQf3U
+Dj4vIBHKC/ghUO9ivy4/445hL4JU9HiC1bFkmP2Ojg6j5gR++CI92d6VcPwzsR7+
+5Pan2unlYw3kppVlIX9wgI8lfRtiM5zHhTFf7akTXgwmzfV+L4QWrKzkjoNu56Lm
+znT7+JDPsManGGeE+DsdMT6vcBDhrOC0AI82jEGnniFeT6Ftj/Mw9J+x9J8c3/z2
+LME6fkFQf6gsTUIeBwvpixHwCM2oIjWDkASPIl9AXmSnqjAWrFqtI7TuJfWIkx7I
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+Ye1kA25/n0nWVEkXGZy9SyuUjU4Y6TvdjEyZxdHOYyJqvaDK62VmGBEQpH39t1uf
+G8L8coe+k7Rady+4qr3L1go2bL3nKa6Zs0iyCYjP+pJkLJCd8FNBNVuiXjHTLmaA
+iCbjJ2285yoEhYQ48PIBTgBPoG68Vwof5V2YLee39KzlRpYFRuoW4j5BotITbxop
+M9I7g2lHQpoxnmuMjZUaCRZOpg9YTqzaJ9bGFkZj/vOS+iLMgBpS8FDmw0+JzJgy
+murJ26ZaRXJi9Kd6iHqxOXbae4vBRW9ICST2GFrNJ80p3zPkYroT+xnxhhHDUHEM
+CifzZu0QanpCfZ2ZIgURxA==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1984 )
+`pragma protect data_block
+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
+2CXrv4rMXPfj86GCN4+2Pg==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+gsiyAh/zL1xUwpmprr6NAQQaIGczBGjhcuuUGvpHL8hMBxgMPcIMpvp8WS1ajEHn
+py5FCDlR4mW8uXNvTts5kgng4OG96+DdQ4XdXqST/b20UGq4PinSXtk1LOUv7TFw
+yYAQKVWJda29Ami/BKJegEbhdCks1D69roeJH1DSwVfXs4+eMQrjc7MbTbY1mpoi
++36fJivaA7U/YlJiaS+2qIhWoSM5Fyzla5dhoW23p2f9pCfJOwY9bYe6tjCBi/92
+qgy3zls0rjtKupkAlBZ6bW8ESkTjiRN/IyOih61JTRjJXR1AGRDFnndbdKW2JBRX
+DDpVDAdIo0PQsrjeXscc0A==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1120 )
+`pragma protect data_block
+oJzELbB5LZeNsNweu5uYWTTwjiMIVGEKkku/Cry+UEzxU3xbxPijNdpqwF1CUnIu
+gyeQXm4W/aABy84cGADozOtQl9tYT+8iEZDzwxiL3TduRCLut952DiLthKX7tDiz
+K/Sfo/5K8SoG+5gMrxRT+PS/OgH99ThFjftnZaeUDUL2YAVcGoD4l/tmXQMaYC1s
+0Czgtprrh9KgH8U1OZPWXeGSCQ/Wcvby4cJ6waaHQd1XX9mgmkyX/DoGVWjHksfl
+ON/V2l80YzUA7kz2S03VWrm4E0gsaemi9zjfxMffXLvxxFfUfh27bbeGbwIrV2P/
+e9ACpAixlZbLiy4SPN/TE/N/fx9mmqVCzM5nL5Hx1Y+zloPNKumf+FN8/LHE3vTI
+X1HR4/qS0EV9dA01WpmmGNaHi6RZ7hoh80NoK+5VYpuJHrnzM5+ypXOqpKkAjzxA
+PyB5y6AMGk75Zjm05EOdWq1bscTch9pxEYwmpnwNrD9SeE6QZK3cSzn6BWR7cGYa
+Vh2bY6lwovJVl6uxaJms1dMTnny+SrkIitPqD8Z05k7gsEIdH8UjJnhvlhP9Vzg0
+vJx1pS8CW75PYm/7u0U4o8iVOebmW6uHmra+CbWEHrdv08OZ+VZdJhY33uao+Hhm
+fKI7YBd4PCnbc9GiFI5j0hxpSxw70bDx4nkVZU1E27kM3unKmi3SkIE7cC7zFQUq
+1OSt/GgzDEU9BzLXWd8ghruhmr/a9kORV7mPvMts9jKCMgXxS8LmXeyAwgw8GJYV
+6fjbL0qWyPd4UQTGmBZOpQJKadU7ru9JPIrr+1w2kPg+jMqzH8+ctqwHsbx8lqzz
+re+6w3Hin7b45rVm3ABrbdS1JwelNH4xoTy0X/oroQFQglbZ0vJPk4X8TLDsz1vK
+OnDEtNKwlLg1QZLW+lEXBoSUk5LXQWQEgxmC5YU/svO/VqGARYosvV+pF8aA3pwa
+HZkpdtk6kNHxhQO4OlV6Tq9+kp8XrvNYEjtTkwKCzqSuJqNL5cGqKCHMzfz0lmI4
+2Hg9HDZv4KxkbAx/5QFoSCAE7sO5sUxRed2562cljCUP1B7HSg5Otgw73Fz1UupU
+MIIkAlf4wy8MNnM8pU/YiYqabOUUadN/Vs7mOg3Jnj/UfGRrKxAnYw1YGQTKAI4A
+qu4GPVqmPP0dYEi8h06AD28jO4wlSHGwb894S1YlipYskzfVg4PD88UduuEmPkwk
+ob9Zgj3JPMAErReBxRpJGxDLrK2CMpTdWGlYONQVoSkdKvTj5C1JEtymuUM4IgP2
+/DfWb2DbudqukHzzwVjXUdiXgul0T/LseZLKviSckTQar+nVfwHYH+9YNK+QzQ2E
+QhYCBCm2tTG7f2xI7wjqUfEG3hedAoqoYGoq7GWaNHiW0sMK/WPVl9C464c34HWo
+RLafYBMUzzXknRsFej2hOrLiGD4VHJFlUPXDEjiyQ194rUWtmjDJ9x+0cfOTPczJ
+N17QQBmIYiQGeSX9Q/1rDg==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+E8dXbDShY+3zW/pawy6A7D9NWDBtkXfCt/ri36z9YJa8KqfJdswpb2811maQtonI
+mB3I6Qx3vugXgBL+SuJDYWmPAuuK0s4V7CfYmd1uFx+gIl0nQmwrz7zGXxGxS1IC
+Vo7cclA1Ux8nkd5kAV/a7XqDP9d1xr2IqDWp4sIwfXVYSpJ3b3Uv+AvVC5PLbSpW
+WLZrBDJ+ktUNqvP25HjEDcwmdyKx+IYXtSdF2F0OTxq+KvyMkkhCjJDno9MKfPla
+WDec0k3Tua9WFgnQXwkfgJtsFE7azzWpPTAIYYyNo/vsq82JL9wksdOpMC1Q6/Nc
+ldjaRkUQ34XjBHxGGe3nUw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 16432 )
+`pragma protect data_block
+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
+ZHPg+aKAUszd2jux4LDCxg==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+l8pSZBuUsKv4mAjlYxaEkiVDG+rJC2E24ChAvazlVAUEO33jqkTqU9mRgJBkqPoX
+NHPGUDldGPqKjTPawC+OSftjFiM8lMJzjAkfksW+XarV7lA5cu+qu7v2XbxDukoK
++uhYE4/EAf/rzRsh5USNikDLA+f31pWUZVpinXRjhv/X5UQe+9w9Hm77jKdn2Uwx
+V0emfy78QX+lPds+RYQJOL/zv1iBbf5zGLRrdNyKznh5Q4hQem73AFfkn91wDKYZ
+OzN+WxeSeYfSzmJ3fSs83IeIOJNsgFhF5z9clPfWlGUh0CkmBV+8OGu+/3+pOfhv
+DiIQj8Jx3VxwINYa+WqsqA==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 42304 )
+`pragma protect data_block
+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
+2L7DtE7dWHkPk6WSylj1ZQ==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+T3JVVv4olTqmMR7B97zmjDKAAUqT1HR3dA4mr7nZg7imRVPYr+xDs+3/lhQy92FC
+czhXcdpkyt1b33Rs5P083o4weI51X3sRyi3HEkwCUu1XaupRk6Sw6k0Y36TQtWFJ
+tUgv8wnSw1+0UdCO2a87/+reXVlx8SyGA8iDp48yhsqPZMA+RPnemFIyVfrmY6RK
+MSstWf9ubliJLYM7oRKCEJzl2BQhLR2vQlKzYLAL5JvvsA11Syrps3oZMNq3TQy4
+HNGfGBSOgs26G/gi0Rdm6hP/gylYErMpf2WA72ULhWtBnZnyNGg9+l2l9kwdrWJE
+G+hqYrrJLNDYKubNop7Lug==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 13344 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+Lz6FbX/pVyGiIjjEfPgmiw9+t39Y8KY/9do6W/TSCEeKEEctN2g6bJQE8v5nII51
+HQbGd/vhbqxxBCE+F7odeXY2yLF1W+2PypPquLqJYyk7NUpJl/WduF/X7kY6MeYK
+Pk/pHOnHR5bHZpq4LdjlBHexIla4ytk1fbeAUNpGqFXfdxUKHuhg11fsCHtiL9Dq
+e1yEAbHO7lBU/2M6Qm7hP579EJ0mRY+Ig1KTH78gvnGxybc7j7db0iL8puxUVdPP
+onAP5LlxeZuF4UycDVI368UfvPX6c7VtYauZ3+gl64CbFKm4PNUwhsB5RV8Vh/Jy
+YgUU6BkJ4rwDsAJ9lWzKTg==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1312 )
+`pragma protect data_block
+Nu8my/ZeIqCKlm3k1LIhDfNqSTp8cd3KJe/bSS0MRXyvIthmdoUEvoeqsfQOFVfD
+pp2eufeN3GoCh7J+3r+Phu01vJQLR8Xj6d1wgx5lyrvjCOUmFvFFalaBgF+3uAxT
+A8NiL81w4ArWYfTqfTtii2tDTvcptbZSgg7pBn4ylCLXwufQOJfvBLB0Bk8cG5wv
+sXg2J3jZyB0MrvgS2aXEE/bN2JWct+PKBKNfUUlbYEJmBe7gw3VUPrBto9CLOHX5
+nMPOUKtz4xRZDz8X6YB/FmBQjGMfR8Mxn/2IeGbmZG1jK6vKjjSIfoz9sPybFavN
+V/vmHsbaTqB7PJLQZuW/Nk/v8ghiZ/WTOiljvFdHiDbUpLL7O/DBnNiHNZrIKqRS
+xKp0D/r+mFHW9Y8qeD0YAFMfTe5ikm9fd/BQacaCJVt9T3I9ls/TF5vhS5INrLMj
+TMW7Me8IpXpfzrxVHdSvuSScdayADuCD241qJ9XSStRV16lXAZsOPUYG58D8dPg/
+mbQaWZ2bUBKEUDilERYH/PUxcScQUFgRuP5GamoUxzCbKo/LzMFG+sYYtLHn836z
+FjHPD8lkfHlbl9mgHF4VVJQw/Rs0Qv69p7xpGLFtOU9bV1y01u0vXio9VsggoKUn
+/caeofCscxAH/MOVM4qTcB9cjPQavBQ0pjmsLKpR4C+GWaFRvRs30H2VKUxSUmRo
+77yhZZGA5j4kgb3WsTVlsMfH2tPhoooQqfbSbFnDGMNg1SAmwfRv8NPOLDF4Kr0j
+0JGbxMmioiKfQaHZBjj85xUhl+ro2mepDdna1r1zgyK/Zjr3DHJuvE8wTukFernn
+JGeGkSkcV5kO9WR+DYc6Mec+osrCWn3D5EI+fzUKSgGRJjy/mYecaY8SQ4k5McYX
+0GIQoHqm6Quv0auLsYnoi/9m+NV/lwaEMP2TMJ/rOVLXlY8sXy8VU5/bD/QVc4L0
+0W0wdxYz9G7gdh2HxLIRIhzq85ig6azxlLndlLJweSmcf9OxT9eA6GxAAjw9Mx6c
+PfPz8iYqjG261x7sxJOwH0RkRouIXOmzKNVB16BfaJuXZjHZH02Fw0LCxbT/pbVv
++jbFg+TtbMv3guRyAMcLNwbUVe+8UBEYeaN6uc5pQUfTMtRoHbE80j8NY/jpbudU
+m7ApSKt5ICdBSZ/wCHKTA+Re//Cz2BOJ/8u3ltlL8CVRrJ1Y7F8AGVHRpNuX+aXR
+nKnpMJfEZw9z/6m8EkLWOa1fiuGYQHg/PLDRPiokyTMWzKbZSzZjmLoZs2dSs97V
+X3MgZ1M8JYK/yBEFrnqjFp0I+cMuLaoPVk8Md/yglRpWDeH/rtRUSLZOOvPAYviX
+yUceuOLEJcCTs6/lZt6zd79nj7gTp7x6t0kdxyYOP01LjRy7MmQOYaSj2ivIzRIZ
+dLlQPtincVC2IuAfhrkLrZHUWk+M6eJy4FSI2FnB/4JZydYWbFgmJcKP46SV4/Sv
+zh5cYPsnhA10nthWftm7tqucJ92upyvJUUh4IniyzEMuOWtAdv3I72mCd4e91SRo
+su1u1tF6rXt2Y9nU/xZV5cX+xe8V/+tzX0OgsQXyp5nSNY+Sj0fXKJGJ6hw/EUoP
+pJqW+FV2bVzlf5V2CS+ztVOS+tV1R3u6k5YtJJYY5qydjUfnZQsl2EhXxK3f5C69
+Dk0JiYoUCdkDWyWI9q+XIYEH0mKzhCDcKA2QDwTcULObaug3TwQW8wV7oDWL4O8b
+ojats1eBZvP5jP8UkR9o5w==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+TTxOuiZPb3z5XXLY5O7KZo9Sci79nGV1/MfaMohoe0ccAJaqk1GLzchKYcHE/uM8
+mq+Lgt+Lq5ExtX3mWQnmAaV5bf2YjuSduyCMYjYr/WfeFQBrvYNKJLOCq59+YxLz
+R1Ad/3JrTQChewzV7VLmOrTi4b6Bi+rDUv/eCPyQZ3m2f4PErw7ca6P7QWDC58DQ
+xpUxlnB0Do5YE6IOORhfzH2J+kWMIsNbu5b5aZ6GQN6SQfJD01HlPvwLe/Qd3aVe
+PSqjzgzb2QHjnBWsZPDaphU2PQu357OnnEpf3tDzZxPLGgdN4cAJCd98mmfu6wAI
+dGHx48AfKfxh4sbfr2V0bA==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1024 )
+`pragma protect data_block
+fJNRvOMBPIBRM0scZqncFSaKb9GwamqRassaxCczcSmNF8lcC+CosRzsWGqDDmoh
+V3WvSyIsxrrqzsK405YwAg8C9eKJaCdieD9xRWROdJaM8lW4+KOdCYRRwSfNmPwb
+Frh1AHi3c/YSX6Zp1iEyyQoiZlnCOgvfrQTUYSZjRMFqklJnLqQpBZOLRkw5X6JF
+P/K0VFKoc2rsqnlDPvAzO2+mWAlcnec1pYEM1RElbmT7UpF31swFtOUruI/xU5Gx
+y+Nc/Tz4c2rF45s1N8IydbP1VI8IyEzJ0efHLlujJ43Z2Yc9syMX0bzDX+rXHSFA
+d+zaFPINa3yszIawwhLSqQlS2oDFwi/oRL1a/xBQiMHn6Bx1ldYGW579tQpqmY+T
+dHHBJsV5UwMUv3mujvW2HF9J7XnIZUah3GG86n2VXJdZRMnYeA4ZZxfZdYlBccHV
+3rAduoBxGe3tof66Pv9gMhN5pMe+w8a3njKo/CwLLCwK0WUMCphlGGoanAmvtGZf
+tRu3d6q4eW1ACzG+qPfSsQK3ngH0Ts998DWee1VntgJr2h30KqUIJooJ0fwGIa8k
+ILZKXUR0msmcyh1ti8Di7FlsiuPodnRaUCgXxVirmYalnCYT8kGASRzJYW7OzkHQ
+xTZsFbSTactBcHjpvFZSv/qSK3BXR2BMGQtRmTUhVft+O1sLoycki1yTwjoFU2zg
+JuenKFxnJmUl1Ac8R78Ikx2Fbn0EEFA4UEHoYRDm9mRwsdFpNEwf/WoZmA6CVYgh
+pw/2DFRbirJYlv+QDz4E7xr4srHJfkbnUGr5T8kS6PTt90zGl7U3dvynTPMIAyz4
+GyAar2RCSSQKRe5qlWfVwZ2KIrtRWljAvHrq3KOcvll2vzKP9/Xfceqarm9UrydI
+41HrB9c4GR5rkIjau5iSSkL7xo1VdUOqfc+l76NataG0KaZhSLL/UGhEfxw9j3qD
+ebumDLu85CVO+eeB+xpMUOp1kG9jCIuUWlc2QJY2PSatE4vf7d9WZv3MjE+dCWna
+9Zt9YawSS4nXGo5Fh1U3/KEdkMVIwZzEEq+48YTFNaEwxjeMmkWNB3LA7tB4aq2x
+dyRdJRzn2ZFnpi+e+5sh1zyUUb/VtKgp67mGY7QYiD8s0Ld16MyjVFbg/8cJ217m
+jwOaR8MzRR0YANi2hOfeKppvM2Ev1+fEM1Lce5AdoSSEcNuW2Mq1DJg7QL5TT+m6
+Uu+6EuhTWF8eArIXCX/MGms+//DSUYcn3+fjKqnyoiPMAeN4fN7X0qvfDFnuI5wB
+P9IQQZrLuaA2YQbnaMCA5JrlclN/C/hGHQhh1VFOEB648lSTs/nnRr7kaMDRpVmx
+xGA1BK7JL3oGZnE4JdvgSw==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+nkhAcPFy5CVC81K2XeH27Rc3XAcv7GTNij0DpNy/tGyGNqkfm8/I1LfCR4iJsPE8
+U6wXF59KtCx1ze1dlOrt4lb/rddSlMcjclAf/22Pk/Ic3DCXCY0Ma9YAKx/HDotN
+1dAaTDyDrmMf0i4h8jArjVEkdRRMYvXcwIYMQLgdoUxnytiSl/z/kA+HNl9nfVla
+F0F/7dY9wlvF2XLOT6OONbt4VXzzSKlXn8yTOKl5QXjp7NZg+R6xKHy8uv95jz7W
+GAMfUNRgH0a3b/wnyq6xyxtaUxFg4EqRSmIB3/vuUWN6CTQhUgnUCMIr4vYn5G/S
+ow6ZCwubW4TjcOE5DpOfdA==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 17296 )
+`pragma protect data_block
+Hdm6Faz9e16HFoSKmVivS8fV05dlV+LAzpIs6QDXyT9Y0Qi5oHgeb9r+PINXpgZo
+KKUvkxr0RGfRoWE1tmxx1AXjU4aujlITqfm8eUr5YnHni6ny4wLXbYJemzd4Im/j
+xoyaeleBgWEciGAYXNXIOVWi/ULg1ADkemz4F9opZrFpeT0xfPmSiVux9EalFf3s
+J5MgOhOa5F3orX1Tc77ZKLMWc5DSJ5usMhkEz/xlR8NpzRdsMugaToGEWz8kki6G
+zCjIppz9+iSbc63Sst0osVlQ8dkJVK+31yiiWwyufq73nsbKbEHtSOr6BLpgFSyE
+QnnMyRVld0OnanTgECcKVbmcH/IU0Wqs/t5f8je7ccAfsZhILP49aQfocO7uPff1
+vQk7Xq1LPp3xWZuJ2SILGg2qzr8uOnZ6yFL+by/Xfw53vKIYNcedWOJTMx4OYjT7
+Xa2Qsy7qMs7gv1U2YGPW6Gm4f+b5C7wT9OGZnERTLX1cCqdE30tC8J1oMGJx84qF
+xuNpnRv4xLSoSYdH73xu28yh1y/LAq573bwdjfxYG0+lpt6bPFiJiOT0HyRm/Cdc
+gdaV47Ou/SP8/Z4LJQWaQy0D21AeVrT8WbxHBxy9+5pv8ogp0f+hQdp7+NPNuNMa
+e5S78E62uhfaietO4AGAZTrN12usLW3OhT6O5p9Pfik4APPFyLJUd/TWqlzNy/mw
+OUoi4AI+3PMR/zt5yKD6twD5FzryerMVh9qZkeiHXKrrgFLotgodz58m2si+nyrp
+vg+Tu3jNSvq0A3TzzW8q3mNuWLV9l5O+ib6sEOw8ccFBBgWMv8I79Uv62uJH7AGX
+RldIx5M612GtsxtCya2P8o+7Ds0b+9TmvLK7obcrDqD9/wumPpIWnVdtbjSu15Gb
++4+78Wuu0GivmcG33J+A3XUqwSnSqf6IbCwxYzuCeiSmChWqdAL1Q6f47J9Yo3HT
+n0nND6OW/hjkzhtsuUJlA96yRoeU2lfX+Y6k4OOkScrDbick6fdfSpcMaDNkpFHf
+ESC80xu7N/BooRPEj1XIO4vQ1dm3wGrFQ/JvO4VSPPrfXIoUVApqEYOJUD0zTp6T
+xwhboEAQ4NPPavhznP3khd0scrq0m8fkzs2Ab7aORQLseuwSoNL2ks2egcOCAA4R
+uXgMDfS/DN5Fyee/nsrPScKnaiBFawPPTDJ4RtltMvY7ttmdrwqtKqIufid2Tc9q
+El274rdFSSxB2pHbGgg2L2M/JzNSFhEBxGwx9vuc92KYV724m/9Lp8qIvYsmDQ/D
+YUIG0gYxeHLMHiGZjTdFQsvGGQ3D/pWLltTe0qmpedymXZyfs88oIygeMH299UJe
+QsqZE+JHMLHPzueZDfNwCJVLRsWQMrKcKW/BNPqz3sCiNG+zCQBwoFJ1JLo5pAVd
+q085F+QC98XvrqI1oiTv4fn2/4XZDljuQ3BN3ptVO5i2Iqkd8EdU+BFksCQJ5VZh
+O9PAnZmtq+ak+AIVqwv7KQEDF3lYTQf2mY+0mWHVo/1uG7uOqiKVlDmZaGt7mNSn
+AqA0vrN3NtwAIdslnA6IGbkBOjHi0NB0V0Rb2fDBf3CPgVOIRohgRzNt4/j10wBG
+F9LyAUcXUMHnYwJ8PJecMoEfvPhMrQIznBBt81kNWNwxwUKjPQdNM4WNxon5Rgrc
+Wl/CfwI3BJeMgs3o0OzWlZzeKBBGXDVrltQYL7M38PKo13VZ/LIR5oAjzRr4BrTq
+bCHCaDU5OXlXQVwct4fj/mZIq+MxUWN7lDZvOEFbf/S1313YynEuf4vJTPfmhIe/
+Nl3fkMfM1nX3wZUNmPGf2Hw8KhMAn8698LnILSlCsNE+8dyjb1GcaTTR4KDYBBTQ
+gO5JxfAhX4b/Ty9rtxhRf+RXkcxHqpeMjSQBCQy40stLQTRgCsVbHtOWwfZfSlyR
+FTJ8VoVaauZ/eYTHhVBFU16hHKMErZRKhPZ0iQvad0Qj528ge66J5n7v/oG/xbV+
+L09vhKuL5jjyhRncmmQiPnpWfSAl/vRek+Gv2AkE2crDujkcCxZvsMRcz+3SqAOl
++cpZ3JqjBsgiIIKVWkfBXD4BBbDROKXDXMouA/8P3mLi/ZHrbw9YLrUP6OkLEC3R
+pzzCROPR2/deBg0nm1Ptf2Oj7pj2IjLF8L2zJUZAKkF/xI407kfUfUQG31WaSjCu
+0PkGhwgojIuFBYFrPej1SZqfrZmgyWL1Rx54OlajRTrylMy/BF77z8eJApIWsoDe
+fD/pSz295Cpouvrkh0H/ijJ5s7LQ8xAYk5/PG3ojyHx7uDj7hpM7OeOZFpDm1Fqy
+GMG4m+5fF2Y9qFV1Bbh/0A21k9xjf2YmNZU4IpDXNrmbnH+sLDojGNwdYFhaC2YU
+Xk+9fJFKfUa6PPeZyct36Zo/dGhX8zbX+LPeV0cUr3FJxq+hXKfpVVqHr+dhKufM
+gWkPjjSrq2KM3CYfNSADNazT0WLg+eB+7iJtbf7AFnkRHKhltFSKJHZtJC9hAfjF
+zF5grQJCFFv7gyJleq/cijbiGdOLSP1ANQuFq8BK+m1U0GHVbFS51Lc3FNOHlK60
+dAq5Zg/TH1wnvgCeyYO14aOHzwO6Z9yZqwWHhKmoCQjkTlojv+LYZTdCjeeilCGV
+YuAKJ/iAyxF5vQNHxkSUODbJRkNVgoOANyMc3CEp7ji5+UWgQyTnXAEUd+1QfIaz
+hFm39jg9WA93rtLyi36uGhc4J+CwneqPASelJ+TnJpbtipU+znJhNE6hUBc2uC86
++GrOw2qhUSJ51/JwVimYcssSlpQSZa3ha63OuHf5oBQjM0E9KzUDIbTVSe3ry90Y
+RaCt5Vm9CnPk/N6CjJqwMZt1QOwcB/Ed6aXATRyDYOwNdyOEx02evUMS+s7YdnNh
+7nv5sOf5/YzF5xO1EDFt3UxaGlx+FjtmM733xRnGaV6s1iIwM6NVlgm1o+c7UCM/
++RQ/N+ju6ooFAnA2MDD8CaF7XqqekOhDVxSvNWzU6SMdvGIGc0rOxCWGA+kKUzva
+q8MkVh8T66BiRFGM5l01QO6Zf7yFQulCl9n8kyngC8UTh+p58na52kQzgeyTTSgI
+hoG1wpqqgjGjvuoj4PHqKcIw2XLfoETsnH71a+lBOBnzfulp03FX0vQXRAxRGrY7
+H6757ORt8rNgcGdMI53C1SD2sT3q68QyV935xbzKCchXFDOzKedQnqA8dxos4rBC
+wZTyqDxMeCd21pXXu9I6ERUxP0elhshoA5qyd2vIWAg8FF3Hz6t1pr95RjeX8uN+
+QKdD/bYzSxJDuu5yLXPd8TeSMt8sfowxB4n/+JUlJx929KHDm3zCqZZc77Lx3o+C
+AjNN9+Fj1aPWaRYCEwUjM6zSbMNNAasfqxkU4dbYvXNn/Mc4nzXxySKnggpMtI1M
+eLuDNv+42YA2EzpDoeyPHAUn+NI/waRTns0hTEHAG3Ngu/aflW+zh/RXTAnlGfpA
+ugjmpYEpGtVsoW2UWMrBlZKQZUt3YObaKL2HzHLuVMstgyuhpdwvrTtKCA7sbU8M
+KznMfXtyadntP/oFLXTSSJU0xn9NSNuJSsKuN4GwxRw5lSm1HhVvuCOw3khW9gCG
+nDBY2uKUZhOtlIjll3Tb/R4XncJWcEU3TbVNu+PD7bC3gIP13c6b7vlQJcxt93p1
+VNE/uZiwa5wEmgEnHm6yGFQCplwajPFxgxct5Bf7LLuuzvx47WzWQlgoc1CKVkbG
+Wz4ah/j+5OzPQYBT2Pt44HuMGiTx9HWwoei0tslh3mv4HjZGvhaDuHkLFtnE2/Ev
+r6fpe4jkpn0NTa7LTxLb4P3MQ0E3VLQAuatNy+u3gD7BxpRhuEh1J9Cjg7BGMGbV
+kUMHiyGjysFjDeFfLnrmu8fPrJAkCxnszGxa1o+ABPAAlMQlQbbehO8gk1L/Cq+5
+iV5NFSGsEdMcZV4fGW/DjWf3UEk84DyCfzgq6Xj401AQxvbWWIqh0HJ3gTvd+/EY
+Ju6ppl/iNkO8EIZX3Rj1VvtNshXUhEU2dNtY/oN3CQBnfcHRInJ3BQJDwjaD/Wja
+HwWbBfWDFPqrWqndJiD9GcYx6NCn9wpLrja6GwaTewbNj8m96ONsLQFbxtq4Irpc
+8x9EOvtH3vZxEYTmoWtD6a0ONtvKlhOXiYTt31mPhwyh9JY5/hZhPWEMPM52n4WB
+LlPXYn/BZXmdGS93XnwMJbjI9+CDID5ojJfKg+krWWS46++3cm0iH+ka0cCm3Y2J
+15IHiImkWKD7eL4DzqVCzyEVGAmWtD3jA1swSUgVNbkLowkij5MDvO+0VvfMJfHz
+kfYFVFb13O53w/IOwLZtBYjnbMBQHXorKq6CfhGGPJPp7R8oOn4pur4htnZNzhBO
+d6kuldp2A4i1nMV7oQNU3M2H8L7GWD9hEIujtXY9idS1WhrGZaDFgauqVH68KtrX
+AqQwCm3we3x/0aoVj7u5pgMrSdAVq3oxyxXPSsZmuC5CLBrKtG7DwUjSFjlJfGMB
+zbaIN8L6O5FdYCKVJZaxtkhEQxOSlzWX6yIX1QZtv6HUdy7rlF/itfHhSlDT8irp
+4zkhilAKXPWhnZ57Z2sIKWXgpnbsGJv17IUpW6rZV6bNaDE0O3byt0SFZVADPKtZ
+8MZkb86ecFhamVxtgYqBAUWRf/BIO5QORpnhI52w0RSo3LzDoWO9cbomeJUVJ4iY
+SDRuqDvPmm0LsbaIxnP3DT1oMk3UUz35KW820kLgIlFct36TMpXn/MrrRhHq/aFe
+UyJ7kx751XnBGD3n4r2XUzjsqzEqseN7M5cvyEb97PNM4SPxUyCBkfTwucaXI52O
+1bPuivzyWkqld4lfzwPnt3XtCwnhSgEJ4VTdN2zCLTj/AZNLqFZr1B70jdA0TP6D
+an8T6M4+ozUsT5ThNVId1DMMPIM3WUUUL4H9t5sm3bSeYS23xmKb8c/cFVvRokY7
+b8PtLeVX7PmUIInaWlJ7IUQLbvgRQZ2RUTppm4iqrHvGSjBNgDPttaunBE1ew0qG
+ggzCsnWMG7s2TsjusvpxqzWKEwtcCwsHZn/lpRhFalLBNCPMQz7tpcWuXLxE1jg9
+G56KjCeqQp/pZ4HJZAPMRMGE/r+ttJdU5zxGgudnMvJ/VenpkOik7I1y4+vUKb7v
+jmAXbXMORu4kHKSJ8rkEoSzuTeGrS6Lbz0h0hSC91OIYPX70yRiujIZD4Cavf/iH
+2HGdStyU+fUX5bJ9VzJnQ8OutWLrKpKnMs4NMKpqFQK7VrE4/IXGVNm/xl0iRlZm
+RihoWdyk/8gMdO6kj901dD7B1KAOPT+OZqrnAv5Wk0EKBm99yTjolLDrNNXzQh5V
+m2AMle/ab636rUnyBJrB2DjeErP0OV9U0TBEzsajQJbDw+ycdfsfsRhDyO1R5JC0
+I+G9OW2jHpj8OFBQNw1OWDiIoYbW60hpY6VdGv7cFG1zD6LLvOjU/e4brF0lkz+Q
+5lM+u2ywGzrxBWtg7Y6vTVxykUv5zbCznnJVGbDbxzXkEOKZTuWyQW2IWjoLxoWb
+wL6IfjxERVOJ8Ne7pSZz2xp0PJ4g1sc7nwhUZanYL9MbvG2yt7BKldV4FJFTB6X5
+5c/C1hDpQvXDBiZXhjF2V8Tx7M529zfwmpTT1c/q8xgJ3s4U3E5ftZ3d2cN+WuZg
+NhAXb+GbDkRtOanAxRYf//TJDawY/fR+GHhyfCsJymZiIBG9M/Mg40o2PmHQdn46
+eDBMtBqMIP+k+yHkUv6hzF2lil9IoWe2j9rLzerY1e5S8+IY2LStPLEMf04MC2VU
+cqR9C5KTlJXXykN+4XXPeVxma+eDh5EipaeNtJw4x547GIojREw4/keUKQUbN2UI
+g7RKw5lD5qSxukMpzUOtmNBqGOblBr1YPvqKPoNWyhpNgOqae+JLwMyXMLlNXg+6
+E9UNJ6xGkeTgJ5VbN1S0xIFtoAWdCZX2Rq4AggdUSgeEZWYEsOUQDK59qP2VGM8P
+xXTTYz2mAXQNBqwdw2Y9tUNPIxBHEGH36Y+0+980Mv3N5UsPgbyvXJQSVJqNCr1O
+S41YN6uO1ZSFwNRyJziFzLH/iVWN7n2mPku5ABahRX0xB90MlPAzXbaK/Zp/1ItT
+f4hfEU4rAJyAskUQwyenMTmhzfPij0hwUALpPcCFeqVl1sgSrWCkjg21CjalYFKV
+29n5NR0RKyNPIErpkrX36nNOro6svb2Pm58Pdrxo3qPtQcoXdXV3mGlN6KmQI+O2
+a/GM0NBZF5u/5ve05xHz5TWxa775HSwOhsQ99eS+zCrT78h7gZgf3reYYKDGUnAg
+XxvGGAiRm0VDfZZSoLd1wDjzyzvkcaXsrSvq0qLdIOgqnAFklYki6yg8PQ8QztnE
+G1Db5zWpgPSKPoX/1lhtgSbVRW9UHbcuk47JlnD3ucLT63olrAVQjYPwNKAPzAJ2
+Ha3PzqjfpzIbcKqD60H6to9dh9NBz2wxRZVj1YFMh1fn0FyZGUvujQn8COQ+fnqD
+j533hIZk5WOUbW0F+i2T1smw0CEyX/pXaaybGssypWWZYIjtb/rAD6OCv/pP1fHO
+tT02gwj2gFLovv9oKtulGyosnxoXTzJiLHnZ1KExvtQ3bUKdNdOODjLZ5DUo1wBI
+Jo62JqQhzOYpL91qDykWHC3YH1cc7uNmpompbt6TkUeeDVahRbmx6ztH69TEVYk0
+EjgyLjqUqPW8yNU117Bv/G/Jv3+E1KRJQyrsndRZPkODo55q5GVD81QVD4sWlLvi
+8yl2ExB9zNVdtkIpi3BebH2C5S4q+52ToG1YP8gUaBGzC0s+maENniRX+3xR4avz
+9RXxxVbBz4wGThTAEYe3U/DgC94Z1KERaO/SjZiEpcieL3RTIFgPKRD+gqG3sN+z
+W5WGIf8QlfDqtMV35Iv9nQNrm2K336Rir3qx5wfs11Vr7TkxJoJWPIXLo/6iTS8N
+58mNbAJPEWrRpSNGZJpazWY2Y3RJKDs6WvYnRFH9myCYM4o8wG39Q3M6JGJDynBJ
+i5liUce2oH184b44vSIUWAIjyNX9dj4pl+D5JfWjdnl753UQGiwld3P1jkEbZpYn
+kFxSDlpIQ11rmescW881k1p8lsAQ4B1OSNPHumxRpbjB5Z65y4wGNKYsWVMM1Hlf
+Lz2BhN+4ZFykUQ5AfV3nzEcEyQ3lLFSRzkCn5l1r4xS0asglUM2pZmYLgtTJSfQ4
+yGiOtbqXVbNmiJTT/IkgKTBmSt/3BRxxAADuTRhNTasWdlk3EdHyRjzdna7eFLs9
+9Jjel15KTZ+TXHi+I5/vS7VElNpn8uD6Fc/zy/TDsV3kthRzsEmOgyUkCOLa7xj7
+Xj77h1BUT4rwYk9S3RfsS2cCj8jFcfad79idIo96aRtEY4RVPfiBTKVkwve5R9n2
+S40fb7pl5NC3A7cwZ+Mi9O5AidNSpPRVkxecNpxi6j8aTUyikCERJzC3q4li75eQ
+cvHVcCZKOmqjj3GvHVqWsCzMrK382KDs5ba+V+YqVI5t81CT5LboYGSACkYRKrVX
+cTNX3sxE2N1JhzPKpbo1FNPYNxSsPJmUawER46e8kHieENwCKB+aAmnx+kmgPp8g
+xyBTdVYa5Uun9gu5rYWjcHKSzFWoSI2wrpfRsiZarh1FGrrg4Z8OS0+eSIPdCPIG
+5L04gMkpu4VX5tCoseytO5FIgZst5lo7Nmqz89MHGRbNQIZrq9LzPehJ6dvDw8tv
+mFsNlE0RgfVY2M9MzcBpv3Ue3uRLe2mqK8qMme93mi7l0y9hZXsOGOn/K0SIzzP4
+70YbI1IJKoI+0N3GZsPQ3sDnzi4nzzs2wrKUcKEq8kW3vf0hsgJxK8RNRCAQ76Q3
+tous+JuiulEM4E+DTnj7wfZQqaNGSgYCqAw7awlosJSEKe/lxN9YArRDA3lwR0/f
+vfl9X7T/yUBaPJmlt6NR2LBl86WNp4mvo0VMWz2NMykwAnseuKvXGdtDedrRO8Pm
+82ZgZ6wgDO6qbQBCrewc4cKU63AXKkh2asrL6nqEz3mJ9RG++s46LPQpa/K5Wccr
+coPIxFko4+CLtQ57y7Ryft0K8/OTccTEtP40HxfAtwcWBvlRvbQ0QuDCxCvR7rUI
+xMXXCYN9jG9sa/q0MTmWzuf0rMXVzXFDLNkSGRxCoOWaUt03ElUExbtHCGzqiZ4M
+3XDWc/PkTz2EOWxDy5qDtG0Xn2semZYj7XifP0Q3efeO3JaezOmUhFvdnw9ImkEV
+hTsXVr7sg+sfdrHVCztfzHdhkQGNJbLFQDQFjG65iif6A30c7WLM5euLmfCIiPe8
+/gIbsFDX6WbDJtI7lE1+EVyMwf0ZDZ0H5wZjdkYWkuJo1kWZO4IYxjVgRhrmjhV9
+fvciKi6Yez+WXWfcPZtwmvobEXCIn/2M9OnX52QJ7RcMcxuAAGxEpt06HOcqNZLU
+uOXTzv1a4EnAIwQhVbg7qnlJVQ4+OfUZotLMDZ2CIN4ubC2ql04+emqWkJ1MrMq4
+iSt60/2nRC8nDuZ9jyEGWsSGP5dn6+aJbmcVQWHPtFLmsE1rLnpjrdL/XYLn1n/d
+IgbXkI7pb1TvxpXSbY6m5bQ1e5tMbzReS65uMs5PGq/msVCc2YAyPnrvsMHZnTAQ
+1HvwQiuZnxn7QZ3yx90onOYLXRNXil0rfsQIVyTKsd5JFDYHwrD60sBDRaNz26Um
+RtocxxkCIqhgLPjzjgOqfEUDR5y6CZKkJDnRPGJIK8HavDawdi6HVavlemxcazIC
+b2skqRK5UgGr5ysMfDrjW1g0bf81XZUqNkppSvI/HvQaH26MZksV2samR314UUDX
+zWWHEcpVe6urRw+MlEoobBO2cjAkXcYxlz5iA27WXOAsfQHXCjmREqaOLs2bDLgA
+urJuIL0SCM1DcEmBVRoQdT06yPHcu0t4l+BFsQ8J8ZGpc6G4k9O+uKmsEYIqAOuO
+YQgthl9+vqR9xkaOKLOjCOS0FFUyQCHC0HExXZ+KX7iK4aotSc/kcWirlcpI3F0h
+CUHPcJGCMbqQ/p+wxM4VlJD1zEjtYoc7sMqPB8LbOh6/vxv+LkT5tcEG45O8CHJM
+tjYk1HaHldXU6fEVhTI/SAWCbBRGEkq1aECert4L09QV7ToK536oXXC6gIu6noc0
+cTc3++PA4btW10OTRen/gUeGwAWjvPNKUbujNevM5mPh3Dik2MADIoWs4pYta0Z1
+9X2JKk0aiI2TCTvE6zf/8Om51jeTQ58RGa2nRJ+ydDP3EfhN/Y794hXBYGqZAP1g
+9t9foQLf6+pa6l1Ui3fDCuhOiLTiEgHcEyZZP0n87i50b4DF49ragW83P1gC0+W1
+LQoUOmD6dagrizszijvrQHrmA0DNGJvB95VlXGIiSI8qwtxJWOk5cXEK1DAV8sJm
+U2Hi2M9mcz9P64jfTA6iqffh1llt6Ofl+TahUh+Jkh4RWSWOKBwLbK7s7JXLqcy/
+LY08+Z7fDWbHDwJnDhmIclFOtGxFesamrbETz7GJ7w/lmG88XB+p7mvTROYVXU3n
+IS0kiMZmMxQXOpdkoZ9UYYV0Gj1qwzzkvTbVHdcxm8rvQ4Sx9jCZJ37vewIirlvt
+zIQcklIqpTgDYCvCiy5uNH8+bZIvEJTvXUHhxTQczijMcO8wdXn7srQA+Fk0maIn
+yfs4a0X21LkBiC1qpOQapWWATbuqaAUsik1CcM8wlv34qiZrY3vdeDADX9J9YV2Y
+hi40pgjbJ5q0ZKXLhuiv67IU0ZaxI0C8U1iGqQ3O+cXvamL3gRUTI1cdYVewNgi8
+njMqoug5AiKsoH7uz80OYBA6izTXZcO5Nh2qc3WEK7I+KHPq2Sa87BYyiz67f6g0
+fSZR1PGEtaCkZDLMeOf8HjZrFuvC+nKo8l5uRBAR2+R8omXjRz7o3ie4FYA9955R
+FTF3kiNhEea9uD71UyXHlTF7A09mWJuVLqF424jSIoIkQASpOOOQ/D/GhGRFvNvd
+5AWIRCxo2zJREgjDy9M0aWQG7MbmyLkfQEz3thICyM6OYWx5WWCN/M0gPDScrWow
+0iD8ST9vdQwHOuRRGnXPabWQAl0OrcZ3rti0GYPDtyEMqJwU4b/XgJJ/WSz1sPkp
+gupVGFe7Z0xjSzYOWSKaaQHx09Wlj/X4V2ks/M9PaTe8f2IYkZ9wc2vRXX+ZUaT1
+pMW8B35GVjuC9Js8MAIPH9pHCrKrC8rQeNYAgFUecNg1uAFGW7EuJgsrBbkh+95Y
+fUlv2cXAGAHw9sVjz+DLsDcR4bREbAiuVu/Hk0hfHcl7msUl7N/iivBcwWabbrcM
+P+cCJRTHOWB+K/or4jxp/Lkg4f7dmf3RzQX3UWhX9gbw+SRcGB9gNX2cSxqt6g9E
+xnGco6tZ/aC65evx899UWiqxy3MXcLTeT5APBOGqZmDwcZCfTc5cT079QBQhHkhj
+rADE2lKzbTuEeepxJ96g3dmcb/+7ZbtsurRQi2KTbJwQSHdjopdEmWDUzV8F48jY
+eosqyj0C1pu1B6CvPcMlj/cSQVJ9PXcMtJb2ZtrxF4scAmu9JNxpAJNB0QSUMLak
+tDZ6XSJYesMaJnPBSj/VndfZxynOcif6Bpwyy3z1Ho3HtH4XwO+nz4CA/pFwfTzu
+vYhOXkE1ls+M73mCdDI7NX3wJWyIfMR/TNJw5D8/Th6UqyDIHLbsa7kSrNJsEOhy
+PcQ8Jj8ZSGF4m+D24dPtpTZtQsI0d8wx81ObW71pj4Wk2fDSz9OCWbJMJUNXkbYY
+xrDnwCOqCNTZ2uTruQidwbcBS171l4RACoaXGL8KS610eptyKkvlqsODRdDdzhkN
+BCkMjP1VKlIbddZL0vV2mTlJKN3S4rlJHaaG0DNPpKpKPrY77EC3wPG7ES7sR5Sf
+tbElL0VtfD7CdRmRsUg7berZ+l1j2zfys2FqkX/QXd8K4n8kQ5lWsDHhgM+6TLx0
+WOb7uALiua6pPAKWhXXTnouZimODeC6GgrrEAfcurOl9xIcLUScfmwaMJr5w0BFX
+5UwZiEJpglT2CXgtbRljbU9B3iUA9Izxoa7xYJldSJ8OciI6epLWMTo1bw7ICgSo
+EDLzBSR1S+MuEDSiIlhlZD9W+2b+Rlm/rHuRxZOS14ztYCvAPyJHj6ukZgvmEsiP
+q7aUZXQAQY1n7XWDHU/3oSEqsWEx/EcYWPPsyM3Dh2VCCpH8yPDIANFl7Dcq1TLV
+A25X1GkAaFVU8T6qN8ZW3SmetLS4YqRIGKSrKtUawXtpluR3SV2CdEr9Vahw/OF9
+a6fGBCwYExaSX0ObPvl3ViN8wwoxuBG5LNM11qibOc/swHdFQfFxtLs0T9JA3vUl
+JSgNBxCgfN1KimCCtjcx2b+jRAOek5S5WOMjQ2koMy7Aa2DOuBPqNE3C/kWdHhLN
+iIyDHzXiYfxIO2SepblatbTw3LKErMSW1Zc3C6JcNPYxqPA96R/Zl4DTsFLmi/c7
+XAGxxWxFrkaJgmZp+F2TimM0ljKDEfNeyyFC6rdCpewpdg9IqrM04mCgmJTBBtW1
+8mtV8sfyDgizS/o5jbhSUSDab1tl6Jx4w8CcK4uUvwNb2Z8h71ZgIduyGOIEhNT/
+SoySeLImM/NjSrK9QGgn7q3aceAKHlRCOcT+mcVng2CHbGxJyrP8gqx+oE6sMQp/
+54gkG6Qvz5JH0UaXfzqEHeINo0gXCua7TebqvVTcs2fGpchqrLe6UB+H5dK9FO/9
+FVz6ZWsQklwkP3B2OCvX6HDnE7OBlewhoNKKUR5gB4juepGDi3eRc/sOn5x5oVZr
+f9D/WxVLQNdWMuMJihOOKZRhleT+GolAcjDGP8lvzis8yvImpZixK57qGfdQKBgq
+HIJ4GdngSE/fx4bwcIgxMPjdOdeZ2iJ7JfcxRhCSDgNmvlvg15/zDSUJHZ3OflnC
+dxlfTfCl++8x+I0Lvw/ecajlnxDzuYHL0+bKGq7hN9lER/C6bwe3AnghWVFy1kT2
+m2fz6eTC9AIFSSJYRRRBDDYPZlnIkla9gMn5xFO+xXNLefs1qSCtare3RBL8VkkW
+zOfhVBN3r7xGO4jaXlXFlC/RxfjKM/rRqcOsuzt9h9EZtXyCUN+QjVtEpClFF7Za
+XBtd3oANePStT9TMLDRpBh/R9NHZP+uWM7Ywx+I5pPn0SRONtTINcn4BJD74Sfn+
+OxcyHgd9DWFGe9bJRhNNvuXnTEh/LlInpQLnQUlcsYkDKMLOo667Zmfdagi7fPmk
+IpM3x9Ph/SUxsMTyfx50B2b+7SuLsYGATQgzzc6Ko4kACPzmpZNH5e0rC4nxAB2w
+I4rpEUPupze2PcFHFQjE2ShsHqsgEfnsCKGINb4M9+EM0DCtAwArYTjPvxKAFhse
+1etBERLLyMXzmwvD0cjNqot8ElWBgH0xY+7rg2HG0lTKlA1lDWhvOGWvTuLhKeb9
+6jOf1Cuo6XKj3KGdakHi25f08VdIFhiU89wWiUXMI7H9FmLrz48LwK4R78SeqAc/
+47gJ2EsHT3in81JahbHehhVa+4eipgOb4aT/7dJVaNJghyqCVh2ewtfUpdgryyMX
+JFM5Z8GwCy+90nfL1EL2L2Ix+rUA4Rq2sr+gsj7SsEPMGKDTFkkOPlb5bNQqCnvg
+VB8cw7kX78nxti3CVN8xRfcDqBJEn0u+IwQjT0SL4qz28v/EwOgpEApTbt+2x9vZ
+QvhdagNEyRMS/+pH4w9Rn/McJ9Di3eZDJgeDyPNJiYaJOH3XhjVSC4H1SHAxo4j1
+1MoYbWpAcP0u7VsoU3JiYelXdxAZAqQs54D9k2TuO1fbj5KbAYl+zivV2kd7P+BN
+pjnc0xkzGsOuf0WrnaLFRXOBzDm3aBEOnboq68sL4G3iv07oCWqY11WkHHQytaw8
+2S4f68Q20SuUlb0j8wrn3peqW1nAeOCFT3hJoZfSFt3oND0ALijddpBCwyScdlZK
+AP3WYAqiaFKmvJGgX0rVi9yCo0BNEJQrKWNcZp81v327d5hcdGQs+ETtv5N1LxMI
+Kn3fO+2fDGrT41MMraMaIocN0klre0L69HA6TAq64WdCnV98Upyi6N25l9utVowL
+pLxcHIkkL5zoNbDez7iXLvGL1h+2a8rZZF+xUzoHYRb+c41Pl9NpQVzbn1kR+CQH
+jOaX2Je/5lj/BJnmofr6agWEMdXkCJfwl86S3p4bfbLCE38si8PO78Tci8hrHNLB
+vd1qjocjwVva2DXYdAHn8/S/5yLTadzBFx7SBj2zrTtxnqw1Mp4x1gY1Xl1l3zEl
+Z4p0HaZIdeHNVLPAx6pQ5uctciWrKYMmHCpV8UQ2YjzsgZIA3jXhLMH7RxTdCpG1
+HKG39+minFjkg/b3pQg6SmyXCIAWI8Bz4nBXZNoKPqAoefbaGKjYnGh4U6j1FjZq
+Xt5anIS82qP9+skOjZtHjRtOS8op3ASvLaN3g/E9y96pW9f8df1e2lkMlKmzPr0/
+OdMbAzPUfE8pWj7nSuf7dMJzVzHWkGkK7ZsQ04OveUmglABC1Lk5YPBLtBfif0m+
+vi1yA5jtofWbdqLCXWRn9XZ1BFvAKEuyIIcvv6UsFCv+pWGOIBgEw//8sr6O4qLc
+SkdZm4OpruDb8iwIZ8vnTZAarBDiQ8flRi/4jDv8t4p1oDQetfZ2aek4foY93qvR
+cNAusy76BB46flLwZB8D2G+rOrGfE076num1ZyVgR+j0mt+RYw7AJAeTmLZ1HrcW
+322XIts/nmnaJItUC2N5G9hSY5NTAj8/41dS8PygEvicjjUS4xVGBSD3M1Dg52C8
+xeVcS8iFDZPf+ecl3xyV3IRss/6tHIwYFy16TSsGhBNQDM4fzsFjMFwejfRgHNkv
+KqUlFL/Q4Q9FEOCgw/P3RdugtqBm4Hk6gZBAtxuZkCZnmcwIzmWvElTFajeK3Qp4
+RXZ2GQr9ruJe14mB1mH7/9DDkZ835+hGPe3xOdoS8B2BJJTiSqOj90QhtNQhnZqI
+hmpgfAY+gVpfNYDFBmpPHVZMOgn6Rwj4Bvb8i8I3oVpyBi3hoo47a2lQJ0qty3qt
+uBxBtLIRS459vbVS1wT3ZjKekPyLpbPr/RjBJNvOY8xoKkvsSW8udohUg4FRlX56
+nz6jR/PfR4Hk0P1rTEewmqvn5LDu6kwU7OnMZ5xC+jc5o4XZS1umPEKDU9n6k+oM
+g2jA22QbrrS86LIH3iB/S1E5cbdpxh9FQEEdIHFn7yxbXHijOtB94zEKg/7eMjMJ
+rUB+cLn6hHeBMMdu2fSPz3a7ZK1PnS8TTbphd69g51LYtNXezL5eJCKKoXDuHvKw
+Zo41OhhWGxsHVED1nuwhA+Zomylu3nuX7G3/r3ZwuUk1XpO+E+mdFvXpE/3M2eDY
+ZV8PN+MP+/PNCWnfssjNYFlFijrNnKUOzHf1wXrs5Yg8Hw8UJy3CCo0of6x4yZKG
+FFFIdR42W6wVP0Hp9++ZAa+ivMDWuBwD8IQfvaDD/S8v1ISeTuQmegfO2roxe/E7
+fG+5+ltebaXBxiJZ/qJL5oVktWwiPi8qO//RlAkMHSnlMnCzVaRkf5Tuvi7wwKl0
+mAenSDO9jg4bt15ZEmmDQeSdAGN874VHHsC/o8FvwTnS7/tOyaNU3nb3/Zy+pwUy
+kjDwXOiC6mi3wpQo/fO2LU05Xf1RxBlYjqzrFHCTRp6cDc/9x4070bhoAV1t0tSm
+CmyeTcKxBVf08xmefeBou9tWz8sDuLa+w1kiR0WgPX1WlWaR2NZS+Vxf2aHKJZ16
+3i0bFnexVIJr8WIeyeq6IOb4uJuqhIxh7zwgxDBhSs760vzhCm0TgSBjW05WwmQ+
+6FfDrvFiq2819eqMozl1mxqAuYKHHlP4N+qj1GCYVxWXnNmzezMGFVwSLa5GclTS
+7lW+smVVsOdlWn3kJbzHwAaZAEIr9I30u653s3ZYRMLCaB31bnpcWqAOhYBfz7Mp
+PMPo9Sj4YM5tbTSZmbPVCiUlP2B8yFqDKgmGiuKWdp/a0RNIAJCnwIQLqGQlR2pE
+ZhPi2Vq5oVQwhWdy1JoDTD7k5AFVb+XHcTrk7c231v6/EaoRzMkQ8TfF5R4cR4h4
+QVNckFcE9W9QmqFM9MReJddP5b7r0l6juBrHq50EtDtAn/7qctbLfcyYyr57Cm3z
+wklAPkGCAimd9O6yVH2XztnXpHyQRu0yU3yY63sLVmt/ujvsRLGbU0Mh/bu+j8rN
+OlIV9qi5r1q4JLFyCunUTvlNdPuLlQmgj/6hIfU/F+7qG8XhUoralT550faPEwDv
+rsZjCOPbxeoOAeZDQS0z8VSTLJMg3KjMBIvL3Q56pYVc57nio606VQ0gqOr6JqDA
+wNy7tPS62LqNfeIOSuEUQ7Dtscr5hRHlBnOFaWhQgipXw1onnlpLwKtmmP8isjje
+SyxuixaEfxE7tCmovFyLdnobsr0s0QS83txK9vINWr6RCsZJsuxsjwud2va62xkd
+rDDkCaVrOg/nlBPvL4x0ozawaHGt9DWG6ZGHSUFkAV8vwRLb4JrXw8F8CG405Vdp
+y1HWR36KblQ+LMRbxcYIwRTc6ICSx6SDze07ckdRWdEytB5tr3SWOqKQ49xL1h9e
+IN6qJSNdZPaPd+6XWsQasdy41S3zD9dKjBsDGZIKzltoplt2YGNUNhbaJGDZLQTW
+FMSDAd90boRAuWGF2zsbtoDTj+9eb7jpwcTrrVzA0Z6wc+J4hbofM8LeKvoLne2h
+olqMU8ytp+HcLtCW2XZN/0cBJPoMlYCLsQvGsyyDcP5CBHSwKljKwChTeEo+D+gv
+UX5u6ZoNxd0/k1dD7DA32VfEui63r24RLYRBwHbNOmza6Rm4tkIU0h5/NPrCDfIG
+LRoAQOuyCQ80pw3RJAUKRwgSoSKYBTAOdIvL79oZDkbJ0TDkFAjgSyjiwXPTIVtP
+ajuGm8y+RbCPb0tY33emsxkESrNZIEr58vyhxCgbVvBRWsAHVfEz9EqFftTeAXWo
+GpZT1YW+wyXLxeeySm7LVEwvbOV+VzA0v2PFCGBo3OqxioPqHqCwQyQMvGOFZjbL
+cbiNMl3a8N9azbCacFfoMSnfTb5kU9J6HuJJAOtIGJaMZfcyOnRQqi0LtHmFboXm
+e4yi7JIALAnVmvscB6cjZyiBJ6EwmAh/F2CJVFX3kXhXQUCwImAKTUk1cWWhtxC1
+YQoSfQgxEVBoeqCigYCaXyULyF146VSipsQIaWdfVCbiHH7CgVYkaTK/3Nap8Pso
+UWD3HymtcghOSfRsJayhH2NkLkD0RaOOgYmARKL+zNRGhu6t7rRDzx1NrFZuPUfO
+mxG2pJ7Dr9NqW927dm/epG0uIkM0XVJ0dxCfHDqo72IhbBhTQag/A+gmSFmkNAOq
+Cj1PK46Dzx02UsNXwLOSeRs9+FbZWeRMceIaiVl69RUkC/Glhgik6LPcl7aSzjU4
+OItJYcOubXg11owyzpjoRiZQ+QmoP8rDfAV0tBLmVdYpZATgfxp+QLJNFOTqAVY8
+9wNbFXPa6SGPphvWwO2hvFfzT0sNZxxbBTOErJq5dP04c4Wu+5cCIG5dVCXSCHOn
+e/jGwDgr6yLAzxmufp1kcSP9R3cwqOe+R4ArUjdTQcyXY/kOGhw1xpSb1YaVN09W
+dntobpyYGmGl9p9ra8lNzNSrvwkhF6fVRGI6FhcGEhnPkZPaEPrCooorheH3sf+a
+kZiMNHY4HcMkNJH1G1U91yEy0Y7fYcSwe1dLcVIrp81UKvUUPSNefom88mSVU+cL
+QnMbJVBShJJVHWw7hWWfDK2Jz+UdAYP11p+OjUFJW278fK5SQ6NOxqF89rIVxhMe
+OrbEurazrKNhzu5CFROfpN9CYHW5zP6LSepML6cXCAuNgypJEPVIEof7v7SO3uXL
+EzNvzskeHOSDilrYXtKkhka3jDkN2tafW8Qa7IurjITZL9eOMH3xkF962BOKk6D0
+kJg/qKlFDi9DaYNeJQVUQCB4gvH6xaZ/LYJm7jn+TcOrEleh4Fc7r8/QxwJQXvZG
+yJToFkXGP/klDnTcg/0mjinMnyXkvTy4IEeF1nvUv7KP73YQsyOh8829ZvCRsaeW
+kE5aCvl3Zml/q+nrPVEosKD+Pr+X/zD5PM3Q2x7w8ydCW6oIaX32xfJLVaE6riAl
+J5imLHKfy4MjhfM0wLuRMXLRKCJHc7yKoBvgJx8N1FnbFqlzTp9p//1s6AB3P1Ch
+KSr9w0bSNvHzEvyED2DZKaP/DWoAHx3wciU9JCthLh7FIVgwdHZsY6AJXjDCcVuN
+YSX4CAkynfG9nVqHsi2X7DGt+p94q94e+QmRIK3K7ELRevVzgX0ukob40lJq+Qv6
+WgB8IE6WyMSRS91hlhjcocshsUPzQqm7Nz+0EPSaxTSoqbUl7Tsl+lW5rUf9dYyy
+ofNM4jybNxOoiA7mGVP6hSshpC5mCczLe8q50EEmhihuZV2cRr+pDRFuLqrzu7J6
+EWgh1h6EMQxTEi49tFH+iCPztXfPZJMmT5FePQ21+rX1kMNkyaXwjUWzSS+X3LoR
+VtBeJNwNUeJND6s4R6NRLfY0aj1cRyJT28JldAo4LjxemOVtiD5ZFA0FIR6qvW86
+pF2o6fkdkEePOkwf4gmVTLrrzzKRj0WiqBFQqyRmiPPArqrajIgNhXToCG7qrXsX
+8D2aHeVl7b4wCN/Ez9zYVVWNTA2MK/4LwWwZVV5jxQ0nTJCUqeDVcHZnzaynwfmc
+5HiOh/3jC8cujMEUbfygd1EozYCPRg+xs7UUOMDBIKpjddAl4U3K4shWVGg6q5+s
+P76lxcr0KPV/zMJl4VCXD7Nlx180RS/pLsu28tr9eXsPWZVCMPg1AreE36Edt/cK
+oXSh8NdB28OoTPNeSlY9DCnt9cF1djL8VJ0QF3vFU6Xs4fb1mqh3QkAqHHPCwL+J
+9EVyGGOKjJfQp8+f90+qYz6XHVup9jzqcmIYvNYsKT2RxtbwVx+Z6GETuRYI4FJw
+GkbNWil6TTBH2rgEmcnP3CvJzEsDGO8MGAckduOM9JdDLhEj1RaArG0Bbj+zP0KS
++1YuKu2tWAIIDTRS2VzIbVFqjc8ml1e6SkbPjzji4FgZe4ohBZbxYPDLxK9yqOeo
+KnCE/eXOHQl28fuGgWZJ6M9Ib/AEGzyFC2F0za6NAXHrAvLX9bKBW/QGGuzLggUw
+tcFiWki0U3Awpn/uVFk/7O6gVAEJYLZHecUTt7GTYL4Y/Ru1s3o+Eh4cQUcT4w4C
+VKWnAgSNfe/d85IslxZuGZ94yOn7jUjR9HNNm9ykqjl3e/IqyTpnmuXmA5jbRzXy
+PQ+khRosot+lUnMOY10A1mVT/7skma93hUddtMvMRWGZ+LgMNC2qLJNTDlj6VQn+
+OPi8UEOIKlxxX3BA9u68BEpAQzvGtAC0h2bLQ8LouDcPJO6j5knRf7hreRclZsky
+6gOBsykJdtjuVOJnUcl/X7ncOzOT/HpP1aXszeU+OJlC3jICNaTesq5H0MO9/5Xl
+pb0pltx6Ll0V5+MxEMElw4s5rdqPKw9UgVZVzD8yHzt8+bOdWw7qyAZ6L/ceDp7C
+VS9yXF/RgA9mVFC0Tz4D6im1aEsR+prxHJWbje2UQcjplptZoueFQ5QZ4jpEKF6z
+Ap0yeU7CHJpxNbYA5lQslr8Hdhh47MQiGYmH0iiBsWf44MaENh0dafB1sKFfDw1e
+2gPlegToPNPiG0yQnluliPVq70JdO4ri1nnDXu69+gnFSimnZ9LTijW9rk/K8izS
+qilN9giT3Kjc8z/itJBwF5SdfNbidhNpjQHq0otPSbf7v6vLGxNHT7gx9nRFerxM
+c8ISjIaSbwspaytzAFfg6VPz79axpogaKNpcj1ifXXs1C0D6luN68qaQwPF+2ugB
+rUFmeUhmLPFrn7SKkJwDMuZVkoPKZX63k9KmXQHrZgwlYf6ZUIlWqUPxr5NWiy3I
+AwU9v+1/acqmZowHa2YRLoOVTfBWrW6dugHxxdkD7agDtYDD2aXMIG6DYRYLRyQG
+K5UStVaJmLwMY0XoxhbHTaYiRUSwRnUKsmJ39XvUIO/tinZCCvSCCCNin1BixuNs
+hZg07cJprziUvLk4FO1KRVzBXyJ5Cswx8V9jqJLkjlTqSEhNUuHPzokVAh1ba3X2
+SvTc+FWkC/eLfoFEdpGUY2qzPP5KCcmAG61MYV29Sfj+vMomx7C3IIt+sbDyWpQr
+g2TXt+gN74G7J2rYjMu3HPriaaYATnjPDsl1pA21ms3SS0dE+1nuxyfGmDLCsp8m
+MqTM0U/FceszKZtlxUAiL/wAF/vDzR9T/hkjaF1eEy2m+qYw8vKl0kmIjYVZtPNH
+X4bv5EG30G1y6SqjBBg1ZqD8SjjGRfNjX1q4GtZ4U8pPorMnLFVKzuPSi9eZto6G
+YhHG6FZliEWcR81ssLnza7nry++V6yuDBslWiJSjQzgDWxkSpNRgtMteQ9RN7PVA
+0AUzWgDpUswink12CXRNHlTLeDO3EUahvgxaPSgPwVu7o0syuZDlizLIyOvSjdjH
+mQ4CU5AEec267PrM+zKfwFYRYmULqfwSCSlgykIS4+/LVviMa3RadvwnYkMc/sVv
+HMNBIwICcmzXRsDCujSnm7Ir4OaKaimPc9HO8xTaI1wggcqLH197H3el5VA14GcO
+5XSx4RiphJFt0pPgAJpxoqQQ7h451bumaqsGQNMjTsKp4AAh3ZVop9uxvzwBNE6p
+f5Fy2UKIVZdIb0UaGD6BEaVGTx6MR3ZmiJcSy38nru/U5YMAKOPdfns/qc7PglRf
+pucZqQa9uE30Ao9zLduVWVdO/oUOO6DhhTwdIPrZ7VuvZDH6J5EuX0iAml8njb/J
+yuE3S+YQmSOrNdEOb0zBOH0kWIQ6i93DkbrU3f5L+iWL+ZHs3ANtC31r2k6AWfuL
+PF9rZmmJbz6lOy4izJxsweh7ImJ/WuQT1vgxWTwFE6L2ywzD4b28xeGReL5MCsK8
+BxovMyxEJdWCuPWESsIcTmsjucSyv0El12cjMersOjvLn8MZm+TphSsI9eaI/2Sg
+ACfkMkvxanSm+oy2PsocPt9+/oNbKwAzKbcQ+wG+SB+hw1ZSjoK47SKLPuSF5rYk
+0oxlPwEG+wLECYjE8fDtonvT0parUblBXn2M+/PxEVAf6GTit2bb4RdQf8bA0PZJ
+v0PNxuaejkK00dEbA4zY/Tpo30RLYFg1L53Cwy+smQyXPQk5k93CUoNrytaPF+YT
+Z51O9ZOxBv7Gq8f3lEnowPVvqDVUVmEdBk3zWCKCXpwLBh1f+fdCIOMim//31tRj
+q1cLZNidLe/7QVTtVHGDXnL+JS/WzHFP5lIJC5F4hahlTxA+2l9D4YuSPpch6Ssv
+BUN/54TPWn7kLqvEUyGcAy7gmyY/MaWmiQry9h7NYjsuEkF+7po0HbQ+VxJH3qfx
+O4CVlxcn+IVzIvRiZJ5Zf+INSWdr6DPGTTJAXVrA6oHt5VYf4I/RbjvE3lkktUEr
+NB1/PkopzX5rWe6WEC9SGhG6cuD0oHs+LUFwXq2AchleoRriyfP/PnOE0qm1LXEb
+gr/S/D8gBvGHfmjFD4XUk6WOQX3lCGbkLIucf6uj8SqJ0MBV4ZG5VtylJ8Dzh3PB
+xsGnC6MUJBXl7t/qtdWKE/+8Gn9vOSpAWTO6h6q2c3787drjlYPHCSb6y/N6VLWh
+DUDjkb8Wedj4wpkri2CnPyotc5xJnyEYuHCEtz7BNzQVCqgR6pPagBJs9ebeSe9A
+Bw9TluP6D3LzVBnYRNH5CxHcH/XJRZK46yA37DXByKmc4naBcO3tDXQf120yGlhK
+Id91U8U7MLMA3/D7u7No05nbzi1OxxJPWOrAWnGHrl+tV8ZE1gGBL3mkmCws6KtP
+uZqQB7CrPXH0I7x7uQXus5x+bJagi/cBsllosvJisPMrzi68Ms3LirjgDhsCkaE2
+uCboBWO0ylwya45Ze37WLs89dt1hLARcWBfJEJIkqPMIRNc88mn/yDg5CQ+f7oqm
+SsMHeqXQXwJZBGMFM4b9h27oaIbXHq609EAhaEkZP8kOmG/G3A/QQgld4KcVPN87
+TZPnkThZB5v8e+VVGM7XNhS65hqOlSGf+DZJCC4IdBaIDHROoYazaWS9HM/hBQnw
+H8wOWnFrC4MWaG0mBxD0uQ+QWZDwqWoGFcv6WSrO9YL6tMjUKj4/i5zpj9aDcK8Q
+najlHPaxFYrmd8eFI4atl5tkKauovlbhghbH/oVmNlE4jqzIPPv+6iUjo6+whOnD
+plQ8PYg8UJCzE68e/KYi5aRzwIKPiO1st19mJ2tndPIXOZOQgSo562f+/GlE0TSi
+zRVLMai+hPVVdGLFSx3AaNFL3zChcIP/4wtUYxZozP7Ed8/7RfdmRj1OxpnfGhW+
++eY+QcoOElsCKruQa2LYKCKnbdSiKBxqQwZSGHZr1wvmiV4XBq02mLsHYj9s0o/O
+r1ckDLwBQXQG6/e0tRko+QJXKqp2GtH8darXNEtGVk7zIa6Fp1LBgIVnjqQTv4Jd
+k3KAyJ2256YXBdgVCO9xhqK0pNYBs7RcBpAwM6wj8FTIiUQ15NinhAGp4FbD/0nt
+5DRM+tvEFOdN6AARAgNsKYgkyxYVPyvhZpz81qeIUquMhws8ho9L38or6+1bdBAv
+jNKeKs+wYHbZS77zUX3IDJOOUGwEcpDe0z4iD5F8d5epwy/92EPBrlm8Y2a/A29Q
+gKc3HI7o9NERsY5LU5GqNOPkZOggWM8CKolEz6yfMiae0BKw39OOZjM3kfwGavcL
+rztEqZH8ywuxHz8eZUIi8q8bhG3dSzQngpS9pPxsvDGBtQ4o3Cl6yE0ygj0xQjxv
+1CPRtktW/RZyjI9Lo7pv5MYuRaXLvRquZCF6+8oNAhTQrJvTX6apLv/Bl1ynvUKi
+OzzpuOA7GD9hVKdjvuyGcxUS2T1OvRUOhBVtTdd2OZwsjparhKjzzIL3y5C041+9
+VlqAQ8sa6xqs0wdNVSOSi+PsI3JOyiJ2sq0jSS0+Me7H1+4A0ai4vqg1mlLDlXMS
+mI2p/DzOaXQDRxN9ml1m31aF8wcH/2i7DZ82duiR9qtMtXE1jxs7RAiDhcyvYT5p
+8wmgYJkjXGxwPRqLBPCYvKKGBOqGNdV/NUXJCf7KjrBEGBtofb70jHL9M0jYGwN0
+mZCPisKC25QKt9ZLPcRm8msR0ti2k2E2nsmGoKDkZvnNVMLdEA0u45CebRCBUqo9
+3xqLdTW94QpNI4XAu0pA9lIzRAzez2/0NJozrOuzScbX612KP41p+6Ym/smba7AM
+3erST3vHpCcGvh9wgioPlKIVpC6iFgWbShmPNRAVecWPYnHwnw7LSLcOkQdvLHCm
+U9UUvO5nXKBQZhfE0z/zlhL2URvV6j6y7+ZmssBdIczagHw+SLyAa9TclrlGDpgW
+AEJd17gWkzAyZBowgYcvXfp+htKbv68O0mxm/iVNiF288D5SN2QgwCIs2yd8/08W
+d8uIT/4YuDmVdaMwq5spcsJXYwpLzzckgBAAUlfZpduUd5XDas/ePTt71MExSc9h
+okedq2hcbraL2xgf+Ml6+H0fzEgsNoyydAIacFfuzWcqa/vPLLdYSBAEp8a3mjtc
+Yxp57kJH/2DExO0WaqY6sBKDgFvcNwLgJaKaQU5DyxArrqZNk/HLMAc7iKTBNYoi
+/ITm9NqxLJ7iaoboVaMu313skoRTQAexCgfCbi3bHnu+09pKdqrYw6Xu5WcIg+JN
+Vj0kessoTtgm44DT/jjmujG98CSvI1jG1l4RlhRe2vjMi3BZ6Uz4eF/xAwp1okhi
+MRwj3HG2ymVg9IoMWnKG3DZO1KXZTTM4IwTZVuYEKcNdvZlyZ4in9c06sIeFViPq
+JP1Spd7XDu3CI0s7SGstRwwcG9VB+q1PJlDuKPq3IG9hdoolGf6Gt/OaCo0UtAuo
+iXFUVNFcDW1tXTqlwttSHiF5T/w3Ma9Q7Y0zRidtqU4b87/FjOHlj4S9x+c9u6x8
+WhueGU+1B6GkpkbsduV1JiaTXKCo+f5/DMJ/vxAL75SlmtrUB2rGlKNzK6Fmwupl
+0n3XT3IOAN0hloJqBFOH3UyRFQjT0XVI/vPrqBLghtHguFx/eV2ADwYOnEOOkPjU
+9FsRNevix+td71QaHz7yvWs8/57YXMU8YI64KITyvXu2WNJts6G0tyB/TcBAL8NV
+eM99LElCOhN0M9qbaWYR+A==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+GI9zPoGKbJfy2uLvVqFFpipF7/f2E0S5JCwnjimYOsXWBfeTRJgBk40QuB7U6ppk
+RnRJbZv2OAchR7CcU493ey11kvcRu+CeNfDt8W/FwNevjEwgx6j+pAQG62JczJDr
+o/PnmspeWHplQXZHafFrk5KYU72ihYx7h/trZ2z6PscwC7iwkq6yxBspn/mTNfsI
++8dxS8+L4CJWMqe4N2/a8p/cEuapk+wDl7ZL/KiR+F+DZA56sm8QfQ0Lk6Q9Qeqj
+hYmgKytI9gqPfVFnHs93nZ3nXu7PLVu/OVCtpZX5R1lTa6klr+sE+NzL6Ni4yPGd
+1AlzNXunjlmbzVno8FSMaA==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1824 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+FriMp8xwFwm0LMCvekNwlbVBo1AZgDrmVtXw5xoD88CNjKwH072pbhCEvnL8vRnl
+vwGDwLxlRtlWQ4sJTitZ35eQEa1/sG6RQZQgx3YRT8HTCrZEOstluUKNA65H7R5F
+RrDJXRVBFyM87875G2KnKbK1qciEHc7doXhzDW8cxk4WNln7mBb59Q8+4ulz7Jfb
+6CzMT/u92j/YQMXR8AhnC6Pja8wdJWzpF6niWmDVnN5I/Cn5/moWgLPZcQGs5uX0
+EE61iFIk4nVjslZ2wvRuE2KADoIXbCvvM3dB0EI94cVmNvXbWccVsGk6CSLHTYe0
+AJXHTXUxbjKoGNyhUhGkLQ==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 41984 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1ns / 1ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+MTh6YEb8fd47amN2cKNawaQawHld8lPdghxaCndTGXumotjbHWt413hSK/NgcsEo
+Gnt8Whe7lgFMcFazYmT08o77uaPY9mP8ImzOr6doHD6yp21HOzTAKEHU93tMh13D
+H7s4W/dTurxPSDUL0ipbZxO2VZAj35Pme2xieR4PHJUM7jBgdbYEn+Y/ioiS2oFl
+KywnU98yjp1OAHaQ+EEa9TUS25IEaVNIOaiFbTaJX6GYvqIgtv1piLkwfSU3PyRz
+bvLUm4CsqqlbZrnuxrc7aAru9jx1Yw+hae1UzJQEJRnJ0xdmSx2wjq6SvVT60BfU
+tM7iyI/3vbP39OroA7oiyQ==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 27872 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+GgbHzgThm+pxY8qJAenj6M1nMg+PiGn8p88tojq6cijNwxinCZAmPODaDelUBiV/
+7pt9zFVTV7grht3KSqQVNS0NNFR2RViANJyed9qeVdSo+i1niQsqbPxS+dVMrEAH
+GLcA4c87U2QITQVVg7mqbwa39eel3uSw5jIs/cPWgUVZwOX65uNekkTj2RtXHhFd
+d0pI3dQoLqLefXHWCbn9KLkxN0XEZfWthZgyZS3VmSWHt8u7zaOvBv47vhah3n+9
+KhPDKZWleg/lH12jwGNtIA+ITKMLpp85nyYO2opdw1uFpHhBC1eWGDzHbnzEyKPz
+1lNcyRWK+pqU/AY4z4Ujwg==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 880 )
+`pragma protect data_block
+a2PDY7wD+DHw8OF9GdySBvuAv9crSSeitt71UCe4rRD8aRaQ7B7JOb87rVKNaP+Y
+P/pNSHeTA0LgZbqqvIaFxo2MZorvxVDPD9t+dcY2+NwzC+guE60XPM7TRfEWjuoe
+mCDMlV1FgD1JBxxH98/PCJ9FdWIitffatZK/6h0zBd1y20gPL4NCldEah/0dlzsE
+ZYlSpoKDOkf4ffYl6KkI7rK5zPl/obVTsYxOGLgnsUf6KPLFF8wfh092jhr35joP
+zJPi36aMCfqrd+EVpO1Ba+4f2HgslYMGhgxzSfiDw5+qDox8mLHJrH6YiIkPecqY
+DWXyb9xcF53f08/oAFMiYMqaYQZqy0QHCrNw79H6/E15d6BdVnG7SVmAlaJXlAQM
+RB0LmInhsRXkwvijDTY656LDiQHUezuR6a8w3gyVo/IODO1LU8C2HZj4/NLID8GP
+/VQhkQDYOCWzMwG4flLhavf8TGaLmmcsLpB30ad2uGLu5GkPCWLw/xu3pPbHtZSH
+QvuUOUfXPzCXwqDLBvLC0Q3vQktfghuGVwl+G5IUeoz+79V0RJxBwiugsA+9kSPc
+adazmz2dYTZQg3XuS5fEwjW/PpvmI4AO5L/to3aLL7ScLIXVnAFG/RqthmRn8UA1
+UBBmFSbYLWoZD9+yYC5Z27zL4cpg3aO6/320kboJd09lPyT9dqU7J0sepyAHbSBe
+8I/h4S3KDUpk0ZY3p1dq/+WbAAJbFbysshRIobC36fJEPf61smM2n8MSfy33wg0J
+Zf7Ox2L7sy2gRSdjOQdz4ewzRS6FowglhyPo5GJOkEVER5oLRxLwmFtNNZ1Z5kgg
+/YQ2hAsi7TZWcksSfpM38VL3yRExRkYApK1//eUdZLGG3B0XNL3kMCvO/w7/UyDv
+KyZYuYh3rOMk9HN0unGrAYYK1rq4HRc7d+p04AtPql6+UFkj4u7mNkP6Obll0+Xt
+RtzuEQvQ0hZvTswe99AhgjofpEIG/YObN9S/FEHmYwBf5CzOg442K4otNJ9USGp6
+xEXuVj4EGsrgId2plsBHWdHiUVPZacoxWIRIEpW3Qy5PXHqYMv4rwxPJAciabt3r
+gKxplQKOCbzsgNb+UbbiNSVMtBIAYwgkdUZarHuethhgz5M+fEa+AqiLzEkj5N+5
+3W39ohLhggzKXrAnuVk7fg==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+module `IP_MODULE_NAME(sdhc)#(
+ parameter VERSION = 32'h10,
+ parameter DATA_BUFFER_DEPTH = 512,
+ parameter ADMA_DATA_WIDTH = 32,
+ parameter FAMILY = "TITANIUM"
+)
+(
+input sd_rst,
+input sd_base_clk,
+output wire sd_int,
+input sd_wp,
+input sd_cd_n,
+input s_axi_aclk,
+input [9:0] s_axi_awaddr,
+input s_axi_awvalid,
+output wire s_axi_awready,
+input [31:0] s_axi_wdata,
+input [3:0] s_axi_wstrb,
+input s_axi_wvalid,
+output wire s_axi_wready,
+output wire [1:0] s_axi_bresp,
+output wire s_axi_bvalid,
+input s_axi_bready,
+input [9:0] s_axi_araddr,
+input s_axi_arvalid,
+output wire s_axi_arready,
+output wire [1:0] s_axi_rresp,
+output wire [31:0] s_axi_rdata,
+output wire s_axi_rvalid,
+input s_axi_rready,
+input m_axi_clk,
+output wire m_axi_awvalid,
+output wire [31:0] m_axi_awaddr,
+output wire [7:0] m_axi_awlen,
+output wire [2:0] m_axi_awsize,
+output wire [1:0] m_axi_awburst,
+output wire [2:0] m_axi_awprot,
+output wire [1:0] m_axi_awlock,
+output wire [3:0] m_axi_awcache,
+input m_axi_awready,
+output wire [ADMA_DATA_WIDTH-1:0] m_axi_wdata,
+output wire [ADMA_DATA_WIDTH/8-1:0] m_axi_wstrb,
+output wire m_axi_wlast,
+output wire m_axi_wvalid,
+input m_axi_wready,
+input [1:0] m_axi_bresp,
+input m_axi_bvalid,
+output wire m_axi_bready,
+output wire m_axi_arvalid,
+output wire [31:0] m_axi_araddr,
+output wire [7:0] m_axi_arlen,
+output wire [2:0] m_axi_arsize,
+output wire [1:0] m_axi_arburst,
+output wire [2:0] m_axi_arprot,
+output wire [1:0] m_axi_arlock,
+output wire [3:0] m_axi_arcache,
+input m_axi_arready,
+input m_axi_rvalid,
+input [ADMA_DATA_WIDTH-1:0] m_axi_rdata,
+input m_axi_rlast,
+input [1:0] m_axi_rresp,
+output wire m_axi_rready,
+output wire sd_clk_hi,
+output wire sd_clk_lo,
+input sd_cmd_i,
+output wire sd_cmd_o,
+output wire sd_cmd_oe,
+input [3:0] sd_dat_i,
+output wire [3:0] sd_dat_o,
+output wire sd_dat_oe
+);
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+At8NDOCc4kD0cT6FYsAsqOLQpaMw3bVfTTiE5FP1gKwP5J3rADYscuAA9znbPvis
+MBOXI5NN1IOCBhY8docHxSOtWyofhmco6KiZiSxlTAMnmzRtihgtqcUXsQWTNJTE
+7whQH53NWjSMVPv2SQrHMa1RpUZnyo5STupbfD+3UW/HzNlYy+PEUQwYAxlOnG2M
+LOVENWcTIh7UmStLPYTtgneJd8aOpL+baFyO2aNiHXosS76QIqvTKZQ17Q03p5K3
+i8PCPzCbmM0BxPP9kfJ10GKVxW69hi9fUcUUgGpKsloUh/zrI9OINMKLSkzf1fVU
+lCxpq+G9vTz3hl52Jvm2Hw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 47504 )
+`pragma protect data_block
+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
+g9Kl057h2u2lMOEJgq70VItJ99VW+tFKY0o8l9LKyJa92ZQX3XsSrCQ+nRlxMCKD
+r6/KZWWo96AvcS5d2knt+bBJNLmYF9VtS9CNzBL7FuZkQw16vR22eANYSfd1Ggel
+PPHtcFNQV20uzqjbj6TReU4KUftRlVi/+6qbFQcifMp0i+Ax+dq75f+qdP/hdNeF
+cc8mnNfOdtgzvYUEdHErZa4cD5FIvWpPmCna2dUDyrx9qGnUcM1i7ZPuPicztytl
+m9dO70SEaTTexJGpHABSBR5s+COzt3ZgbzHaQZRIBQGrBmvxxVKQythOhYB5+k12
+XeAlHYjq0tK0AUfaEBXGL6Jo2B9dGOA4oVZoPOr42JmVSCTiTnTqQ2nIJ2QghPlT
+HM+IiJ2EVQxxK0qUzaGYqzhlrRfmtBSGR0YUSMxdjJ1qDghhaVDFc36hvwPHJKh0
+R/sjuL7GbrtsrP0u7aHym/WW+kUMzjDKNS+R4PUd40L13M4NxN7OnJj65cWfc4gP
+5vTPwMq28CEM8Bzoh3ZM3Hx//iYgNA2JyStsWh7V86RB6G4N5eDyoW3+Qch784hq
+fyb18lNgjhRoZItQqG2/EqNfZIeobyVO4703Q8arNS7AXWeFD3dx9DVfzQ2/f151
+eebY5tMV9YSnxsvLn8y1ZWa3J2ScYLOPMRqxx8wFAN+eGdnF1UfKm/eLA6TIgrbs
+YEpVk5KjluTD9b1lkuVadmyOBV+s2YynmbqZ1hg185TiT4wM5YRcPmZZXkXkOMAo
+XLX7wkg1XAU+Gk+P+aPKNZeiXSGsNN0+7xreyiU/x9CsA0P/DUvQFDcaBZxMQKrK
+dCJ5XrsiPZDB0/xCztaMzeOHLNIS96HVzJRCH2JgHBrWXIhBHPKGcXMTuS6yhy8V
+YjMvPfqft5RrjQXMbz2yv1lZuKRb3S0DM6W48DX+D6jbU5Cw/b9YeIZwaAViCl/8
+wqFo2r01Eo57ELkhVes/KJvmiMPSzOXFYweUzgPGYrtO1yrGPsomiPdd9NOVy+eF
+hUDZB2EgM1+u9JbfSLQIB0M0wr5LkyCksOXSnkaCGqbqOuFljwoyTPT6uNV1JffH
+d6T4sJbWLkK1eUsUi1p4wUpled3kfpKxAF0z8aC65f4+5mnlc3iz8a7OGzVJLIlT
+HrBl7QBdPxD2aIKMrUriF7ezrWNGS1FaGOcIVmlP8onumsY9YgCA5cOa13bGCunI
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+J7KosW2ykKi5EFdAMLz/gyhLImwj2gD50cyEdEtO9kZx69ZgsPaqC2N/Cju0QOVu
+OHSsUW3EwVk2dnUxhFc96WyyvuSeNjGSIjL+g0hg7h7U19HwGkjyDWXxI0FszAgU
+8MtLn0zyRn7rDX4WKBW6e0eKZyxA+4TEGoEs79gD5JEm5GGH/XXqYNlNZhIY7AnO
+PM3n/egkRGqxUxmVys4D/HKwWQJqiijl51581+v420/SeIz8g33QCnsj+FVv8FQY
+rG0UviGcyHwANSYYV758eDBgsPuT0uRiqdzQaml7Lr1tI9riDfjD2N92Ga/lsJ2Q
+1vT8YIB5wgEhiEjyQJNk8A==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 2848 )
+`pragma protect data_block
+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
+o2AWhMH0WmP0QLXwjMSvXA==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+Qd0gHlsfc/XIgslwDiE9K9yr3xlKZY7dRCEA4nolcKqvt+nIsq3FL92/SaoeJGIo
+CKSXu7GbU3S4jqPDe0b6FxNbar2owJoFHYDQnYxbcO647ljaPpBiv6x03zTZQgpB
+M5+cIbxDDXPyUwmRJLwZAuQE/U8ywGMFDSApNib2YZPLO6URh/xvjhMIO4/ityTH
+GRv9t3xhHHvyPfGB2Oa10v7Y98IptlsmWMPEg/cI/gRKKUNcEiTJqTmMFYUELkF+
+5iWuLPjdOzB9CLSbubxWA7at8ubRp5/EFs8cAmvD+yzglC9Txz5rkR+x3ryQkXzr
+7HxEV+XcVvxiezPBQv4Sog==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 2528 )
+`pragma protect data_block
+XiV3gfci+H3rlSdIMWTxzJU8cLPDqoapCBHln6HDS8BmHn/Fwma0HpaXbMxwsDc7
+m8P265VvSuSMBdnIc1kZNyhKrr0lmSQgF1Z6+4PdX7502xF1ztSIj0FALgQfGnC7
+6emIbDmkjYr0FDhelXSc3r5hh7YsHqGr0AQgUEOT1QykJleSgdfrdZnz9PrL3FXQ
+5jBZheIV5/d+P+j1A9CifQ1oFaU02dQ6sOEnFwiPSqGG3c0KPn3RptdK+dP9SYR7
+e3PkVS08nBuXUyC1wO4/qmL1XAsR16kE5nyxbp0ssSmf+WKvDnsyhS2Lm/S5DE3D
+hFBouoZKBO41OqKEaOPqE0hHmY8rZ+UDiZ6FpSfPSypgzwRBKCVLHHecjUSnZClU
+pb6PdrJqrlZqvAMw6snEDn84vJCY1DtbZ5tkLVbzobw4d/7MXoxjfkMwBdwVWymg
+Wgpu2XZ2g48IvQnd22tr3bS4G9OG2ex3fPbaOMKY/LwaaXb6F91XLsjziVWmPR6v
+ODOmlrKyknnsMJNwEl8yboPzyk1liTeCxnDRS0iCxPC7St5kY0A6neB9EGyXnFKw
+wj19sKpeGx44YvT1UklpZlO/6f6VgPnfCfqosldhCfofKVHA+N3nHWOyr5efrYDP
+UiGGLimJOJMUlMjgwh/Q6AHGU7/lGLv+TODXQH3kGwwtdtGQMvAQmCL3hMmnUW5w
+xuQYu3a4bpXhPPeg7JgWUWTJCuzUcyBvuRLofPtQqhDJEh9fJuIQKUBq4O4Z9Xua
+ItGcNR5Gho1oFm90LS/1+zuQB0XMBqrK+9P5zi97CJULS9Zirgs5EGB5S8tK19zo
+OHNycDnFRJ9KpXgwPY+aV4lLZ2cKqd1EVMcf/BbyrMvb7Vj8NZmeJvDJAZFZUsiu
+9Vu3jVLUdcoO+0KZCAaUoxunJOFgo+d0n6hGTjMrOCzUsDfFF1VBiEGDBeOOngt3
+Kaz5MN8saN6kFL1WlLGpe8BjMckUuVqjHDYiHuC6O3vNc5YwsFkllDKcAG9RPJT8
+HWFOcQarm6eAv8F50dCks+NAcbfTHoOTXYCjlPMAUzoRPUlc1H4YiyMzali+dzsu
+i7u2dK8kpsYzQ40WqkLcA3OV7MD2Ip9sk9vyBzxxi8QZIBuDPBcSIOEHLPz3MFzu
+38MeoxDozztBTzGKQzP09wtnb2+s56lfOywWoaHZiHvqoAlCRvF5zdQlI+qNo5ZG
+W3gzFcY1UxuaOB7Lg4p+MRD0lWTA4J4vGiIzgY9S6hd4siLlXycmbKkxUrXTaeC8
+PdmFfxe5Oy2iHgW//s0IZ+D/Q0Zgt1E4Y8rmtnpfzKga2nu/J/gSUlqYFgPju/PV
+Hy+U0l239VYXVjxpC/7EUwO4ayGLktCPuOqYK8pS/jh5KP/oZxIJa4TKmoJNN8h+
+KOeIHI0mEc2BPYEgl0j/E3E1XnG5lxkzgYzwVQlrIzPJsbOYrCUfG4ZzcV4svFGn
+7/4kIHufTWI1pSnfmTs/dYzHnECbqNL3JVFG3JsWjuuhygksP54i2hwEl9zBm6CM
+p+7bm8mJlvKRuOJnPscDPDCb7nW6MhejY3vtzgE5aNpw7yjMj/KkJ3zUxqa8/XNU
+3oT1vgEil5feall45YeNCKHVgvBSNAPR2a2nQmtXC5H1rXLrobUgagCBKAykwVjb
+eE7QV6dF4pwIyo+ZPV8uWotR/OuKJWpiWU2cTqN2rlekqPkWpdWa3ZeDgLW8j6xe
+hJ/j3fLpSd5avKz9n+NIBMewwfGlFH7BB5KzBoDQZJCxFwFrStcmy7/2lc61881s
+kGLl2mJCpOV9o7oKEyy4Q2D74cQg7CV6aEIcRIyDtf/DHiNc2uauEqyCcEK43CC4
+i7kQUvgFpirRDW8lvjicOQtBaw8txUa6vIA7LsnS7/ylS/y7qmExQ/qGGKVuL6jZ
+M4NLWr1cgfE9Nb2gCK0RkZHDRG6iHjzvV66HwQM0p0hf+cxXXERTG+v4aSEqfx8V
+4mbRZoeJj8O3wyRhSyl22CUnwTMv8CK2AAbqF5p5w1POPlWtWbrljIV3B3BRnAYa
+u1Yv9L7RMc4zGNyeMkgIYF2IarqIkuh32m2TxJ2ifPAkbgu1mRx9OOCTENSdQCCX
+6OF2Se1lCm4ylS4ov9MxitQDLJdSmyGDcoaxFdAilZBvbtz9LJE+kwr2qZdszndI
+JaiQ26Ft4E6pCpe238BB4woF+rD0Ds18ySy88oxlKnOmKj0kY7UTwSyqB3EEbcNi
+r17JbUFPO+0ktu8z5BhdtYeaOPuN9bx0U+H5SDeDUZzjlMrBn8BmZvfAhIg5ov75
+LuiHG2sdy/fuhFsz0dTZ+3fYncTPK/jepV+ZtbRaNNoCPJQx87MUquWxQTh4I9ee
+cmxMGg9viRysyfyTTzkucX04i/vAfY1QnJKAfrF4nHoCp+hUUslqL3MpleLKwHBO
+WYFiyIXH5TYqlsD4GihlrWY7NJ3iYT1KAjerkmAxMzf+RfANhejoiEpmXh3ERZoD
+Ma5gUzFeDlJA6mQxIWXjktbQpcArWhLoXsovpZXJrW4QNPoSem0FCYlpnYL+ue9e
+ZOANFYeDntpubIwE0u1QNsUjXOtYErl4fPP/vi5Z8aKoftwHdXA/xJqB7EJxhHai
+28JI8dfYPKKPnRQtTIhxGFy/EbtjmFq4Iym7SOuDjGGFwfn/T6XkBbx+vMPvfnO4
+0wZHtufixei9ROJLrwFY0ZBoMcs3BW5dl4y23gB1kkI/4yrSU29D/Ml5RVl53eOC
+D7a/X+oC6fhBsA488tIotPnZb5OVjuTVottdPygmW+rU3JZPQ4AHxymiLSP+9c+Q
+FoeuCM1em+TGHFQFls2oUUjUGH5mUt+KTJdgU71nOLMl2GWGsUYErMWOwAqY1VBT
+iIKBinugO7LV9e6AGqyB4ZDage6nytueroSwfpeae6/CcIANB10p67UistI7fofA
+BAsNhDzoJBMsoiHuB1SnTMR15id3BDMv2IknKs22typ00DodzNEpwOcVgkceZTZV
+M2lYksxFuOgjraBhFHPGHUtqnnlD/v6KXlJAU0m9Rp1GMaH4AY84mvsgBqCW4RRC
+aIhbp/+oVBcW2CT0301R8orpUOpoHhYaurgjf9hcgL2tc/flNxUX5rkHwbjse04J
+rENenqhYdRa4UdyvL7g2UXVWJV1VrOiNb/0zSw9E3NM1TQZ9M9z5o9LAXjDI20PI
+quHHlk7sPJX9txbZyKKsY0SObguCB2uUt/civinqGKQxSys1+w7xakkxV3T6WXH8
+auGT6bqHySMGFcdBrb/g2Bi7bdcW1ACoSBIkpBT7OE0UDiZK5w8nR0B/iQFgV6BM
+fLIndYjxwQRbuIRY2ea3aiNt0EdG4wO4b3Nrqx6rdek=
+`pragma protect end_protected
+
+//pragma protect end
+
+
+`timescale 1 ns / 1 ns
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+DOiPrSoOsOWFMnUIePF5KkkuP9M9CD3sIOJUMse5YjGpsWljrKw3wVgiaNNbbKIA
+tZZ89fOVGIkVEtqDKovfN9hhA0AvJ8mf4/+brMg7PR5hv4fEfoTvaSiSOjxminpj
+hDAU9j9J0EeKG8IbY8UBCawYm3GdcS+QXpoDDPl8pGbWFzEtgpqHwLPNdotkODuL
+Cy/jYYjISPMG6+XBTCDGPlB5wHTuXk4r+btUx0HJQC86NboLhzI5xocnTZkES5xw
+eOtqkXEjljvu/nu/NhhumVFQWtjfe6VAKlLnz9mcqkTlGcJBfXBEcJuVurHCods7
+hizyF/UB7hJKgVj5ZWx4uQ==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 13568 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+`undef IP_UUID
+`undef IP_NAME_CONCAT
+`undef IP_MODULE_NAME
diff --git a/Ti375C529_devkit/ip/gSDHC/gSDHC_define.vh b/Ti375C529_devkit/ip/gSDHC/gSDHC_define.vh
new file mode 100644
index 0000000..a261877
--- /dev/null
+++ b/Ti375C529_devkit/ip/gSDHC/gSDHC_define.vh
@@ -0,0 +1,47 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 6.0
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+localparam DATA_BUFFER_DEPTH = 512;
+localparam ADMA_DATA_WIDTH = 128;
diff --git a/Ti375C529_devkit/ip/gSDHC/gSDHC_tmpl.v b/Ti375C529_devkit/ip/gSDHC/gSDHC_tmpl.v
new file mode 100644
index 0000000..84b81fc
--- /dev/null
+++ b/Ti375C529_devkit/ip/gSDHC/gSDHC_tmpl.v
@@ -0,0 +1,111 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 6.0
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+gSDHC u_gSDHC
+(
+ .sd_rst ( sd_rst ),
+ .sd_base_clk ( sd_base_clk ),
+ .sd_int ( sd_int ),
+ .sd_cd_n ( sd_cd_n ),
+ .sd_wp ( sd_wp ),
+ .s_axi_awaddr ( s_axi_awaddr ),
+ .s_axi_aclk ( s_axi_aclk ),
+ .s_axi_awready ( s_axi_awready ),
+ .s_axi_awvalid ( s_axi_awvalid ),
+ .s_axi_wdata ( s_axi_wdata ),
+ .s_axi_wready ( s_axi_wready ),
+ .s_axi_wvalid ( s_axi_wvalid ),
+ .s_axi_bresp ( s_axi_bresp ),
+ .s_axi_bvalid ( s_axi_bvalid ),
+ .s_axi_araddr ( s_axi_araddr ),
+ .s_axi_bready ( s_axi_bready ),
+ .s_axi_arready ( s_axi_arready ),
+ .s_axi_arvalid ( s_axi_arvalid ),
+ .s_axi_rresp ( s_axi_rresp ),
+ .s_axi_rdata ( s_axi_rdata ),
+ .s_axi_rvalid ( s_axi_rvalid ),
+ .s_axi_rready ( s_axi_rready ),
+ .m_axi_awaddr ( m_axi_awaddr ),
+ .m_axi_awvalid ( m_axi_awvalid ),
+ .m_axi_clk ( m_axi_clk ),
+ .m_axi_awlen ( m_axi_awlen ),
+ .m_axi_awready ( m_axi_awready ),
+ .m_axi_awsize ( m_axi_awsize ),
+ .m_axi_awcache ( m_axi_awcache ),
+ .m_axi_awlock ( m_axi_awlock ),
+ .m_axi_awprot ( m_axi_awprot ),
+ .m_axi_wlast ( m_axi_wlast ),
+ .m_axi_wvalid ( m_axi_wvalid ),
+ .m_axi_wready ( m_axi_wready ),
+ .m_axi_bresp ( m_axi_bresp ),
+ .m_axi_bvalid ( m_axi_bvalid ),
+ .m_axi_bready ( m_axi_bready ),
+ .m_axi_arvalid ( m_axi_arvalid ),
+ .m_axi_araddr ( m_axi_araddr ),
+ .m_axi_arlen ( m_axi_arlen ),
+ .m_axi_arsize ( m_axi_arsize ),
+ .m_axi_arburst ( m_axi_arburst ),
+ .m_axi_arprot ( m_axi_arprot ),
+ .m_axi_arlock ( m_axi_arlock ),
+ .m_axi_arcache ( m_axi_arcache ),
+ .m_axi_arready ( m_axi_arready ),
+ .m_axi_rvalid ( m_axi_rvalid ),
+ .m_axi_rlast ( m_axi_rlast ),
+ .m_axi_rresp ( m_axi_rresp ),
+ .m_axi_rready ( m_axi_rready ),
+ .sd_clk_hi ( sd_clk_hi ),
+ .sd_clk_lo ( sd_clk_lo ),
+ .sd_cmd_i ( sd_cmd_i ),
+ .sd_cmd_o ( sd_cmd_o ),
+ .sd_cmd_oe ( sd_cmd_oe ),
+ .sd_dat_i ( sd_dat_i ),
+ .sd_dat_o ( sd_dat_o ),
+ .sd_dat_oe ( sd_dat_oe ),
+ .m_axi_awburst ( m_axi_awburst ),
+ .m_axi_wdata ( m_axi_wdata ),
+ .m_axi_wstrb ( m_axi_wstrb ),
+ .m_axi_rdata ( m_axi_rdata ),
+ .s_axi_wstrb ( s_axi_wstrb )
+);
diff --git a/Ti375C529_devkit/ip/gSDHC/gSDHC_tmpl.vhd b/Ti375C529_devkit/ip/gSDHC/gSDHC_tmpl.vhd
new file mode 100644
index 0000000..98a4d2b
--- /dev/null
+++ b/Ti375C529_devkit/ip/gSDHC/gSDHC_tmpl.vhd
@@ -0,0 +1,177 @@
+--------------------------------------------------------------------------------
+-- Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+--
+-- This document contains proprietary information which is
+-- protected by copyright. All rights are reserved. This notice
+-- refers to original work by Efinix, Inc. which may be derivitive
+-- of other work distributed under license of the authors. In the
+-- case of derivative work, nothing in this notice overrides the
+-- original author's license agreement. Where applicable, the
+-- original license agreement is included in it's original
+-- unmodified form immediately below this header.
+--
+-- WARRANTY DISCLAIMER.
+-- THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+-- EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+-- RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+-- INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+-- MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+-- PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+-- WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+--
+-- LIMITATION OF LIABILITY.
+-- NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+-- INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+-- MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+-- OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+-- SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+-- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+-- GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+-- MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+-- THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+-- (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+-- BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+-- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+-- CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+-- APPLY TO LICENSEE.
+--
+--------------------------------------------------------------------------------
+------------- Begin Cut here for COMPONENT Declaration ------
+component gSDHC is
+port (
+ sd_rst : in std_logic;
+ sd_base_clk : in std_logic;
+ sd_int : out std_logic;
+ sd_cd_n : in std_logic;
+ sd_wp : in std_logic;
+ s_axi_awaddr : in std_logic_vector(9 downto 0);
+ s_axi_aclk : in std_logic;
+ s_axi_awready : out std_logic;
+ s_axi_awvalid : in std_logic;
+ s_axi_wdata : in std_logic_vector(31 downto 0);
+ s_axi_wready : out std_logic;
+ s_axi_wvalid : in std_logic;
+ s_axi_bresp : out std_logic_vector(1 downto 0);
+ s_axi_bvalid : out std_logic;
+ s_axi_araddr : in std_logic_vector(9 downto 0);
+ s_axi_bready : in std_logic;
+ s_axi_arready : out std_logic;
+ s_axi_arvalid : in std_logic;
+ s_axi_rresp : out std_logic_vector(1 downto 0);
+ s_axi_rdata : out std_logic_vector(31 downto 0);
+ s_axi_rvalid : out std_logic;
+ s_axi_rready : in std_logic;
+ m_axi_awaddr : out std_logic_vector(31 downto 0);
+ m_axi_awvalid : out std_logic;
+ m_axi_clk : in std_logic;
+ m_axi_awlen : out std_logic_vector(7 downto 0);
+ m_axi_awready : in std_logic;
+ m_axi_awsize : out std_logic_vector(2 downto 0);
+ m_axi_awcache : out std_logic_vector(3 downto 0);
+ m_axi_awlock : out std_logic_vector(1 downto 0);
+ m_axi_awprot : out std_logic_vector(2 downto 0);
+ m_axi_wlast : out std_logic;
+ m_axi_wvalid : out std_logic;
+ m_axi_wready : in std_logic;
+ m_axi_bresp : in std_logic_vector(1 downto 0);
+ m_axi_bvalid : in std_logic;
+ m_axi_bready : out std_logic;
+ m_axi_arvalid : out std_logic;
+ m_axi_araddr : out std_logic_vector(31 downto 0);
+ m_axi_arlen : out std_logic_vector(7 downto 0);
+ m_axi_arsize : out std_logic_vector(2 downto 0);
+ m_axi_arburst : out std_logic_vector(1 downto 0);
+ m_axi_arprot : out std_logic_vector(2 downto 0);
+ m_axi_arlock : out std_logic_vector(1 downto 0);
+ m_axi_arcache : out std_logic_vector(3 downto 0);
+ m_axi_arready : in std_logic;
+ m_axi_rvalid : in std_logic;
+ m_axi_rlast : in std_logic;
+ m_axi_rresp : in std_logic_vector(1 downto 0);
+ m_axi_rready : out std_logic;
+ sd_clk_hi : out std_logic;
+ sd_clk_lo : out std_logic;
+ sd_cmd_i : in std_logic;
+ sd_cmd_o : out std_logic;
+ sd_cmd_oe : out std_logic;
+ sd_dat_i : in std_logic_vector(3 downto 0);
+ sd_dat_o : out std_logic_vector(3 downto 0);
+ sd_dat_oe : out std_logic;
+ m_axi_awburst : out std_logic_vector(1 downto 0);
+ m_axi_wdata : out std_logic_vector(127 downto 0);
+ m_axi_wstrb : out std_logic_vector(15 downto 0);
+ m_axi_rdata : in std_logic_vector(127 downto 0);
+ s_axi_wstrb : in std_logic_vector(3 downto 0)
+);
+end component gSDHC;
+
+---------------------- End COMPONENT Declaration ------------
+------------- Begin Cut here for INSTANTIATION Template -----
+u_gSDHC : gSDHC
+port map (
+ sd_rst => sd_rst,
+ sd_base_clk => sd_base_clk,
+ sd_int => sd_int,
+ sd_cd_n => sd_cd_n,
+ sd_wp => sd_wp,
+ s_axi_awaddr => s_axi_awaddr,
+ s_axi_aclk => s_axi_aclk,
+ s_axi_awready => s_axi_awready,
+ s_axi_awvalid => s_axi_awvalid,
+ s_axi_wdata => s_axi_wdata,
+ s_axi_wready => s_axi_wready,
+ s_axi_wvalid => s_axi_wvalid,
+ s_axi_bresp => s_axi_bresp,
+ s_axi_bvalid => s_axi_bvalid,
+ s_axi_araddr => s_axi_araddr,
+ s_axi_bready => s_axi_bready,
+ s_axi_arready => s_axi_arready,
+ s_axi_arvalid => s_axi_arvalid,
+ s_axi_rresp => s_axi_rresp,
+ s_axi_rdata => s_axi_rdata,
+ s_axi_rvalid => s_axi_rvalid,
+ s_axi_rready => s_axi_rready,
+ m_axi_awaddr => m_axi_awaddr,
+ m_axi_awvalid => m_axi_awvalid,
+ m_axi_clk => m_axi_clk,
+ m_axi_awlen => m_axi_awlen,
+ m_axi_awready => m_axi_awready,
+ m_axi_awsize => m_axi_awsize,
+ m_axi_awcache => m_axi_awcache,
+ m_axi_awlock => m_axi_awlock,
+ m_axi_awprot => m_axi_awprot,
+ m_axi_wlast => m_axi_wlast,
+ m_axi_wvalid => m_axi_wvalid,
+ m_axi_wready => m_axi_wready,
+ m_axi_bresp => m_axi_bresp,
+ m_axi_bvalid => m_axi_bvalid,
+ m_axi_bready => m_axi_bready,
+ m_axi_arvalid => m_axi_arvalid,
+ m_axi_araddr => m_axi_araddr,
+ m_axi_arlen => m_axi_arlen,
+ m_axi_arsize => m_axi_arsize,
+ m_axi_arburst => m_axi_arburst,
+ m_axi_arprot => m_axi_arprot,
+ m_axi_arlock => m_axi_arlock,
+ m_axi_arcache => m_axi_arcache,
+ m_axi_arready => m_axi_arready,
+ m_axi_rvalid => m_axi_rvalid,
+ m_axi_rlast => m_axi_rlast,
+ m_axi_rresp => m_axi_rresp,
+ m_axi_rready => m_axi_rready,
+ sd_clk_hi => sd_clk_hi,
+ sd_clk_lo => sd_clk_lo,
+ sd_cmd_i => sd_cmd_i,
+ sd_cmd_o => sd_cmd_o,
+ sd_cmd_oe => sd_cmd_oe,
+ sd_dat_i => sd_dat_i,
+ sd_dat_o => sd_dat_o,
+ sd_dat_oe => sd_dat_oe,
+ m_axi_awburst => m_axi_awburst,
+ m_axi_wdata => m_axi_wdata,
+ m_axi_wstrb => m_axi_wstrb,
+ m_axi_rdata => m_axi_rdata,
+ s_axi_wstrb => s_axi_wstrb
+);
+
+------------------------ End INSTANTIATION Template ---------
diff --git a/Ti375C529_devkit/ip/gSDHC/ipm/component.pickle b/Ti375C529_devkit/ip/gSDHC/ipm/component.pickle
new file mode 100644
index 0000000..d292d37
Binary files /dev/null and b/Ti375C529_devkit/ip/gSDHC/ipm/component.pickle differ
diff --git a/Ti375C529_devkit/ip/gSDHC/ipm/graph.pickle b/Ti375C529_devkit/ip/gSDHC/ipm/graph.pickle
new file mode 100644
index 0000000..6ca87a2
Binary files /dev/null and b/Ti375C529_devkit/ip/gSDHC/ipm/graph.pickle differ
diff --git a/Ti375C529_devkit/ip/gSDHC/settings.json b/Ti375C529_devkit/ip/gSDHC/settings.json
new file mode 100644
index 0000000..114b4b5
--- /dev/null
+++ b/Ti375C529_devkit/ip/gSDHC/settings.json
@@ -0,0 +1,31 @@
+{
+ "args": [
+ "-o",
+ "gSDHC",
+ "--base_path",
+ "/projects/SSE/llching/repo/efx_IP_master/efx_IP/efx_hard_soc/fpga/Ti375C529_devkit/ip",
+ "--vlnv",
+ {
+ "vendor": "efinixinc.com",
+ "library": "memory_controller",
+ "name": "efx_sd_host_controller",
+ "version": "6.0"
+ }
+ ],
+ "conf": {
+ "DATA_BUFFER_DEPTH": "512",
+ "ADMA_DATA_WIDTH": "128"
+ },
+ "output": {
+ "external_script_reference_design": [],
+ "external_source_source": [
+ "gSDHC/gSDHC_define.vh",
+ "gSDHC/gSDHC.v",
+ "gSDHC/gSDHC_tmpl.v",
+ "gSDHC/gSDHC_tmpl.vhd"
+ ]
+ },
+ "ooc_synthesis": {},
+ "sw_version": "2025.2.272",
+ "generated_date": "2025-10-16T09:29:16.536987+00:00"
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gTSE/gTSE.sv b/Ti375C529_devkit/ip/gTSE/gTSE.sv
new file mode 100644
index 0000000..7673519
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE/gTSE.sv
@@ -0,0 +1,9374 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 7.3
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+`define IP_UUID _7bbe2a96a6f546f79c19bc5e36554e32
+`define IP_NAME_CONCAT(a,b) a``b
+`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
+module gTSE
+(
+ input mac_reset,
+ input proto_reset,
+ output rx_mac_aclk,
+ input tx_mac_aclk,
+ output [2:0] eth_speed,
+ input rx_axis_clk,
+ output rx_axis_mac_tuser,
+ output rx_axis_mac_tlast,
+ output rx_axis_mac_tvalid,
+ input rx_axis_mac_tready,
+ input tx_axis_clk,
+ input tx_axis_mac_tvalid,
+ input tx_axis_mac_tlast,
+ input tx_axis_mac_tuser,
+ output tx_axis_mac_tready,
+ output [3:0] rgmii_txd_HI,
+ output [3:0] rgmii_txd_LO,
+ output rgmii_tx_ctl_HI,
+ output rgmii_tx_ctl_LO,
+ output rgmii_txc_HI,
+ output rgmii_txc_LO,
+ input [3:0] rgmii_rxd_HI,
+ input [3:0] rgmii_rxd_LO,
+ input rgmii_rx_ctl_HI,
+ input rgmii_rx_ctl_LO,
+ input rgmii_rxc,
+ input s_axi_aclk,
+ output [7:0] rx_axis_mac_tdata,
+ input [7:0] tx_axis_mac_tdata,
+ input [0:0] tx_axis_mac_tstrb,
+ output [0:0] rx_axis_mac_tstrb,
+ output MdoEn,
+ output Mdo,
+ input Mdi,
+ output Mdc,
+ input [9:0] s_axi_araddr,
+ output s_axi_arready,
+ input s_axi_arvalid,
+ input [9:0] s_axi_awaddr,
+ output s_axi_awready,
+ input s_axi_awvalid,
+ input s_axi_bready,
+ output [1:0] s_axi_bresp,
+ output s_axi_bvalid,
+ output [31:0] s_axi_rdata,
+ input s_axi_rready,
+ output [1:0] s_axi_rresp,
+ output s_axi_rvalid,
+ input [31:0] s_axi_wdata,
+ output s_axi_wready,
+ input s_axi_wvalid
+);
+`IP_MODULE_NAME(efx_mac1gbe)
+#(
+ .VERSION (16),
+ .TXFIFO_EN (1'b1),
+ .RXFIFO_EN (1'b1),
+ .TXFIFO_DTH (4096),
+ .RXFIFO_DTH (4096),
+ .PHY_INTF_MODE (0),
+ .AXIS_DW (8),
+ .RGMII_RXC_EDGE (1'b1),
+ .RGMII_TXC_DLY (1'b1),
+ .INTER_PACKET_GAP (6'd12),
+ .MTU_FRAME_LENGTH (16'd1518),
+ .MAC_SOURCE_ADDRESS (48'd0),
+ .ENABLE_BROADCAST_FILTERING (1'b1),
+ .LOOPBACK_EN (1'b1),
+ .APBIF (1'b0),
+ .FAMILY ("TITANIUM")
+)
+u_efx_mac1gbe
+(
+ .mac_reset ( mac_reset ),
+ .proto_reset ( proto_reset ),
+ .rx_mac_aclk ( rx_mac_aclk ),
+ .tx_mac_aclk ( tx_mac_aclk ),
+ .eth_speed ( eth_speed ),
+ .rx_axis_clk ( rx_axis_clk ),
+ .rx_axis_mac_tuser ( rx_axis_mac_tuser ),
+ .rx_axis_mac_tlast ( rx_axis_mac_tlast ),
+ .rx_axis_mac_tvalid ( rx_axis_mac_tvalid ),
+ .rx_axis_mac_tready ( rx_axis_mac_tready ),
+ .tx_axis_clk ( tx_axis_clk ),
+ .tx_axis_mac_tvalid ( tx_axis_mac_tvalid ),
+ .tx_axis_mac_tlast ( tx_axis_mac_tlast ),
+ .tx_axis_mac_tuser ( tx_axis_mac_tuser ),
+ .tx_axis_mac_tready ( tx_axis_mac_tready ),
+ .rgmii_txd_HI ( rgmii_txd_HI ),
+ .rgmii_txd_LO ( rgmii_txd_LO ),
+ .rgmii_tx_ctl_HI ( rgmii_tx_ctl_HI ),
+ .rgmii_tx_ctl_LO ( rgmii_tx_ctl_LO ),
+ .rgmii_txc_HI ( rgmii_txc_HI ),
+ .rgmii_txc_LO ( rgmii_txc_LO ),
+ .rgmii_rxd_HI ( rgmii_rxd_HI ),
+ .rgmii_rxd_LO ( rgmii_rxd_LO ),
+ .rgmii_rx_ctl_HI ( rgmii_rx_ctl_HI ),
+ .rgmii_rx_ctl_LO ( rgmii_rx_ctl_LO ),
+ .rgmii_rxc ( rgmii_rxc ),
+ .s_axi_aclk ( s_axi_aclk ),
+ .rx_axis_mac_tdata ( rx_axis_mac_tdata ),
+ .tx_axis_mac_tdata ( tx_axis_mac_tdata ),
+ .tx_axis_mac_tstrb ( tx_axis_mac_tstrb ),
+ .rx_axis_mac_tstrb ( rx_axis_mac_tstrb ),
+ .MdoEn ( MdoEn ),
+ .Mdo ( Mdo ),
+ .Mdi ( Mdi ),
+ .Mdc ( Mdc ),
+ .s_axi_araddr ( s_axi_araddr ),
+ .s_axi_arready ( s_axi_arready ),
+ .s_axi_arvalid ( s_axi_arvalid ),
+ .s_axi_awaddr ( s_axi_awaddr ),
+ .s_axi_awready ( s_axi_awready ),
+ .s_axi_awvalid ( s_axi_awvalid ),
+ .s_axi_bready ( s_axi_bready ),
+ .s_axi_bresp ( s_axi_bresp ),
+ .s_axi_bvalid ( s_axi_bvalid ),
+ .s_axi_rdata ( s_axi_rdata ),
+ .s_axi_rready ( s_axi_rready ),
+ .s_axi_rresp ( s_axi_rresp ),
+ .s_axi_rvalid ( s_axi_rvalid ),
+ .s_axi_wdata ( s_axi_wdata ),
+ .s_axi_wready ( s_axi_wready ),
+ .s_axi_wvalid ( s_axi_wvalid )
+);
+endmodule
+
+/////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / simple_dual_port_ram_fifo.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / EFX FIFO
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+//
+// *******************************
+
+module `IP_MODULE_NAME(efx_fifo_top) # (
+ parameter FAMILY = "TRION", // New Param
+ parameter SYNC_CLK = 0,
+ parameter BYPASS_RESET_SYNC = 0, // New Param
+ parameter SYNC_STAGE = 2, // New Param
+ parameter MODE = "STANDARD",
+ parameter DEPTH = 512, // Reverted (Equivalent to WDATA_DEPTH)
+ parameter DATA_WIDTH = 32, // Reverted (Equivalent to WDATA_WIDTH)
+ parameter PIPELINE_REG = 1, // Reverted (By default is ON)
+ parameter OPTIONAL_FLAGS = 1, // Reverted
+ parameter OUTPUT_REG = 0,
+ parameter PROGRAMMABLE_FULL = "STATIC_DUAL", // Set to "NONE" if not require this feature
+ parameter PROG_FULL_ASSERT = 27,
+ parameter PROG_FULL_NEGATE = 23,
+ parameter PROGRAMMABLE_EMPTY = "STATIC_DUAL", // Set to "NONE" if not require this feature
+ parameter PROG_EMPTY_ASSERT = 5,
+ parameter PROG_EMPTY_NEGATE = 7,
+ parameter ALMOST_FLAG = OPTIONAL_FLAGS,
+ parameter HANDSHAKE_FLAG = OPTIONAL_FLAGS,
+ parameter ASYM_WIDTH_RATIO = 4,
+ parameter WADDR_WIDTH = depth2width(DEPTH),
+ parameter RDATA_WIDTH = rdwidthcompute(ASYM_WIDTH_RATIO,DATA_WIDTH),
+ parameter RD_DEPTH = rddepthcompute(DEPTH,DATA_WIDTH,RDATA_WIDTH),
+ parameter RADDR_WIDTH = depth2width(RD_DEPTH),
+ parameter ENDIANESS = 0,
+ parameter OVERFLOW_PROTECT = 1,
+ parameter UNDERFLOW_PROTECT = 1,
+ parameter RAM_STYLE = "block_ram"
+
+)(
+ input wire a_rst_i,
+ input wire a_wr_rst_i,
+ input wire a_rd_rst_i,
+ input wire clk_i,
+ input wire wr_clk_i,
+ input wire rd_clk_i,
+ input wire wr_en_i,
+ input wire rd_en_i,
+ input wire [DATA_WIDTH-1:0] wdata,
+ output wire almost_full_o,
+ output wire prog_full_o,
+ output wire full_o,
+ output wire overflow_o,
+ output wire wr_ack_o,
+ output wire [WADDR_WIDTH :0] datacount_o,
+ output wire [WADDR_WIDTH :0] wr_datacount_o,
+ output wire empty_o,
+ output wire almost_empty_o,
+ output wire prog_empty_o,
+ output wire underflow_o,
+ output wire rd_valid_o,
+ output wire [RDATA_WIDTH-1:0] rdata,
+ output wire [RADDR_WIDTH :0] rd_datacount_o,
+ output wire rst_busy
+);
+
+localparam WR_DEPTH = DEPTH;
+localparam WDATA_WIDTH = DATA_WIDTH;
+localparam RAM_MUX_RATIO = (RDATA_WIDTH <= WDATA_WIDTH/32) ? 32 :
+ (RDATA_WIDTH <= WDATA_WIDTH/16) ? 16 :
+ (RDATA_WIDTH <= WDATA_WIDTH/8) ? 8 :
+ (RDATA_WIDTH <= WDATA_WIDTH/4) ? 4 :
+ (RDATA_WIDTH <= WDATA_WIDTH/2) ? 2 :
+ (RDATA_WIDTH <= WDATA_WIDTH) ? 1 :
+ (RDATA_WIDTH <= WDATA_WIDTH*2) ? 2 :
+ (RDATA_WIDTH <= WDATA_WIDTH*4) ? 4 :
+ (RDATA_WIDTH <= WDATA_WIDTH*8) ? 8 :
+ (RDATA_WIDTH <= WDATA_WIDTH*16) ? 16 : 32;
+
+wire wr_rst_int;
+wire rd_rst_int;
+wire wr_en_int;
+wire rd_en_int;
+wire [WADDR_WIDTH-1:0] waddr;
+wire [RADDR_WIDTH-1:0] raddr;
+wire wr_clk_int;
+wire rd_clk_int;
+wire [WADDR_WIDTH :0] wr_datacount_int;
+wire [RADDR_WIDTH :0] rd_datacount_int;
+
+generate
+ if (ASYM_WIDTH_RATIO == 4) begin
+ if (SYNC_CLK) begin
+ assign wr_clk_int = clk_i;
+ assign rd_clk_int = clk_i;
+ assign datacount_o = wr_datacount_int;
+ assign wr_datacount_o = {(WADDR_WIDTH+1){1'b0}};
+ assign rd_datacount_o = {(RADDR_WIDTH+1){1'b0}};
+ end
+ else begin
+ assign wr_clk_int = wr_clk_i;
+ assign rd_clk_int = rd_clk_i;
+ assign datacount_o = {(WADDR_WIDTH+1){1'b0}};
+ assign wr_datacount_o = wr_datacount_int;
+ assign rd_datacount_o = rd_datacount_int;
+ end
+ end
+ else begin
+ assign datacount_o = {(WADDR_WIDTH+1){1'b0}};
+ assign wr_datacount_o = wr_datacount_int;
+ assign rd_datacount_o = rd_datacount_int;
+ if (SYNC_CLK) begin
+ assign wr_clk_int = clk_i;
+ assign rd_clk_int = clk_i;
+ end
+ else begin
+ assign wr_clk_int = wr_clk_i;
+ assign rd_clk_int = rd_clk_i;
+ end
+ end
+
+ if (!SYNC_CLK) begin
+ //(* async_reg = "true" *) reg [1:0] wr_rst;
+ //(* async_reg = "true" *) reg [1:0] rd_rst;
+ //
+ //always @ (posedge wr_clk_int or posedge a_rst_i) begin
+ // if (a_rst_i)
+ // wr_rst <= 2'b11;
+ // else
+ // wr_rst <= {wr_rst[0],1'b0};
+ //end
+ //
+ //always @ (posedge rd_clk_int or posedge a_rst_i) begin
+ // if (a_rst_i)
+ // rd_rst <= 2'b11;
+ // else
+ // rd_rst <= {rd_rst[0],1'b0};
+ //end
+
+
+ if (BYPASS_RESET_SYNC) begin
+ assign wr_rst_int = a_wr_rst_i;
+ assign rd_rst_int = a_rd_rst_i;
+ assign rst_busy = 1'b0;
+ end
+ else begin
+ `IP_MODULE_NAME(efx_resetsync) #(
+ .ACTIVE_LOW (0)
+ ) efx_resetsync_wr_rst (
+ .clk (wr_clk_int),
+ .reset (a_rst_i),
+ .d_o (wr_rst_int)
+ );
+
+ `IP_MODULE_NAME(efx_resetsync) #(
+ .ACTIVE_LOW (0)
+ ) efx_resetsync_rd_rst (
+ .clk (rd_clk_int),
+ .reset (a_rst_i),
+ .d_o (rd_rst_int)
+ );
+ assign rst_busy = wr_rst_int | rd_rst_int;
+ end
+
+ end
+ else begin
+ //(* async_reg = "true" *) reg [1:0] a_rst;
+ //
+ //always @ (posedge clk_i or posedge a_rst_i) begin
+ // if (a_rst_i)
+ // a_rst <= 2'b11;
+ // else
+ // a_rst <= {a_rst[0],1'b0};
+ //end
+ wire a_rst;
+
+ `IP_MODULE_NAME(efx_resetsync) #(
+ .ACTIVE_LOW (0)
+ ) efx_resetsync_a_rst (
+ .clk (clk_i),
+ .reset (a_rst_i),
+ .d_o (a_rst)
+ );
+
+ if (BYPASS_RESET_SYNC) begin
+ assign wr_rst_int = a_rst_i;
+ assign rd_rst_int = a_rst_i;
+ assign rst_busy = 1'b0;
+ end
+ else begin
+ assign wr_rst_int = a_rst;
+ assign rd_rst_int = a_rst;
+ assign rst_busy = wr_rst_int | rd_rst_int;
+ end
+ end
+endgenerate
+
+`IP_MODULE_NAME(efx_fifo_ram) # (
+ .FAMILY (FAMILY),
+ .WR_DEPTH (WR_DEPTH),
+ .RD_DEPTH (RD_DEPTH),
+ .WDATA_WIDTH (WDATA_WIDTH),
+ .RDATA_WIDTH (RDATA_WIDTH),
+ .WADDR_WIDTH (WADDR_WIDTH),
+ .RADDR_WIDTH (RADDR_WIDTH),
+ .OUTPUT_REG (OUTPUT_REG),
+ .RAM_MUX_RATIO (RAM_MUX_RATIO),
+ .ENDIANESS (ENDIANESS),
+ .RAM_STYLE (RAM_STYLE)
+) xefx_fifo_ram (
+ .wdata (wdata),
+ .waddr (waddr),
+ .raddr (raddr),
+ .we (wr_en_int),
+ .re (rd_en_int),
+ .wclk (wr_clk_int),
+ .rclk (rd_clk_int),
+ .rdata (rdata)
+);
+
+`IP_MODULE_NAME(efx_fifo_ctl) # (
+ .SYNC_CLK (SYNC_CLK),
+ .SYNC_STAGE (SYNC_STAGE),
+ .MODE (MODE),
+ .WR_DEPTH (WR_DEPTH),
+ .WADDR_WIDTH (WADDR_WIDTH),
+ .RADDR_WIDTH (RADDR_WIDTH),
+ .ASYM_WIDTH_RATIO (ASYM_WIDTH_RATIO),
+ .RAM_MUX_RATIO (RAM_MUX_RATIO),
+ .PIPELINE_REG (PIPELINE_REG),
+ .ALMOST_FLAG (ALMOST_FLAG),
+ .PROGRAMMABLE_FULL (PROGRAMMABLE_FULL),
+ .PROG_FULL_ASSERT (PROG_FULL_ASSERT),
+ .PROG_FULL_NEGATE (PROG_FULL_NEGATE),
+ .PROGRAMMABLE_EMPTY (PROGRAMMABLE_EMPTY),
+ .PROG_EMPTY_ASSERT (PROG_EMPTY_ASSERT),
+ .PROG_EMPTY_NEGATE (PROG_EMPTY_NEGATE),
+ .OUTPUT_REG (OUTPUT_REG),
+ .HANDSHAKE_FLAG (HANDSHAKE_FLAG),
+ .OVERFLOW_PROTECT (OVERFLOW_PROTECT),
+ .UNDERFLOW_PROTECT (UNDERFLOW_PROTECT)
+) xefx_fifo_ctl (
+ .wr_rst (wr_rst_int),
+ .rd_rst (rd_rst_int),
+ .wclk (wr_clk_int),
+ .rclk (rd_clk_int),
+ .we (wr_en_i),
+ .re (rd_en_i),
+ .wr_full (full_o),
+ .wr_ack (wr_ack_o),
+ .rd_empty (empty_o),
+ .wr_almost_full (almost_full_o),
+ .rd_almost_empty (almost_empty_o),
+ .wr_prog_full (prog_full_o),
+ .rd_prog_empty (prog_empty_o),
+ .wr_en_int (wr_en_int),
+ .rd_en_int (rd_en_int),
+ .waddr (waddr),
+ .raddr (raddr),
+ .wr_datacount (wr_datacount_int),
+ .rd_datacount (rd_datacount_int),
+ .rd_vld (rd_valid_o),
+ .wr_overflow (overflow_o),
+ .rd_underflow (underflow_o)
+);
+
+function integer depth2width;
+input [31:0] depth;
+begin : fnDepth2Width
+ if (depth > 1) begin
+ depth = depth - 1;
+ for (depth2width=0; depth>0; depth2width = depth2width + 1)
+ depth = depth>>1;
+ end
+ else
+ depth2width = 0;
+end
+endfunction
+
+function integer width2depth;
+input [31:0] width;
+begin : fnWidth2Depth
+ width2depth = width**2;
+end
+endfunction
+
+function integer rdwidthcompute;
+input [31:0] asym_option;
+input [31:0] wr_width;
+begin : RdWidthCompute
+ rdwidthcompute = (asym_option==0)? wr_width/16 :
+ (asym_option==1)? wr_width/8 :
+ (asym_option==2)? wr_width/4 :
+ (asym_option==3)? wr_width/2 :
+ (asym_option==4)? wr_width/1 :
+ (asym_option==5)? wr_width*2 :
+ (asym_option==6)? wr_width*4 :
+ (asym_option==7)? wr_width*8 :
+ (asym_option==8)? wr_width*16 : wr_width/1;
+end
+endfunction
+
+function integer rddepthcompute;
+input [31:0] wr_depth;
+input [31:0] wr_width;
+input [31:0] rd_width;
+begin : RdDepthCompute
+ rddepthcompute = (wr_depth * wr_width) / rd_width;
+end
+endfunction
+
+endmodule
+
+
+/////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / simple_dual_port_ram_fifo.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / EFX FIFO
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+//
+// *******************************
+
+module `IP_MODULE_NAME(efx_fifo_ram) #(
+ parameter FAMILY = "TRION",
+ parameter WR_DEPTH = 512,
+ parameter RD_DEPTH = 512,
+ parameter WDATA_WIDTH = 8,
+ parameter RDATA_WIDTH = 8,
+ parameter WADDR_WIDTH = 9,
+ parameter RADDR_WIDTH = 9,
+ parameter OUTPUT_REG = 1,
+ parameter RAM_MUX_RATIO = 4,
+ parameter ENDIANESS = 0, //0: Big endian (default) 1: Little endian
+ parameter RAM_STYLE = "block_ram"
+) (
+ input wire wclk,
+ input wire rclk,
+ input wire we,
+ input wire re,
+ input wire [(WDATA_WIDTH-1):0] wdata,
+ input wire [(WADDR_WIDTH-1):0] waddr,
+ input wire [(RADDR_WIDTH-1):0] raddr,
+ output wire [(RDATA_WIDTH-1):0] rdata
+);
+
+localparam MEM_DEPTH = (WR_DEPTH > RD_DEPTH) ? WR_DEPTH : RD_DEPTH;
+localparam MEM_DATA_WIDTH = (WDATA_WIDTH > RDATA_WIDTH) ? RDATA_WIDTH : WDATA_WIDTH;
+localparam LSB_WIDTH = (WADDR_WIDTH > RADDR_WIDTH) ? (WADDR_WIDTH - RADDR_WIDTH) : (RADDR_WIDTH - WADDR_WIDTH);
+localparam RDATA_WDATA_RATIO = (RDATA_WIDTH <= WDATA_WIDTH/32) ? "ONE_THIRTYTWO" :
+ (RDATA_WIDTH <= WDATA_WIDTH/16) ? "ONE_SIXTEENTH" :
+ (RDATA_WIDTH <= WDATA_WIDTH/8) ? "ONE_EIGHTH" :
+ (RDATA_WIDTH <= WDATA_WIDTH/4) ? "ONE_FOURTH" :
+ (RDATA_WIDTH <= WDATA_WIDTH/2) ? "ONE_HALF" :
+ (RDATA_WIDTH <= WDATA_WIDTH) ? "ONE" :
+ (RDATA_WIDTH <= WDATA_WIDTH*2) ? "TWO_TIMES" :
+ (RDATA_WIDTH <= WDATA_WIDTH*4) ? "FOUR_TIMES" :
+ (RDATA_WIDTH <= WDATA_WIDTH*4) ? "EIGHT_TIMES" :
+ (RDATA_WIDTH <= WDATA_WIDTH*4) ? "SIXTEEN_TIMES" : "THIRTYTWO_TIMES";
+
+(* syn_ramstyle = RAM_STYLE *) reg [MEM_DATA_WIDTH-1:0] ram[MEM_DEPTH-1:0];
+reg [RDATA_WIDTH-1:0] r_rdata_1P;
+reg [RDATA_WIDTH-1:0] r_rdata_2P;
+
+wire re_int;
+
+generate
+ if (FAMILY == "TRION") begin
+ if (RDATA_WDATA_RATIO == "ONE") begin
+ always @ (posedge wclk) begin
+ if (we)
+ ram[waddr] <= wdata;
+ end
+
+ always @ (posedge rclk) begin
+ if (re_int) begin
+ r_rdata_1P <= ram[raddr];
+ end
+ r_rdata_2P <= r_rdata_1P;
+ end
+ end
+
+ else if (RDATA_WDATA_RATIO == "ONE_THIRTYTWO" || RDATA_WDATA_RATIO == "ONE_SIXTEENTH" || RDATA_WDATA_RATIO == "ONE_EIGHTH" || RDATA_WDATA_RATIO == "ONE_FOURTH" || RDATA_WDATA_RATIO == "ONE_HALF" ) begin
+ if (ENDIANESS == 0) begin
+ integer i;
+ always @ (posedge wclk) begin
+ for (i=0; i 1) begin
+ wire [1:0] bin_1;
+ assign bin_1 = {gray_i[WIDTH-1], gray_i[WIDTH-1]^gray_i[WIDTH-2]};
+ if (WIDTH == 2) begin
+ assign bin_o = bin_1;
+ end
+ else begin
+ assign bin_o[WIDTH-1] = bin_1[1];
+ `IP_MODULE_NAME(efx_fifo_gray2bin) #(.WIDTH(WIDTH-1)) u_gray2bin (.bin_o(bin_o[WIDTH-2:0]), .gray_i({bin_1[0], gray_i[WIDTH-3:0]}));
+ end
+ end
+ else /* if (WIDTH == 1) */
+ assign bin_o = gray_i;
+endgenerate
+
+endmodule
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / pipe_reg.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / Parallel Pipelining Shift Register
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+// 1.0 Initial rev
+//
+// *******************************
+
+module `IP_MODULE_NAME(efx_fifo_datasync) #(
+ parameter STAGE = 32,
+ parameter WIDTH = 4
+) (
+ input wire clk_i,
+ input wire [WIDTH-1:0] d_i,
+ output wire [WIDTH-1:0] d_o
+);
+
+(* async_reg = "true" *) reg [WIDTH-1:0] pipe_reg [STAGE-1:0];
+integer i;
+
+always @(posedge clk_i) begin
+ for (i=STAGE-1; i>0; i = i - 1) begin
+ pipe_reg[i] <= pipe_reg[i-1];
+ end
+ pipe_reg[0] <= d_i;
+end
+assign d_o = pipe_reg[STAGE-1];
+
+
+endmodule
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+
+// synopsys translate_off
+`timescale 1 ns / 1 ps
+// synopsys translate_on
+
+module `IP_MODULE_NAME(efx_resetsync) #(
+ parameter ASYNC_STAGE = 2,
+ parameter ACTIVE_LOW = 1
+) (
+ input wire clk,
+ input wire reset,
+ output wire d_o
+);
+
+
+generate
+ if (ACTIVE_LOW == 1) begin: active_low
+ `IP_MODULE_NAME(efx_asyncreg) #(
+ .WIDTH (1),
+ .ACTIVE_LOW (1),
+ .RST_VALUE (0)
+ ) efx_resetsync_active_low (
+ .clk (clk),
+ .reset_n (reset),
+ .d_i (1'b1),
+ .d_o (d_o)
+ );
+ end
+ else begin: active_high
+ `IP_MODULE_NAME(efx_asyncreg) #(
+ .WIDTH (1),
+ .ACTIVE_LOW (0),
+ .RST_VALUE (1)
+ ) efx_resetsync_active_high (
+ .clk (clk),
+ .reset_n (reset),
+ .d_i (1'b0),
+ .d_o (d_o)
+ );
+ end
+endgenerate
+
+endmodule
+
+
+
+// synopsys translate_off
+`timescale 1 ns / 1 ps
+// synopsys translate_on
+
+module `IP_MODULE_NAME(efx_asyncreg) #(
+ parameter ASYNC_STAGE = 2,
+ parameter WIDTH = 4,
+ parameter ACTIVE_LOW = 1, // 0 - Active high reset, 1 - Active low reset
+ parameter RST_VALUE = 0,
+ parameter OFF_ASSERTION = 0 // 1 = Turn off PULSE_WIDTH_CHK assertion for a particular instance
+) (
+ input wire clk,
+ input wire reset_n,
+ input wire [WIDTH-1:0] d_i,
+ output wire [WIDTH-1:0] d_o
+);
+
+
+
+
+
+
+
+
+
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect author = "author-a" , author_info = "author-a-details"
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+IjzmeF2ACtI8q/MHPcSQakfCyuQSUgg747Z3U+BWZdCStFbqF/Rhg0VPl8JT+91V
+o/8Ohsiw6GnpSIX69XazqGYmhEjb+W7W2ngBYentEXdSyzUYvEbr8i71cL04f1fE
+El78uYgSvjFwoDyocXOVYk8JA0v7y6WnabkL02lAqASKGQK55nzfKeUVbJHKHjAY
+kIT3Nf7JWK2NVVymI1Zs5QttwrNgKBSqoiPvmy4+16bTQMx4R205Bb4rT1MqSqIc
+/5U5/Z1e1tZzOqoEyhfcMMKW0emdBIdByNvteK05ZATt11Uzj2M/Vn1r9KmYd0h1
+uYJaS5tuGEuFInBHa7oO8g==
+`pragma protect key_keyowner = "Cadence Design Systems." , key_keyname = "CDS_RSA_KEY_VER_2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+ABJo/BvEH9XbZrt+xPOQ2C7yeLcnebDlRELbHyCdXeeNkZRVZ9m0ie+1HufS/I+3
+fC63lnVTenVdf9s4tm1RLd5VBkmFb37ikgaESy2aRKWsdLG6x2OyuODoMDRCjYUa
+rxhnwLWh5E55yR3XVZgM2k7/NPP2cTL7iOSCjH4No38siNjs4Fapyc4FFq0TOsQq
+PMqsZ5jgmM+ZT8cil0wMt5tpdEOwvchbe1GcZLIhcIFLD/Gb2XtP0Q0QkOlNzuiL
+DNyobLTjDkV5si+/23Ng2E7tDq+SX+vJP4ciI63kXtsmQdn1ff2Y64ibNXJtpu/w
+K3OoKmk3zFeArSsql8B4/Q==
+`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
+`pragma protect key_block
+RAoMYYsrw2j05cvQ8NR0lCh+Ia/OGVfdwZqq0pwIkgDzO3Z7ol96oQmQzFfIQY/M
+GzEOFdYJTfjnxPvhSPxT1tpq2Fgx6PbC2FMWFtN6/TrG/s01ifIWIZ9Wrfo8Q01l
+6XTAESHR1htrOOx6AiDHAQLOlBb0zgfZjayGJBRX7FI=
+`pragma protect key_keyowner = "Aldec" , key_keyname = "ALDEC15_001"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+YclPuIbYLW/ftZYybucr9ooblGFkJDcdUWf6kCJBGKpIRjItUB3LdSwcREekRWqf
+RGiSRFoyrOTiScT06zZ4fkm+PEKj8O3RU1VMMzDjuEUqkAEELJHNOH71tCSC6MWk
+1dop7MZy8BSXhzg3W3RXIA8IGSJRDibliv+SjkbUzg/WceDI176fJmUwGUji93Tw
+Zu2vRjA/RTi3ZMzS/2Z9YE156hpipJ/Cu6ca8V3y5Kt6DX4fcCS09xESr6soT5Oz
+eKRExN7wu8dvYMUuu1YgCVVR47BBDQi3wdZHqlq1PLaycnNOwBPLOAzA19Hefh/0
+2HflB1HYKxojQCcZU7qUgQ==
+`pragma protect key_keyowner = "Siemens" , key_keyname = "SIEMENS-VERIF-SIM-RSA-2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+fMvC6d2jTMqMqGFzPCPWt6pV9wRUCG4/taH3Nfn7RcekdiLyXQEQgm1SN+X+hkbx
+Pu7552vaw2ez4j3zrTk2vRPnDAsxY8GidEnkJcULi8kiia9Xy/ePFLxOJHHigkiB
+rU7uwrFblcYYBRwQjhMhJDowyR9HVAonxhOWVIlYagtABxLYlNdDEn+N4yPLVCsr
+XUWy1E2L5GUFFNQffENN0iyUaKdWAKGIqgIZK1sB3tVOPVsULetSoyzRErWPNZQD
+e5jbBBNZGyQQWgOJkOfy280ekoUUEZajqtB1jDvE3k8kbo4rzvr7yTkhSzLqjGod
+B2Zpo2FQ//YDRSAaEa9ksQ==
+`pragma protect key_keyowner = "Mentor Graphics Corporation" , key_keyname = "MGC-VERIF-SIM-RSA-2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+TcmE9lQROafuvxGWP3fMVxDoeaiMX6ALoT3detg/qWZ36+yPTc/t8N7/DtSx17Ze
+vr6iBb+ge3aAzWAq2QHyVfgVV15dvW/HsOXXTh7UqExiO7Dxa6nHXuAhYMON6NP2
+ihfIRSvdnrL2ufvg7A2rCHGAqnr6cVnRLfhNJxtA1lloQbJEtlf/CWNblDxEfyw2
+06l3l8pp1rS0E4tMqagmOr+yhNSpcS9vQswFltqroh6kNIE64zKri96HKkRFLNlP
+fpsN7plEpLS54SxIMmh8Op+w0a/jXVOxxD+FLepsZWfGiNksENgu2Xo6TvZIQUUN
+ZoPzFCMjGk5ZmMyIlytNCw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4288 )
+`pragma protect data_block
+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
+Ei7EaFpheCmlTJyxUg8TdA==
+`pragma protect end_protected
+
+
+/////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / simple_dual_port_ram_fifo.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / EFX FIFO
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+//
+// *******************************
+
+module `IP_MODULE_NAME(efx_fifo_ctl) # (
+ parameter SYNC_CLK = 1,
+ parameter SYNC_STAGE = 2,
+ parameter MODE = "STANDARD",
+ parameter WR_DEPTH = 512,
+ parameter WADDR_WIDTH = 9,
+ parameter RADDR_WIDTH = 9,
+ parameter ASYM_WIDTH_RATIO = 4,
+ parameter RAM_MUX_RATIO = 1,
+ parameter PIPELINE_REG = 1,
+ parameter ALMOST_FLAG = 1,
+ parameter PROGRAMMABLE_FULL = "NONE",
+ parameter PROG_FULL_ASSERT = 0,
+ parameter PROG_FULL_NEGATE = 0,
+ parameter PROGRAMMABLE_EMPTY = "NONE",
+ parameter PROG_EMPTY_ASSERT = 0,
+ parameter PROG_EMPTY_NEGATE = 0,
+ parameter OUTPUT_REG = 0,
+ parameter HANDSHAKE_FLAG = 1,
+ parameter OVERFLOW_PROTECT = 0,
+ parameter UNDERFLOW_PROTECT = 0
+)(
+ input wire wr_rst,
+ input wire rd_rst,
+ input wire wclk,
+ input wire rclk,
+ input wire we,
+ input wire re,
+ output wire wr_full,
+ output reg wr_ack,
+ output wire wr_almost_full,
+ output wire rd_empty,
+ output wire rd_almost_empty,
+ output wire wr_prog_full,
+ output wire rd_prog_empty,
+ output wire wr_en_int,
+ output wire rd_en_int,
+ output wire [WADDR_WIDTH-1:0] waddr,
+ output wire [RADDR_WIDTH-1:0] raddr,
+ output wire [WADDR_WIDTH:0] wr_datacount,
+ output wire [RADDR_WIDTH:0] rd_datacount,
+ output wire rd_vld,
+ output reg wr_overflow,
+ output reg rd_underflow
+);
+
+reg [WADDR_WIDTH:0] waddr_cntr;
+reg [WADDR_WIDTH:0] waddr_cntr_r;
+reg [RADDR_WIDTH:0] raddr_cntr;
+reg rd_valid;
+
+wire [WADDR_WIDTH:0] waddr_int;
+wire [RADDR_WIDTH:0] raddr_int;
+wire rd_empty_int;
+wire [WADDR_WIDTH:0] wr_datacount_int;
+wire [RADDR_WIDTH:0] rd_datacount_int;
+
+assign waddr = waddr_cntr[WADDR_WIDTH-1:0];
+// NIC
+wire [RADDR_WIDTH:0] ram_raddr;
+assign raddr = (MODE == "FWFT") ? ram_raddr[RADDR_WIDTH-1:0] : raddr_cntr[RADDR_WIDTH-1:0];
+//assign raddr = raddr_cntr[RADDR_WIDTH-1:0];
+//assign wr_en_int = we & ~wr_full;
+assign wr_en_int = OVERFLOW_PROTECT ? we & ~wr_full : we;
+
+assign wr_datacount = wr_datacount_int;
+assign rd_datacount = ASYM_WIDTH_RATIO == 4 && SYNC_CLK ? wr_datacount_int : rd_datacount_int;
+
+
+generate
+ if (MODE == "FWFT") begin
+ // NIC
+ //assign rd_en_int = (~rd_empty_int & rd_empty) | (re & ~rd_empty_int);
+ //assign rd_empty = rd_empty_fwft;
+
+ assign rd_en_int = 1'b1;
+ //assign rd_empty = rd_empty_int;
+
+ //always @ (posedge rclk or posedge rd_rst) begin
+ // if (rd_rst) begin
+ // init_set <= 1'b1;
+ // end
+ // else if (~init_set & rd_empty) begin
+ // init_set <= 1'b1;
+ // end
+ // else if (~rd_empty_int) begin
+ // init_set <= 1'b0;
+ // end
+ // else if (rd_empty) begin
+ // init_set <= 1'b1;
+ // end
+ //end
+ // NIC
+ //always @ (posedge rclk or posedge rd_rst) begin
+ // if (rd_rst) begin
+ // rd_empty_fwft <= 1'b1;
+ // end
+ // else if (rd_en_int) begin
+ // rd_empty_fwft <= 1'b0;
+ // end
+ // else if (re) begin
+ // rd_empty_fwft <= 1'b1;
+ // end
+ //end
+
+ //if (FAMILY == "TRION") begin
+ if (OUTPUT_REG) begin
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_valid <= 1'b0;
+ end
+ else begin
+ rd_valid <= ~rd_empty;
+ end
+ end
+ assign rd_vld = rd_valid;
+ end
+ else begin
+ assign rd_vld = ~rd_empty;
+ end
+
+ assign rd_empty = rd_empty_int;
+ end
+ else begin
+ assign rd_en_int = UNDERFLOW_PROTECT ? re & ~rd_empty_int : re;
+ assign rd_empty = rd_empty_int;
+
+ if (OUTPUT_REG) begin
+ reg rd_valid_r;
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_valid_r <= 'h0;
+ rd_valid <= 'h0;
+ end
+ else begin
+ {rd_valid,rd_valid_r} <= {rd_valid_r,rd_en_int};
+ end
+ end
+ assign rd_vld = rd_valid;
+ end
+ else begin
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_valid <= 'h0;
+ end
+ else begin
+ rd_valid <= rd_en_int;
+ end
+ end
+ assign rd_vld = rd_valid;
+ end
+ end
+
+ if (ALMOST_FLAG) begin
+ assign wr_almost_full = wr_datacount >= WR_DEPTH-1;
+ assign rd_almost_empty = rd_datacount <= 'd1;
+ end
+ else begin
+ assign wr_almost_full = 1'b0;
+ assign rd_almost_empty = 1'b0;
+ end
+
+ if (PROGRAMMABLE_FULL == "STATIC_SINGLE") begin
+ reg wr_prog_full_int;
+ assign wr_prog_full = wr_datacount >= PROG_FULL_ASSERT;
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_prog_full_int <= 1'b0;
+ end
+ else begin
+ wr_prog_full_int <= wr_prog_full;
+ end
+ end
+ end
+ else if (PROGRAMMABLE_FULL == "STATIC_DUAL") begin
+ reg wr_prog_full_int;
+ assign wr_prog_full = wr_prog_full_int ? wr_datacount >= PROG_FULL_NEGATE : wr_datacount >= PROG_FULL_ASSERT;
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_prog_full_int <= 1'b0;
+ end
+ else begin
+ wr_prog_full_int <= wr_prog_full;
+ end
+ end
+ end
+ else begin
+ assign wr_prog_full = 1'b0;
+ end
+
+ if (PROGRAMMABLE_EMPTY == "STATIC_SINGLE") begin
+ reg rd_prog_empty_int;
+ assign rd_prog_empty = rd_datacount <= PROG_EMPTY_ASSERT;
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_prog_empty_int <= 1'b1;
+ end
+ else begin
+ rd_prog_empty_int <= rd_prog_empty;
+ end
+ end
+ end
+ else if (PROGRAMMABLE_EMPTY == "STATIC_DUAL") begin
+ reg rd_prog_empty_int;
+ assign rd_prog_empty = rd_prog_empty_int ? (rd_datacount <= PROG_EMPTY_NEGATE) : (rd_datacount <= PROG_EMPTY_ASSERT);
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_prog_empty_int <= 1'b1;
+ end
+ else begin
+ rd_prog_empty_int <= rd_prog_empty;
+ end
+ end
+ end
+ else begin
+ assign rd_prog_empty = 1'b0;
+ end
+
+ if (HANDSHAKE_FLAG) begin
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_ack <= 1'b0;
+ end
+ else begin
+ // NIC
+ //wr_ack <= wr_en_int & ~wr_overflow;
+ wr_ack <= OVERFLOW_PROTECT ? wr_en_int & ~wr_overflow : wr_en_int;
+ end
+ end
+ end
+
+ if (OVERFLOW_PROTECT) begin
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_overflow <= 1'b0;
+ end
+ else if (we && wr_full) begin
+ wr_overflow <= 1'b1;
+ end
+ else begin
+ wr_overflow <= 1'b0;
+ end
+ end
+ end
+ else if (HANDSHAKE_FLAG) begin
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_overflow <= 1'b0;
+ end
+ else begin
+ wr_overflow <= we && wr_full ? 1'b1 : wr_overflow;
+ end
+ end
+ end
+
+ if (UNDERFLOW_PROTECT) begin
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_underflow <= 1'b0;
+ end
+ else if (re && rd_empty) begin
+ rd_underflow <= 1'b1;
+ end
+ else begin
+ rd_underflow <= 1'b0;
+ end
+ end
+ end
+ else if (HANDSHAKE_FLAG) begin
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_underflow <= 1'b0;
+ end
+ else begin
+ rd_underflow <= re && rd_empty ? 1'b1 : rd_underflow;
+ end
+ end
+ end
+
+ localparam RATIO_WIDTH = (RADDR_WIDTH >= WADDR_WIDTH)? RADDR_WIDTH - WADDR_WIDTH : WADDR_WIDTH - RADDR_WIDTH;
+
+ if (ASYM_WIDTH_RATIO < 4) begin
+ assign wr_full = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:0] == raddr_int[RADDR_WIDTH-1:RATIO_WIDTH]);
+ assign rd_empty_int = waddr_int[WADDR_WIDTH:0] == raddr_cntr[RADDR_WIDTH:RATIO_WIDTH];
+ assign wr_datacount_int = waddr_cntr - (raddr_int/RAM_MUX_RATIO);
+ assign rd_datacount_int = (waddr_int*RAM_MUX_RATIO)-raddr_cntr;
+ end
+ // NIC
+ else if (ASYM_WIDTH_RATIO == 4) begin
+ assign wr_full = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:0] == raddr_int[RADDR_WIDTH-1:0]);
+ assign rd_empty_int = waddr_int[WADDR_WIDTH:0] == raddr_cntr[RADDR_WIDTH:0];
+ assign wr_datacount_int = waddr_cntr - raddr_int;
+ assign rd_datacount_int = waddr_int - raddr_cntr;
+ end
+ else begin
+ assign wr_full = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:RATIO_WIDTH] == raddr_int[RADDR_WIDTH-1:0]);
+ // NIC
+ //assign rd_empty_int = (waddr_int- raddr_cntr*RAM_MUX_RATIO) < RAM_MUX_RATIO;
+ assign rd_empty_int = waddr_int[WADDR_WIDTH:RATIO_WIDTH] == raddr_cntr[RADDR_WIDTH:0];
+ assign wr_datacount_int = waddr_cntr - (raddr_int*RAM_MUX_RATIO);
+ assign rd_datacount_int = (waddr_int/RAM_MUX_RATIO)-raddr_cntr;
+ end
+endgenerate
+
+always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ waddr_cntr <= 'h0;
+ end
+ else if (wr_en_int) begin
+ waddr_cntr <= waddr_cntr + 1'b1;
+ end
+end
+
+always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ waddr_cntr_r <= 'h0;
+ end
+ else begin
+ waddr_cntr_r <= waddr_cntr;
+ end
+end
+
+always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ raddr_cntr <= 'h0;
+ end
+ // NIC
+ //else if (rd_en_int) begin
+ else begin
+ //raddr_cntr <= raddr_cntr + 1'b1;
+ //raddr_cntr <= raddr_cntr + (re & ~rd_empty_int);
+ raddr_cntr <= ram_raddr;
+ end
+end
+// NIC
+assign ram_raddr = raddr_cntr + (UNDERFLOW_PROTECT ? re & ~rd_empty_int : re);
+
+
+generate
+ if (SYNC_CLK) begin : sync_clk
+ if (MODE == "FWFT") begin
+ assign waddr_int = waddr_cntr_r;
+ assign raddr_int = raddr_cntr;
+ end
+ else begin
+ assign waddr_int = waddr_cntr;
+ assign raddr_int = raddr_cntr;
+ end
+ end
+ else begin : async_clk
+ reg [RADDR_WIDTH:0] raddr_cntr_gry_r;
+ reg [WADDR_WIDTH:0] waddr_cntr_gry_r;
+
+ wire [RADDR_WIDTH:0] raddr_cntr_gry;
+ wire [RADDR_WIDTH:0] raddr_cntr_gry_sync;
+ wire [RADDR_WIDTH:0] raddr_cntr_sync_g2b;
+ wire [WADDR_WIDTH:0] waddr_cntr_gry;
+ wire [WADDR_WIDTH:0] waddr_cntr_gry_sync;
+ wire [WADDR_WIDTH:0] waddr_cntr_sync_g2b;
+
+ if (PIPELINE_REG) begin
+ reg [RADDR_WIDTH:0] raddr_cntr_sync_g2b_r;
+ reg [WADDR_WIDTH:0] waddr_cntr_sync_g2b_r;
+
+ assign waddr_int = waddr_cntr_sync_g2b_r;
+ assign raddr_int = raddr_cntr_sync_g2b_r;
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ raddr_cntr_sync_g2b_r <= 'h0;
+ end
+ else begin
+ raddr_cntr_sync_g2b_r <= raddr_cntr_sync_g2b;
+ end
+ end
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ waddr_cntr_sync_g2b_r <= 'h0;
+ end
+ else begin
+ waddr_cntr_sync_g2b_r <= waddr_cntr_sync_g2b;
+ end
+ end
+ end
+ else begin
+ assign waddr_int = waddr_cntr_sync_g2b;
+ assign raddr_int = raddr_cntr_sync_g2b;
+ end
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ raddr_cntr_gry_r <= 'h0;
+ end
+ else begin
+ raddr_cntr_gry_r <= raddr_cntr_gry;
+ end
+ end
+ `IP_MODULE_NAME(efx_fifo_bin2gray) # (.WIDTH(RADDR_WIDTH+1) ) xrd2wr_bin2gray (.bin_i(raddr_cntr), .gray_o(raddr_cntr_gry));
+ `IP_MODULE_NAME(efx_asyncreg) # (.ASYNC_STAGE(SYNC_STAGE), .WIDTH (RADDR_WIDTH+1), .ACTIVE_LOW(0), .OFF_ASSERTION (1)) xrd2wr_addr_sync (.clk(wclk), .reset_n(wr_rst), .d_i(raddr_cntr_gry_r), .d_o(raddr_cntr_gry_sync));
+ `IP_MODULE_NAME(efx_fifo_gray2bin) # (.WIDTH(RADDR_WIDTH+1) ) xrd2wr_gray2bin (.gray_i(raddr_cntr_gry_sync), .bin_o(raddr_cntr_sync_g2b));
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ waddr_cntr_gry_r <= 'h0;
+ end
+ else begin
+ waddr_cntr_gry_r <= waddr_cntr_gry;
+ end
+ end
+ `IP_MODULE_NAME(efx_fifo_bin2gray) # (.WIDTH(WADDR_WIDTH+1) ) wr2rd_bin2gray (.bin_i(waddr_cntr), .gray_o(waddr_cntr_gry));
+ `IP_MODULE_NAME(efx_asyncreg) # (.ASYNC_STAGE(SYNC_STAGE), .WIDTH (WADDR_WIDTH+1), .ACTIVE_LOW(0), .OFF_ASSERTION (1)) wr2rd_addr_sync (.clk(rclk), .reset_n(rd_rst), .d_i(waddr_cntr_gry_r), .d_o(waddr_cntr_gry_sync));
+ `IP_MODULE_NAME(efx_fifo_gray2bin) # (.WIDTH(WADDR_WIDTH+1) ) wr2rd_gray2bin (.gray_i(waddr_cntr_gry_sync), .bin_o(waddr_cntr_sync_g2b));
+
+ end
+endgenerate
+endmodule
+
+
+////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / bin2gray.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / Binary to Gray Encoding Convertor
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+// 1.0 Initial rev
+//
+// *******************************
+
+`resetall
+`timescale 1ns/1ps
+
+module `IP_MODULE_NAME(efx_fifo_bin2gray)
+#(parameter WIDTH=5)
+(// outputs
+ output wire [WIDTH-1:0] gray_o,
+ // input
+ input [WIDTH-1:0] bin_i
+ );
+
+//---------------------------------------------------------------------
+// Function : bit_xor
+// Description: reduction xor
+function bit_xor (
+ input [31:0] nex_bit,
+ input [31:0] curr_bit,
+ input [WIDTH-1:0] xor_in);
+ begin : fn_bit_xor
+ bit_xor = xor_in[nex_bit] ^ xor_in[curr_bit];
+ end
+endfunction
+
+// Convert Binary to Gray, bit by bit
+generate
+begin
+ genvar bit_idx;
+ for(bit_idx=0; bit_idx mac_reset,
+ proto_reset => proto_reset,
+ rx_mac_aclk => rx_mac_aclk,
+ tx_mac_aclk => tx_mac_aclk,
+ eth_speed => eth_speed,
+ rx_axis_clk => rx_axis_clk,
+ rx_axis_mac_tuser => rx_axis_mac_tuser,
+ rx_axis_mac_tlast => rx_axis_mac_tlast,
+ rx_axis_mac_tvalid => rx_axis_mac_tvalid,
+ rx_axis_mac_tready => rx_axis_mac_tready,
+ tx_axis_clk => tx_axis_clk,
+ tx_axis_mac_tvalid => tx_axis_mac_tvalid,
+ tx_axis_mac_tlast => tx_axis_mac_tlast,
+ tx_axis_mac_tuser => tx_axis_mac_tuser,
+ tx_axis_mac_tready => tx_axis_mac_tready,
+ rgmii_txd_HI => rgmii_txd_HI,
+ rgmii_txd_LO => rgmii_txd_LO,
+ rgmii_tx_ctl_HI => rgmii_tx_ctl_HI,
+ rgmii_tx_ctl_LO => rgmii_tx_ctl_LO,
+ rgmii_txc_HI => rgmii_txc_HI,
+ rgmii_txc_LO => rgmii_txc_LO,
+ rgmii_rxd_HI => rgmii_rxd_HI,
+ rgmii_rxd_LO => rgmii_rxd_LO,
+ rgmii_rx_ctl_HI => rgmii_rx_ctl_HI,
+ rgmii_rx_ctl_LO => rgmii_rx_ctl_LO,
+ rgmii_rxc => rgmii_rxc,
+ s_axi_aclk => s_axi_aclk,
+ rx_axis_mac_tdata => rx_axis_mac_tdata,
+ tx_axis_mac_tdata => tx_axis_mac_tdata,
+ tx_axis_mac_tstrb => tx_axis_mac_tstrb,
+ rx_axis_mac_tstrb => rx_axis_mac_tstrb,
+ MdoEn => MdoEn,
+ Mdo => Mdo,
+ Mdi => Mdi,
+ Mdc => Mdc,
+ s_axi_araddr => s_axi_araddr,
+ s_axi_arready => s_axi_arready,
+ s_axi_arvalid => s_axi_arvalid,
+ s_axi_awaddr => s_axi_awaddr,
+ s_axi_awready => s_axi_awready,
+ s_axi_awvalid => s_axi_awvalid,
+ s_axi_bready => s_axi_bready,
+ s_axi_bresp => s_axi_bresp,
+ s_axi_bvalid => s_axi_bvalid,
+ s_axi_rdata => s_axi_rdata,
+ s_axi_rready => s_axi_rready,
+ s_axi_rresp => s_axi_rresp,
+ s_axi_rvalid => s_axi_rvalid,
+ s_axi_wdata => s_axi_wdata,
+ s_axi_wready => s_axi_wready,
+ s_axi_wvalid => s_axi_wvalid
+);
+
+------------------------ End INSTANTIATION Template ---------
diff --git a/Ti375C529_devkit/ip/gTSE/ipm/component.pickle b/Ti375C529_devkit/ip/gTSE/ipm/component.pickle
new file mode 100644
index 0000000..26ca13f
Binary files /dev/null and b/Ti375C529_devkit/ip/gTSE/ipm/component.pickle differ
diff --git a/Ti375C529_devkit/ip/gTSE/ipm/graph.pickle b/Ti375C529_devkit/ip/gTSE/ipm/graph.pickle
new file mode 100644
index 0000000..659a69b
Binary files /dev/null and b/Ti375C529_devkit/ip/gTSE/ipm/graph.pickle differ
diff --git a/Ti375C529_devkit/ip/gTSE/settings.json b/Ti375C529_devkit/ip/gTSE/settings.json
new file mode 100644
index 0000000..ae9734f
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE/settings.json
@@ -0,0 +1,46 @@
+{
+ "args": [
+ "-o",
+ "gTSE",
+ "--base_path",
+ "ip",
+ "--vlnv",
+ {
+ "vendor": "efinixinc.com",
+ "library": "ethernet",
+ "name": "efx_tsemac",
+ "version": "7.3"
+ }
+ ],
+ "conf": {
+ "VERSION": "16",
+ "TXFIFO_EN": "1'b1",
+ "RXFIFO_EN": "1'b1",
+ "TXFIFO_DTH": "4096",
+ "RXFIFO_DTH": "4096",
+ "PHY_INTF_MODE": "0",
+ "AXIS_DW": "8",
+ "RGMII_RXC_EDGE": "1'b1",
+ "RGMII_TXC_DLY": "1'b1",
+ "INTER_PACKET_GAP": "6'd12",
+ "MTU_FRAME_LENGTH": "16'd1518",
+ "MAC_SOURCE_ADDRESS": "48'd0",
+ "ENABLE_BROADCAST_FILTERING": "1'b1",
+ "LOOPBACK_EN": "1'b1",
+ "APBIF": "1'b0",
+ "ONCHIP_PHY": "1'b0"
+ },
+ "output": {
+ "external_testbench_modelsim": [],
+ "external_source_source": [],
+ "external_testbench_testbench": [],
+ "external_testbench_ncsim": [],
+ "external_testbench_synopsys": [],
+ "external_testbench_aldec": [],
+ "external_example_example": [],
+ "external_example_2": []
+ },
+ "ooc_synthesis": {},
+ "sw_version": "2026.1.132",
+ "external_path_option": "RELATIVE_PATH"
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gTSE_1to2_switch/axi_interconnect.vh b/Ti375C529_devkit/ip/gTSE_1to2_switch/axi_interconnect.vh
new file mode 100644
index 0000000..4163a66
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_1to2_switch/axi_interconnect.vh
@@ -0,0 +1,2 @@
+localparam M_BASE_ADDR = {32'h41000000,32'h40000000,32'h30000000,32'h20000000,32'h11100000,32'h11000000,32'h200,32'h0};
+localparam M_ADDR_WIDTH = {32'd20,32'd24,32'd28,32'd28,32'd20,32'd12,32'd8,32'd9};
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch.v b/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch.v
new file mode 100644
index 0000000..e8ebeb1
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch.v
@@ -0,0 +1,1281 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 5.6
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+`define IP_UUID _3abf8808e52e459c824b41829c7669da
+`define IP_NAME_CONCAT(a,b) a``b
+`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
+module gTSE_1to2_switch
+(
+ input rst_n,
+ input clk,
+ input [0:0] s_axi_awvalid,
+ input [31:0] s_axi_awaddr,
+ input [1:0] s_axi_awlock,
+ output [0:0] s_axi_awready,
+ input [0:0] s_axi_arvalid,
+ input [31:0] s_axi_araddr,
+ input [1:0] s_axi_arlock,
+ output [0:0] s_axi_arready,
+ input [0:0] s_axi_wvalid,
+ input [0:0] s_axi_wlast,
+ input [7:0] s_axi_wid,
+ input [0:0] s_axi_bready,
+ output [1:0] s_axi_bresp,
+ input [0:0] s_axi_rready,
+ output [7:0] s_axi_bid,
+ output [7:0] s_axi_rid,
+ input [31:0] s_axi_wdata,
+ output [31:0] s_axi_rdata,
+ output [1:0] s_axi_rresp,
+ output [0:0] s_axi_bvalid,
+ output [0:0] s_axi_rvalid,
+ output [0:0] s_axi_rlast,
+ input [3:0] s_axi_wstrb,
+ output [1:0] m_axi_awvalid,
+ output [63:0] m_axi_awaddr,
+ output [3:0] m_axi_awlock,
+ input [1:0] m_axi_awready,
+ output [1:0] m_axi_arvalid,
+ output [63:0] m_axi_araddr,
+ output [3:0] m_axi_arlock,
+ input [1:0] m_axi_arready,
+ output [1:0] m_axi_wvalid,
+ output [1:0] m_axi_wlast,
+ output [1:0] m_axi_bready,
+ input [3:0] m_axi_bresp,
+ output [1:0] m_axi_rready,
+ input [15:0] m_axi_bid,
+ input [15:0] m_axi_rid,
+ output [63:0] m_axi_wdata,
+ input [63:0] m_axi_rdata,
+ input [3:0] m_axi_rresp,
+ input [1:0] m_axi_bvalid,
+ input [1:0] m_axi_rvalid,
+ input [1:0] m_axi_rlast,
+ output [7:0] m_axi_wstrb,
+ input [1:0] m_axi_wready,
+ output [0:0] s_axi_wready
+);
+`IP_MODULE_NAME(efx_axi_interconnect)
+#(
+ .ARB_MODE ("ROUND_ROBIN_1"),
+ .S_PORTS (1),
+ .DATA_WIDTH (32),
+ .ADDR_WIDTH (32),
+ .M_PORTS (2),
+ .ID_WIDTH (8),
+ .USER_WIDTH (3),
+ .PROTOCOL ("AXI4_LITE")
+)
+u_efx_axi_interconnect
+(
+ .rst_n ( rst_n ),
+ .clk ( clk ),
+ .s_axi_awvalid ( s_axi_awvalid ),
+ .s_axi_awaddr ( s_axi_awaddr ),
+ .s_axi_awlock ( s_axi_awlock ),
+ .s_axi_awready ( s_axi_awready ),
+ .s_axi_arvalid ( s_axi_arvalid ),
+ .s_axi_araddr ( s_axi_araddr ),
+ .s_axi_arlock ( s_axi_arlock ),
+ .s_axi_arready ( s_axi_arready ),
+ .s_axi_wvalid ( s_axi_wvalid ),
+ .s_axi_wlast ( s_axi_wlast ),
+ .s_axi_wid ( s_axi_wid ),
+ .s_axi_bready ( s_axi_bready ),
+ .s_axi_bresp ( s_axi_bresp ),
+ .s_axi_rready ( s_axi_rready ),
+ .s_axi_bid ( s_axi_bid ),
+ .s_axi_rid ( s_axi_rid ),
+ .s_axi_wdata ( s_axi_wdata ),
+ .s_axi_rdata ( s_axi_rdata ),
+ .s_axi_rresp ( s_axi_rresp ),
+ .s_axi_bvalid ( s_axi_bvalid ),
+ .s_axi_rvalid ( s_axi_rvalid ),
+ .s_axi_rlast ( s_axi_rlast ),
+ .s_axi_wstrb ( s_axi_wstrb ),
+ .m_axi_awvalid ( m_axi_awvalid ),
+ .m_axi_awaddr ( m_axi_awaddr ),
+ .m_axi_awlock ( m_axi_awlock ),
+ .m_axi_awready ( m_axi_awready ),
+ .m_axi_arvalid ( m_axi_arvalid ),
+ .m_axi_araddr ( m_axi_araddr ),
+ .m_axi_arlock ( m_axi_arlock ),
+ .m_axi_arready ( m_axi_arready ),
+ .m_axi_wvalid ( m_axi_wvalid ),
+ .m_axi_wlast ( m_axi_wlast ),
+ .m_axi_bready ( m_axi_bready ),
+ .m_axi_bresp ( m_axi_bresp ),
+ .m_axi_rready ( m_axi_rready ),
+ .m_axi_bid ( m_axi_bid ),
+ .m_axi_rid ( m_axi_rid ),
+ .m_axi_wdata ( m_axi_wdata ),
+ .m_axi_rdata ( m_axi_rdata ),
+ .m_axi_rresp ( m_axi_rresp ),
+ .m_axi_bvalid ( m_axi_bvalid ),
+ .m_axi_rvalid ( m_axi_rvalid ),
+ .m_axi_rlast ( m_axi_rlast ),
+ .m_axi_wstrb ( m_axi_wstrb ),
+ .m_axi_wready ( m_axi_wready ),
+ .s_axi_wready ( s_axi_wready )
+);
+endmodule
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+BSiclTfEX07oDTPwvSfmqSh37gsGawnAkFDdQtfz2b2aPAbkkOIevgA5jmAEpk8Z
+jmjFoTAnEUNBHxHADHQl29GtYYLQLcTt1dvsb1L8xXXbyd41mZnW9qxR1yEXo2Km
+PmHE4/laDDFnEAn08I7oinDvTWN/plGfuIWWaEXC4z7ls9W1O5jNY2gj1ZC0oyT4
+iwzQ3cMmgvMMfqkgA6T8wMNFL1jvPdUxnuGh8qa0Q5zso+v2lpzszj4ytZLI8JZz
+ZeX/ipjz/4hUHkihXJPjFD+MetXdYJTpzRO3ZbxTOlyD1Ln8yDvo0qNPrgbzN9qq
+YropxHtLb22q5bZxY+vKMw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 9552 )
+`pragma protect data_block
++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
+`pragma protect end_protected
+
+//pragma protect end
+
+
+module `IP_MODULE_NAME(efx_axi_interconnect) #(
+ parameter PROTOCOL = "AXI4",
+ parameter ARB_MODE = "PRIORITY",
+ parameter S_PORTS = 1,
+ parameter M_PORTS = 8,
+ parameter ID_WIDTH = 8,
+ parameter DATA_WIDTH = 32,
+ parameter USER_WIDTH = 3,
+ parameter ADDR_WIDTH = 32,
+ parameter M_REGIONS = 1,
+ parameter M_CONNECT_READ = {M_PORTS{{S_PORTS{1'b1}}}},
+ parameter M_CONNECT_WRITE = {M_PORTS{{S_PORTS{1'b1}}}},
+ parameter STRB_WIDTH = DATA_WIDTH/8
+) (
+ input wire clk,
+ input wire rst_n,
+ input wire [S_PORTS-1:0] s_axi_awvalid,
+ input wire [S_PORTS*ADDR_WIDTH-1:0] s_axi_awaddr,
+ input wire [S_PORTS*3-1:0] s_axi_awprot,
+ input wire [S_PORTS*ID_WIDTH-1:0] s_axi_awid,
+ input wire [S_PORTS*2-1:0] s_axi_awburst,
+ input wire [S_PORTS*8-1:0] s_axi_awlen,
+ input wire [S_PORTS*3-1:0] s_axi_awsize,
+ input wire [S_PORTS*4-1:0] s_axi_awcache,
+ input wire [S_PORTS*4-1:0] s_axi_awqos,
+ input wire [S_PORTS*USER_WIDTH-1:0] s_axi_awuser,
+ input wire [S_PORTS*2-1:0] s_axi_awlock,
+ output reg [S_PORTS-1:0] s_axi_awready,
+ input wire [S_PORTS-1:0] s_axi_wvalid,
+ input wire [S_PORTS*DATA_WIDTH-1:0] s_axi_wdata,
+ input wire [S_PORTS*STRB_WIDTH-1:0] s_axi_wstrb,
+ input wire [S_PORTS-1:0] s_axi_wlast,
+ input wire [S_PORTS*USER_WIDTH-1:0] s_axi_wuser,
+ input wire [S_PORTS*ID_WIDTH-1:0] s_axi_wid,
+ output wire [S_PORTS-1:0] s_axi_wready,
+ input wire [S_PORTS-1:0] s_axi_bready,
+ output wire [S_PORTS*2-1:0] s_axi_bresp,
+ output reg [S_PORTS-1:0] s_axi_bvalid,
+ output wire [S_PORTS*ID_WIDTH-1:0] s_axi_bid,
+ output wire [S_PORTS*USER_WIDTH-1:0] s_axi_buser,
+ input wire [S_PORTS-1:0] s_axi_arvalid,
+ input wire [S_PORTS*ADDR_WIDTH-1:0] s_axi_araddr,
+ input wire [S_PORTS*3-1:0] s_axi_arprot,
+ input wire [S_PORTS*ID_WIDTH-1:0] s_axi_arid,
+ input wire [S_PORTS*2-1:0] s_axi_arburst,
+ input wire [S_PORTS*8-1:0] s_axi_arlen,
+ input wire [S_PORTS*3-1:0] s_axi_arsize,
+ input wire [S_PORTS*4-1:0] s_axi_arcache,
+ input wire [S_PORTS*4-1:0] s_axi_arqos,
+ input wire [S_PORTS*USER_WIDTH-1:0] s_axi_aruser,
+ input wire [S_PORTS*2-1:0] s_axi_arlock,
+ output reg [S_PORTS-1:0] s_axi_arready,
+ input wire [S_PORTS-1:0] s_axi_rready,
+ output wire [S_PORTS*ID_WIDTH-1:0] s_axi_rid,
+ output wire [S_PORTS*DATA_WIDTH-1:0] s_axi_rdata,
+ output wire [S_PORTS*2-1:0] s_axi_rresp,
+ output wire [S_PORTS-1:0] s_axi_rvalid,
+ output wire [S_PORTS-1:0] s_axi_rlast,
+ output wire [S_PORTS*USER_WIDTH-1:0] s_axi_ruser,
+ output reg [M_PORTS-1:0] m_axi_awvalid,
+ output wire [M_PORTS*ID_WIDTH-1:0] m_axi_awid,
+ output wire [M_PORTS*2-1:0] m_axi_awburst,
+ output wire [M_PORTS*8-1:0] m_axi_awlen,
+ output wire [M_PORTS*3-1:0] m_axi_awsize,
+ output wire [M_PORTS*4-1:0] m_axi_awcache,
+ output wire [M_PORTS*4-1:0] m_axi_awqos,
+ output wire [M_PORTS*4-1:0] m_axi_awregion,
+ output wire [M_PORTS*USER_WIDTH-1:0] m_axi_awuser,
+ output wire [M_PORTS*ADDR_WIDTH-1:0] m_axi_awaddr,
+ output wire [M_PORTS*3-1:0] m_axi_awprot,
+ output wire [M_PORTS*2-1:0] m_axi_awlock,
+ input wire [M_PORTS-1:0] m_axi_awready,
+ output wire [M_PORTS*DATA_WIDTH-1:0] m_axi_wdata,
+ output wire [M_PORTS*STRB_WIDTH-1:0] m_axi_wstrb,
+ output wire [M_PORTS-1:0] m_axi_wvalid,
+ output wire [M_PORTS-1:0] m_axi_wlast,
+ output wire [M_PORTS*USER_WIDTH-1:0] m_axi_wuser,
+ output wire [M_PORTS*ID_WIDTH-1:0] m_axi_wid,
+ input wire [M_PORTS-1:0] m_axi_wready,
+ input wire [M_PORTS*2-1:0] m_axi_bresp,
+ input wire [M_PORTS-1:0] m_axi_bvalid,
+ input wire [M_PORTS*ID_WIDTH-1:0] m_axi_bid,
+ input wire [M_PORTS*USER_WIDTH-1:0] m_axi_buser,
+ output reg [M_PORTS-1:0] m_axi_bready,
+ output reg [M_PORTS-1:0] m_axi_arvalid,
+ output wire [M_PORTS*ID_WIDTH-1:0] m_axi_arid,
+ output wire [M_PORTS*2-1:0] m_axi_arburst,
+ output wire [M_PORTS*8-1:0] m_axi_arlen,
+ output wire [M_PORTS*3-1:0] m_axi_arsize,
+ output wire [M_PORTS*4-1:0] m_axi_arcache,
+ output wire [M_PORTS*4-1:0] m_axi_arqos,
+ output wire [M_PORTS*4-1:0] m_axi_arregion,
+ output wire [M_PORTS*USER_WIDTH-1:0] m_axi_aruser,
+ output wire [M_PORTS*ADDR_WIDTH-1:0] m_axi_araddr,
+ output wire [M_PORTS*3-1:0] m_axi_arprot,
+ output wire [M_PORTS*2-1:0] m_axi_arlock,
+ input wire [M_PORTS-1:0] m_axi_arready,
+ input wire [M_PORTS*ID_WIDTH-1:0] m_axi_rid,
+ input wire [M_PORTS*DATA_WIDTH-1:0] m_axi_rdata,
+ input wire [M_PORTS*2-1:0] m_axi_rresp,
+ input wire [M_PORTS-1:0] m_axi_rvalid,
+ input wire [M_PORTS-1:0] m_axi_rlast,
+ input wire [M_PORTS*USER_WIDTH-1:0] m_axi_ruser,
+ output wire [M_PORTS-1:0] m_axi_rready
+);
+`include "axi_interconnect.vh"
+parameter S_PORTS_WIDTH = clog2(S_PORTS);
+parameter M_PORTS_WIDTH = clog2(M_PORTS);
+parameter M_BASE_ADDR_INT = M_BASE_ADDR ? M_BASE_ADDR : calcBaseAddrs(0);
+parameter IDLE = 0,
+ PORT_GRANT = 1,
+ ADDR_DECODE = 2,
+ WR_FORWARD = 3,
+ WR_RESPONSE = 4,
+ RD_REQUEST = 5,
+ RD_RETURN = 6,
+ DRP_REQUEST = 7,
+ DRP_WAIT = 8,
+ END_WAIT = 9;
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+h798DEoPCCw6eC93sfxnz8ZJ5DmYibE3rGjjhE+YK5a3RIfjyfpuQmm+Qi6hiWsS
+h21ZC3p98i4VCoRgq9ttjdMjEUVk6R1INC59AvJ35jeq6cjGdiMiIPwnlnHEAIqa
+kQUAn5DZG6XDT0Q74iMGbdiR7Uqpt242DlxQT/RPahxewbF7bTMwF22aKiwUymVQ
+WL77YlV9D3RHdY6gVwH+r4vNibfPRFoNglrFWdWkXgAM3QCILfTmCmNOrDP+tU67
+Sp1AnVUQDUfoMreLqPv9PxJK3wnCugVdw08bgxzbxycLpfzcQbzXtVTNLzpE9m/C
+m4DQ47zqQmz4Zj4f/JVRfg==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 25024 )
+`pragma protect data_block
+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
+VhTvV5MqNhAZpXfPbkZ0rQ==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+RwZLaWoAKLBm11tcUo3zg7WK2hPcNJvetUS0HcngH1N+uqVkxItkonJwS2nHozet
+PZ4e0pcL7oMHU+YSSKFGF0HZtDLJ6ggz9Tjk65W4OruIfJxIuyYdw9nbusKhaJTz
+khXz5VPO6s2gfnVif+az5zjoe7kudgxlxU7jmvaX9sbur5cFMS2KnJogDMLJcl1s
+ZlLL+9F5h5+8PKCF6eoiFm6TtkD7MrBiDjMDu9eLqZ5t8VgWYRMKduwEQ9J2M3t/
+JcbjL7GG+1h3LkL6WEKxF8zVIpKiu3k7UC98wKI8mhEpZ8bChW07nVCr4PHLn2IX
+BU9Qy5kOLqe8sKbl6LYs7g==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1312 )
+`pragma protect data_block
+p0bIW99zYvQA4u0XRWnQ90s6MugNpXe6l31pFNyBhuxQU67mS/BBRtYtc25nySM/
+yHwfDVEt2eeSh2xZ2Kv1d8VWucKTg8lXrK+ooXsXcYiy61IB12mnjuKPa/FUxFS4
+JM2AiESAcF0ks9YGnHz5atWTSPAnEYKTqIrZDoYqJkbgClLiRdrZY+N2hC5jdZeW
+cR1EkHw0PZqw6S2eCHL5hUi6ryPKMkre1oH3Xdag2DJT8qQxbuNqhhrm/L+8L8lX
+f5F3asZ05yCB1pnJRqVPESYDajoN8u1lWD18RYsWX60ld2PcwCxsHkPOyoBvAV1u
+PgCYq2l6s5FitBJR9RvIIWQXgYcJnkvvctXAE4sHkA/8YmzJKAUlmADFxObHh7nH
+B9Tr9F5MMMItWtOlRVOB7r7GpKZ4CIu9H0pG8rHeitdTJzb//0sRPwO4Ifpq00gF
+PYpm2+uw1qrcWOBG9wrbOEUMiFlt1c1y6CM7W0HiQg/FK+4Y4JiB7uaAlzUejTOI
+zOL6no+QbQSWHIEVAYNpQGNcTG+AuFlhiSI5DitSGvW5yCLRLs7Fv5AnqLM6z1Qg
+nRTXEKDaR/AFlAFB16izDRH4FYwpXtH01JTfdxvrFbPDjE2B07qlVwewnCVApXy1
+GNPPzEat9SO3vQ9t7PCKFzQV6OGGAn/dyMwguU6EDW8mcNxemcFiHUdiSfhhZpeH
+IcnqAMISo7J5oznEHRV6eZ2t27p8fCR6kY+/9tdw+mhgfM47E9D+jOa2LZcvRNK0
+IxKxNWtgUL0KlYtkFTGEhG+p36IePpoZOlbFukyAkrvx2uvJdjDKNhR7fljgKZp9
+ntpSnYfXJhwQrP8yTvoXUhnLpaxBTrh8cyLUFVm+2UtqRrz/+WA/Du8u19N0NmoU
+4Z65V0tXF/tW4DpeElKcg5Z9g3Srjon+LpuobgvaptlZ3rG7pXXklUAdxNfJ+4mu
+g8S64RYvfLamt1za0XyFbePfAbEPHUNKbKIqzGRB92kxJ6jYjgC9RQHp35SL3T55
+2DhArYHiRs4HAieVOggerJ2mFKRe1jgXpNH28cIvReVtjhPSR0h2/N1kktJoFN9j
+pAwsBXcE20H2DgeDq7MOl5klQOQIZqq2NOi/TtiDykzXOq9c52KT5YQDUiFYqQvD
+H29baw+SyQUZTso78q8DVb5S1dB3XyHStAKgoGq93+Wz/B1RLpKYack4xd4rdS5s
+pwx6XbBMdp7aDqOyz2KgKWf+dspEnt1aZSkLPUfnK1QqEuwBFSip0++f8lsYJwt6
+h2RR9rfNZmd8nt+mXhbGkKeiOagijsA/5zVB+4MgI0KR9sujHhdd3ikiYUTRDpcb
+AA7w3mFn6w2oiAcHGimR/cBGrmo7m6L0USsPGqFYBLIQfdAn5dEBlb2BCoA5VFZj
+jXKJF/jua7Y+DrPzh66goMGjpF9lBpoEP1rWQA/7bSpIp6mTsXcqppKrJq4X3UzK
+fnxoXMOzyXak8Q0RLDFj9NSgAWzr4VmwVpFWnocoXpsQlisCkXdTJvGnor8LLZr9
+sDZmzgcSix39SaRGPrUkPl4jLdocSaImMFvFf75Ln2LkiFK2PwLHbdxu5OHmQoCw
+7wBcsGkL2gXd3tYL2ns54yYSqMYHrxBbag+ndd5VaJnjZK34JNDCSh65qkKE7y7v
+Behj6SqW7qWtdmufzd16RndX/9C4+tnd6CZRltVVSxqHORQEFpJfBX3qZLp11vTQ
+Pib5SMqM0nVbJDVpqDeCAA==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+V7fazAcYfn/upNWI2MrDSQamEge7Y8sqGyEbHWTTDvIkXpdIuRisL8LJjvy83vue
+ZgYLruqRxsDQR/Wu7PMlj65sb/NkxpSPTHfwdQcOEP3MsixExszjuA1HqHtg+aNQ
+uFOiuMhxVPj6PMHq/Hqrqa85QcEVSbWPuLxSaFzY0ndkgyErZck8cU+0bbs6pFmr
+tNIeglsOu6Am3uxBT62KHdsx5/dbyBFUXzyoeMcVqVN/dSwFJEWKXykd+OnIo8cg
+TAWc+EOAJ6ExmKO/aLU8Un5EpThP6h/F+4FSrXQ8+zAfJHLLmWelIILCIn9r270y
+7CUxtRRDMVrzxeZaHx87Jw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1200 )
+`pragma protect data_block
+0H3ui++saKA3Qim7nBCnYyJXuXUUae6AJ4LYf9uQIt7dDyl6C5Q3z+wohgm7l6P/
+puE1YIk57wYrhZfaxaOZbQEeQcTD5dhNWYlNGXkVD3n3ordUMQqbpossg6k8GBbL
+hcT5AJLRLWp1fmFYHU/sChpXsLIvsw4ylUF+kPCiM/E2Qrxqk+h6yKLdH/qUhhl9
+SFhgQaFfWNjj6ajZXfTXAeH01G9YVoXQTrTURK7LCmy8Exrca33pvD2n8qRjNHVC
+SMvlBAlMyB9GhVbgRH5g1J3eexKd42EKVG1OYkkLmaw/2mYb6XQBYWGV+JPCs/lf
+iK57mI1tmXdY1dZroI+VNNMZ2ERNO1xPtSdY84zkg7t8kqVOzrKucAQtG6cbtv1M
+zOk4T1+sHwfHB5B0MAQxfUujCPIx48x0ucEJPziWVe4xGSV7Y/CdKWRJKyu1t9Fd
+RrGJ90FB8JcoftYS17u1PRbcM0J+K9rYOujMCI2wOiGLeakIZUzeUlYgu3AhwJ+p
+rFTdyQbZfeR1hJMbKn0z9kiVI7O//BPB79Ovy0ckHGOWpsznVPMik4mcftaUGBo/
+SKRhNP5RZ7ADTWwNcGVQ50K6Uk/FWRH/LjkzUDgrlN+BL9CVLgTUzw4n7TXZLYO1
+UUMwg1Abr+r4azUlV2lllRgjlWSPEmPeuWdkmDLE1kzi81/3MG9dkGcEzpCjQn1g
+wlq08l1m/9D6ssj9X+L9zWestpPbK8KKA36LM44lR7JM48DHZp/GFFbwyCyfem5J
+Yk9dQrVMSLDeQfsKUdIRfzsLFIcVo9j9nAjaOh5icY9Ju14nqLljzJxMSLXwpRpN
+pHlAUZkLKZ81BR2lNUcueWoYr1mNO5wt/8ZXKNAe4baXyx5pQlkEoPhDAu/MmaoV
+IQmRsNZAJw70Y6wneeDDkHad2vIHrOElxrM5Lnlhdq1qO4G2CjQ03nmLodMZn/cu
+JhstoiAqinvEClsBGQAEn59Mk5wMvMergihuxdt6qTvztnpZTBcB2JqJyHkCY2xR
+XYx3muggMb4QtLLic31NtDmfG8SMy5jpSvmNNdDUrcWI5vOaLo+t2/mVb5p6U/Z8
+WsFN6j8TpdcSc+yFYrWVYf/mabwUsQccMAaYaGcHwQTAXW/zRUxCfgK2BtB9AUG3
+Kwe4fuqZPo1NDmSSdATNh7Ls+wMag23tKAtoVCW+TQ3lLpto8vUWhWKQTH1PsQRx
++KWcJaJK96bA+80M/q4HUzR+yC6IUVQ9VRvWhgG0ygZTLKmQmJ/DKIzlw1lxCkA3
+JF0FRPBrpi2n+UOIXtU6FUAnUoSUl8Eeuwpycld1aaAI++CWVpk0pdWCRD85nBNb
+vAQ7vQzvYravu3V0bHTVB/w+yyy05bUUjf1aVui34DyQ1QLLkq3XQF2v9st57JGH
+egpS3SZqHPJ0AZAJJvkOXoxVRMHu48i9M6Wx9Qjtrh9EJee4xLdxqYrF04J9h9ck
+AvKxciqIeVCjtaleTRBLEWnwUKa6wADHB0WNBFNEidDe8gAcwWkZyKkh/VaUiupU
+5Cv90Shsjvie3xvNr1QXSLjEkUzHLYrvPv6IGVvcwtPvJNwajthWm4H1o8D7rdfK
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+idlb0ipwgIc0hiUfW9lCBvIc27j+O1T55dJ3BL9eUyC3AmELfvx2LyGUfXvUfYTf
+8sHVL37lgxYwkxIH4ZSSZQ1GK2zLKlNHYUEmXZIR/WoNIg7U3rYo+/OAX5LDNWz3
+I3htHfdktV9gYc7iVdI9VNrqBa0Gg55NmIOrO+wM2ME4dVbdMJVDfW+oOu9rTeme
+KOonn0oR5/zNCWcqkhf2z6BLLm49S0wwKQJc9Tn8j8aAVVAS5PR4HM/UAt+Pm5Qw
+qUaeukXs5OImR86WKmCfOXrROtxYmBZ//zwyzxGdjene5Dzf1Lue74V7vg9Yy8Es
+kofIx1Iiwvl5uhKqK0ZywQ==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1984 )
+`pragma protect data_block
+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
+M6eR/VTYArPQbA4OoPqXhQ==
+`pragma protect end_protected
+
+//pragma protect end
+
+
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+kjevziVpR4HNp6ABOs1UfEhnb+dX0JPweI6S3+LX30C9LF3xx7Xd/zMszyIOAsff
+hodfZOinnjjXzBncB8lZ/iwEBQcN9AOUuJkxqHw0xEX9lKugu7WOxROcH+yiXxDJ
+yy9yDzS1F865ocB3xO9FWkMnml1XZRqox2FTUI5GMVk0MxMQPCoaWPmG40cuqt8H
+oNSQWIvbZ0bwp2zXvC4BQlkXD2oWWu6JxxVIVspZ7XmHHSfSB+gK8bmQIk2JZPQd
+nB3A0s+SLUanWE/u+Muh6A5t3kkuvJ5Fy1rRHEwle6WO6L5S2arPlksoYEp7hfDo
+eW9+LO7WnZdnt0b3dQw5Mw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1104 )
+`pragma protect data_block
+LX5Dxt8B2z9u2haDN6HkGNj1Nxa2zeRWxlMLLnbgcY2+2ueKKYern04T7l3DicpU
+GAgNW7GQnUadJWzOBc5yfD2Z7DyC1zg+m258ATNxkXP9Ag8Pfl4MhmlpUpmkc23o
+YSNVfWttcQespNGB+Kj9g+/b/Ltzb/Pp1dgaxi5NIlG7FsWis/B/nSO/Vd0xLa8l
+gdvKVbsSlGSB1tT5WBnrVIsaLuvPuUdgdvXFHzLrEscW/eC28+m22DdewgK9tHYj
+l4yaTKwJ+7R2jtaFZr8jMmcRudxesBNt1kTJeA9U1nitqtdHVp23JcdwKc05jnrW
+tx2+meDVE/d5vcxlhTdpO8sz2YOw2Z0bAN+ieJFfUDfTuopqPBMc5GBfsrD40ELk
+H3q+hGhS+dIM3hrqhKDRW3tPFmcE5szwJbmOAxflm1SvQmlOnQVePLGdCuOZUUiI
+tz++pZ5FH+uAdkA40yZWh5MnKo5IcfFxWM2Jsum3JZvmVMjnI7N1x8f70kUe3UgZ
+KEcI12J/dpNLgdFOl+74xfjhKGoKm/BgN6Eb01T1RtdX6u5xQtgGCuv62jDE/Yt3
+eJjRnF/x+Ay39zeCLP9UQvypybEe14bN7gfHfWoAQe9HIG87Fm2nKjAzASr6QFRV
+DL1jo931/n1Lv9oZuWMfaF7ZCTxH6A9fBYglk+u3TWHi+TkymppU4hV3XjEHw3B7
+wrSwISGJRMUoCJ0wh/W9Iqj3EDcLmFUIHicsgmfrUkpdpcDqQYIKmCedP/+uQ37E
+hBOgLdq2ET/+T377dhiMAvLWIMnT6X9iEzqdVEMfkuPgbBZetAoTzb7IozmdA14+
+3PCjcT9XV5Hxvw1vyLKchF3xGFPaDFJgGJtzSIMeyTd9yK/++OeT1TQ0HFPfjjqB
+LI0xhfRlEGqOj1YzmolIUWRdGapI6Ywt79vK6KTeqg9K4jHGe3R1t2SJUnNELlNy
+Ju1RcPdn+2rNasE/ecNNfcArJ3ReZiWkO6Urua3WtmUiTzAVXd6UD4GUf3QUw0J5
+AefzuP3tFE5IfHRFmTZWTm7Y/JLAztWyBuag+6TRZLBlyPJDyNieFGTz4SEyTkAc
+CyJ51RLW7x5j/8mo5k2anYrG7q1YYjOUQHyaLPL/RwYcBBJS38HGPAl44N6KsB9m
+PGaS88rOnKmcVDest/nmsVi5/wR7C0xrMTpo2i2v7wOVW53j3SANDy4UhRYGQ75m
+9+CZTXcObV1oXJW0me53hFtEJ+qHc7eFGKyCVwTNanP47XH3aJey3ulpiTKXp9iD
+rurNoDvwMo1/Wv8495pWfGIS50V6wFEVgh2p6gt3S7meUf9sdMYrrKeQAKEna1ne
+Rf8O+xm0FaLvKNBVaPV3ISnRU2qTxpWhaUb3vTQN4TODsKco29kkHPqYRTREwU5p
+4ExJ23nclyx/By+ugg0UnN5jZ/DGDMK6ZJ2abjL+WrT31jFUNXgt+rmb/8ViJNIm
+`pragma protect end_protected
+
+//pragma protect end
+
+`undef IP_UUID
+`undef IP_NAME_CONCAT
+`undef IP_MODULE_NAME
diff --git a/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_define.vh b/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_define.vh
new file mode 100644
index 0000000..5296368
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_define.vh
@@ -0,0 +1,53 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 5.6
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+localparam ARB_MODE = "ROUND_ROBIN_1";
+localparam S_PORTS = 1;
+localparam DATA_WIDTH = 32;
+localparam ADDR_WIDTH = 32;
+localparam M_PORTS = 2;
+localparam ID_WIDTH = 8;
+localparam USER_WIDTH = 3;
+localparam PROTOCOL = "AXI4_LITE";
diff --git a/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_tmpl.v b/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_tmpl.v
new file mode 100644
index 0000000..228f904
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_tmpl.v
@@ -0,0 +1,97 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2026.1.132
+// IP Version: 5.6
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+gTSE_1to2_switch u_gTSE_1to2_switch
+(
+ .rst_n ( rst_n ),
+ .clk ( clk ),
+ .s_axi_awvalid ( s_axi_awvalid ),
+ .s_axi_awaddr ( s_axi_awaddr ),
+ .s_axi_awlock ( s_axi_awlock ),
+ .s_axi_awready ( s_axi_awready ),
+ .s_axi_arvalid ( s_axi_arvalid ),
+ .s_axi_araddr ( s_axi_araddr ),
+ .s_axi_arlock ( s_axi_arlock ),
+ .s_axi_arready ( s_axi_arready ),
+ .s_axi_wvalid ( s_axi_wvalid ),
+ .s_axi_wlast ( s_axi_wlast ),
+ .s_axi_wid ( s_axi_wid ),
+ .s_axi_bready ( s_axi_bready ),
+ .s_axi_bresp ( s_axi_bresp ),
+ .s_axi_rready ( s_axi_rready ),
+ .s_axi_bid ( s_axi_bid ),
+ .s_axi_rid ( s_axi_rid ),
+ .s_axi_wdata ( s_axi_wdata ),
+ .s_axi_rdata ( s_axi_rdata ),
+ .s_axi_rresp ( s_axi_rresp ),
+ .s_axi_bvalid ( s_axi_bvalid ),
+ .s_axi_rvalid ( s_axi_rvalid ),
+ .s_axi_rlast ( s_axi_rlast ),
+ .s_axi_wstrb ( s_axi_wstrb ),
+ .m_axi_awvalid ( m_axi_awvalid ),
+ .m_axi_awaddr ( m_axi_awaddr ),
+ .m_axi_awlock ( m_axi_awlock ),
+ .m_axi_awready ( m_axi_awready ),
+ .m_axi_arvalid ( m_axi_arvalid ),
+ .m_axi_araddr ( m_axi_araddr ),
+ .m_axi_arlock ( m_axi_arlock ),
+ .m_axi_arready ( m_axi_arready ),
+ .m_axi_wvalid ( m_axi_wvalid ),
+ .m_axi_wlast ( m_axi_wlast ),
+ .m_axi_bready ( m_axi_bready ),
+ .m_axi_bresp ( m_axi_bresp ),
+ .m_axi_rready ( m_axi_rready ),
+ .m_axi_bid ( m_axi_bid ),
+ .m_axi_rid ( m_axi_rid ),
+ .m_axi_wdata ( m_axi_wdata ),
+ .m_axi_rdata ( m_axi_rdata ),
+ .m_axi_rresp ( m_axi_rresp ),
+ .m_axi_bvalid ( m_axi_bvalid ),
+ .m_axi_rvalid ( m_axi_rvalid ),
+ .m_axi_rlast ( m_axi_rlast ),
+ .m_axi_wstrb ( m_axi_wstrb ),
+ .m_axi_wready ( m_axi_wready ),
+ .s_axi_wready ( s_axi_wready )
+);
diff --git a/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_tmpl.vhd b/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_tmpl.vhd
new file mode 100644
index 0000000..f73b627
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_tmpl.vhd
@@ -0,0 +1,149 @@
+--------------------------------------------------------------------------------
+-- Copyright (C) 2013-2026 Efinix Inc. All rights reserved.
+--
+-- This document contains proprietary information which is
+-- protected by copyright. All rights are reserved. This notice
+-- refers to original work by Efinix, Inc. which may be derivitive
+-- of other work distributed under license of the authors. In the
+-- case of derivative work, nothing in this notice overrides the
+-- original author's license agreement. Where applicable, the
+-- original license agreement is included in it's original
+-- unmodified form immediately below this header.
+--
+-- WARRANTY DISCLAIMER.
+-- THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+-- EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+-- RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+-- INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+-- MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+-- PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+-- WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+--
+-- LIMITATION OF LIABILITY.
+-- NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+-- INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+-- MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+-- OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+-- SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+-- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+-- GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+-- MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+-- THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+-- (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+-- BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+-- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+-- CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+-- APPLY TO LICENSEE.
+--
+--------------------------------------------------------------------------------
+------------- Begin Cut here for COMPONENT Declaration ------
+component gTSE_1to2_switch is
+port (
+ rst_n : in std_logic;
+ clk : in std_logic;
+ s_axi_awvalid : in std_logic_vector(0 to 0);
+ s_axi_awaddr : in std_logic_vector(31 downto 0);
+ s_axi_awlock : in std_logic_vector(1 downto 0);
+ s_axi_awready : out std_logic_vector(0 to 0);
+ s_axi_arvalid : in std_logic_vector(0 to 0);
+ s_axi_araddr : in std_logic_vector(31 downto 0);
+ s_axi_arlock : in std_logic_vector(1 downto 0);
+ s_axi_arready : out std_logic_vector(0 to 0);
+ s_axi_wvalid : in std_logic_vector(0 to 0);
+ s_axi_wlast : in std_logic_vector(0 to 0);
+ s_axi_wid : in std_logic_vector(7 downto 0);
+ s_axi_bready : in std_logic_vector(0 to 0);
+ s_axi_bresp : out std_logic_vector(1 downto 0);
+ s_axi_rready : in std_logic_vector(0 to 0);
+ s_axi_bid : out std_logic_vector(7 downto 0);
+ s_axi_rid : out std_logic_vector(7 downto 0);
+ s_axi_wdata : in std_logic_vector(31 downto 0);
+ s_axi_rdata : out std_logic_vector(31 downto 0);
+ s_axi_rresp : out std_logic_vector(1 downto 0);
+ s_axi_bvalid : out std_logic_vector(0 to 0);
+ s_axi_rvalid : out std_logic_vector(0 to 0);
+ s_axi_rlast : out std_logic_vector(0 to 0);
+ s_axi_wstrb : in std_logic_vector(3 downto 0);
+ m_axi_awvalid : out std_logic_vector(1 downto 0);
+ m_axi_awaddr : out std_logic_vector(63 downto 0);
+ m_axi_awlock : out std_logic_vector(3 downto 0);
+ m_axi_awready : in std_logic_vector(1 downto 0);
+ m_axi_arvalid : out std_logic_vector(1 downto 0);
+ m_axi_araddr : out std_logic_vector(63 downto 0);
+ m_axi_arlock : out std_logic_vector(3 downto 0);
+ m_axi_arready : in std_logic_vector(1 downto 0);
+ m_axi_wvalid : out std_logic_vector(1 downto 0);
+ m_axi_wlast : out std_logic_vector(1 downto 0);
+ m_axi_bready : out std_logic_vector(1 downto 0);
+ m_axi_bresp : in std_logic_vector(3 downto 0);
+ m_axi_rready : out std_logic_vector(1 downto 0);
+ m_axi_bid : in std_logic_vector(15 downto 0);
+ m_axi_rid : in std_logic_vector(15 downto 0);
+ m_axi_wdata : out std_logic_vector(63 downto 0);
+ m_axi_rdata : in std_logic_vector(63 downto 0);
+ m_axi_rresp : in std_logic_vector(3 downto 0);
+ m_axi_bvalid : in std_logic_vector(1 downto 0);
+ m_axi_rvalid : in std_logic_vector(1 downto 0);
+ m_axi_rlast : in std_logic_vector(1 downto 0);
+ m_axi_wstrb : out std_logic_vector(7 downto 0);
+ m_axi_wready : in std_logic_vector(1 downto 0);
+ s_axi_wready : out std_logic_vector(0 to 0)
+);
+end component gTSE_1to2_switch;
+
+---------------------- End COMPONENT Declaration ------------
+------------- Begin Cut here for INSTANTIATION Template -----
+u_gTSE_1to2_switch : gTSE_1to2_switch
+port map (
+ rst_n => rst_n,
+ clk => clk,
+ s_axi_awvalid => s_axi_awvalid,
+ s_axi_awaddr => s_axi_awaddr,
+ s_axi_awlock => s_axi_awlock,
+ s_axi_awready => s_axi_awready,
+ s_axi_arvalid => s_axi_arvalid,
+ s_axi_araddr => s_axi_araddr,
+ s_axi_arlock => s_axi_arlock,
+ s_axi_arready => s_axi_arready,
+ s_axi_wvalid => s_axi_wvalid,
+ s_axi_wlast => s_axi_wlast,
+ s_axi_wid => s_axi_wid,
+ s_axi_bready => s_axi_bready,
+ s_axi_bresp => s_axi_bresp,
+ s_axi_rready => s_axi_rready,
+ s_axi_bid => s_axi_bid,
+ s_axi_rid => s_axi_rid,
+ s_axi_wdata => s_axi_wdata,
+ s_axi_rdata => s_axi_rdata,
+ s_axi_rresp => s_axi_rresp,
+ s_axi_bvalid => s_axi_bvalid,
+ s_axi_rvalid => s_axi_rvalid,
+ s_axi_rlast => s_axi_rlast,
+ s_axi_wstrb => s_axi_wstrb,
+ m_axi_awvalid => m_axi_awvalid,
+ m_axi_awaddr => m_axi_awaddr,
+ m_axi_awlock => m_axi_awlock,
+ m_axi_awready => m_axi_awready,
+ m_axi_arvalid => m_axi_arvalid,
+ m_axi_araddr => m_axi_araddr,
+ m_axi_arlock => m_axi_arlock,
+ m_axi_arready => m_axi_arready,
+ m_axi_wvalid => m_axi_wvalid,
+ m_axi_wlast => m_axi_wlast,
+ m_axi_bready => m_axi_bready,
+ m_axi_bresp => m_axi_bresp,
+ m_axi_rready => m_axi_rready,
+ m_axi_bid => m_axi_bid,
+ m_axi_rid => m_axi_rid,
+ m_axi_wdata => m_axi_wdata,
+ m_axi_rdata => m_axi_rdata,
+ m_axi_rresp => m_axi_rresp,
+ m_axi_bvalid => m_axi_bvalid,
+ m_axi_rvalid => m_axi_rvalid,
+ m_axi_rlast => m_axi_rlast,
+ m_axi_wstrb => m_axi_wstrb,
+ m_axi_wready => m_axi_wready,
+ s_axi_wready => s_axi_wready
+);
+
+------------------------ End INSTANTIATION Template ---------
diff --git a/Ti375C529_devkit/ip/gTSE_1to2_switch/ipm/component.pickle b/Ti375C529_devkit/ip/gTSE_1to2_switch/ipm/component.pickle
new file mode 100644
index 0000000..d2a83a4
Binary files /dev/null and b/Ti375C529_devkit/ip/gTSE_1to2_switch/ipm/component.pickle differ
diff --git a/Ti375C529_devkit/ip/gTSE_1to2_switch/ipm/graph.pickle b/Ti375C529_devkit/ip/gTSE_1to2_switch/ipm/graph.pickle
new file mode 100644
index 0000000..ed0f82c
Binary files /dev/null and b/Ti375C529_devkit/ip/gTSE_1to2_switch/ipm/graph.pickle differ
diff --git a/Ti375C529_devkit/ip/gTSE_1to2_switch/settings.json b/Ti375C529_devkit/ip/gTSE_1to2_switch/settings.json
new file mode 100644
index 0000000..59f9f96
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_1to2_switch/settings.json
@@ -0,0 +1,54 @@
+{
+ "args": [
+ "-o",
+ "gTSE_1to2_switch",
+ "--base_path",
+ "ip",
+ "--vlnv",
+ {
+ "vendor": "efinixinc.com",
+ "library": "axi_infra",
+ "name": "efx_axi_interconnect",
+ "version": "5.6"
+ }
+ ],
+ "conf": {
+ "ARB_MODE": "\"ROUND_ROBIN_1\"",
+ "S_PORTS": "1",
+ "TABLE0_AXI_S0__MIN": "32'd0",
+ "TABLE0_AXI_S1__MIN": "32'd512",
+ "TABLE0_AXI_S2__MIN": "32'd285212672",
+ "TABLE0_AXI_S3__MIN": "32'd286261248",
+ "TABLE0_AXI_S4__MIN": "32'd536870912",
+ "TABLE0_AXI_S5__MIN": "32'd805306368",
+ "TABLE0_AXI_S6__MIN": "32'd1073741824",
+ "TABLE0_AXI_S7__MIN": "32'd1090519040",
+ "TABLE0_AXI_S0__MAX": "32'd9",
+ "TABLE0_AXI_S1__MAX": "32'd8",
+ "TABLE0_AXI_S2__MAX": "32'd12",
+ "TABLE0_AXI_S3__MAX": "32'd20",
+ "TABLE0_AXI_S4__MAX": "32'd28",
+ "TABLE0_AXI_S5__MAX": "32'd28",
+ "TABLE0_AXI_S6__MAX": "32'd24",
+ "TABLE0_AXI_S7__MAX": "32'd20",
+ "DATA_WIDTH": "32",
+ "ADDR_WIDTH": "32",
+ "M_PORTS": "2",
+ "ID_WIDTH": "8",
+ "USER_WIDTH": "3",
+ "PROTOCOL": "\"AXI4_LITE\""
+ },
+ "output": {
+ "external_script_generator": [],
+ "external_source_source": [],
+ "external_example_example": [],
+ "external_testbench_synopsys": [],
+ "external_testbench_modelsim": [],
+ "external_testbench_ncsim": [],
+ "external_testbench_aldec": [],
+ "external_testbench_testbench": []
+ },
+ "ooc_synthesis": {},
+ "sw_version": "2026.1.132",
+ "external_path_option": "RELATIVE_PATH"
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl.sv b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl.sv
new file mode 100644
index 0000000..1562fb2
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl.sv
@@ -0,0 +1,1587 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 8.1
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+`define IP_UUID _0340c286f12f4e3bb92b102aa178f77b
+`define IP_NAME_CONCAT(a,b) a``b
+`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
+module gTSE_core_fifo_ctrl
+(
+ output full_o,
+ output empty_o,
+ input wr_clk_i,
+ input rd_clk_i,
+ input wr_en_i,
+ input rd_en_i,
+ input [15:0] wdata,
+ output rst_busy,
+ output [15:0] rdata,
+ input a_rst_i,
+ output [9:0] wr_datacount_o,
+ output [9:0] rd_datacount_o
+);
+`IP_MODULE_NAME(efx_fifo_top)
+#(
+ .SYNC_CLK (0),
+ .SYNC_STAGE (2),
+ .DATA_WIDTH (16),
+ .MODE ("FWFT"),
+ .OUTPUT_REG (0),
+ .PROG_FULL_ASSERT (128),
+ .PROGRAMMABLE_FULL ("NONE"),
+ .PROG_FULL_NEGATE (128),
+ .PROGRAMMABLE_EMPTY ("NONE"),
+ .PROG_EMPTY_ASSERT (2),
+ .PROG_EMPTY_NEGATE (3),
+ .OPTIONAL_FLAGS (0),
+ .PIPELINE_REG (1),
+ .DEPTH (512),
+ .FAMILY ("TITANIUM"),
+ .ASYM_WIDTH_RATIO (4),
+ .BYPASS_RESET_SYNC (0),
+ .ENDIANESS (0),
+ .RAM_STYLE ("block_ram"),
+ .OVERFLOW_PROTECT (0),
+ .UNDERFLOW_PROTECT (0)
+)
+u_efx_fifo_top
+(
+ .full_o ( full_o ),
+ .empty_o ( empty_o ),
+ .wr_clk_i ( wr_clk_i ),
+ .rd_clk_i ( rd_clk_i ),
+ .wr_en_i ( wr_en_i ),
+ .rd_en_i ( rd_en_i ),
+ .wdata ( wdata ),
+ .rst_busy ( rst_busy ),
+ .rdata ( rdata ),
+ .a_rst_i ( a_rst_i ),
+ .wr_datacount_o ( wr_datacount_o ),
+ .rd_datacount_o ( rd_datacount_o )
+);
+endmodule
+
+/////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / gray2bin.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / Gray to Binary Encoding Convertor
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+// 1.0 Initial rev
+//
+// *******************************
+
+`resetall
+`timescale 1ns/1ps
+
+module `IP_MODULE_NAME(efx_fifo_gray2bin)
+#(parameter WIDTH=5)
+(// outputs
+ output wire [WIDTH-1:0] bin_o,
+ // input
+ input [WIDTH-1:0] gray_i);
+
+//---------------------------------------------------------------------
+// Recursive Module
+// Description: reduction xor
+generate
+ if (WIDTH > 1) begin
+ wire [1:0] bin_1;
+ assign bin_1 = {gray_i[WIDTH-1], gray_i[WIDTH-1]^gray_i[WIDTH-2]};
+ if (WIDTH == 2) begin
+ assign bin_o = bin_1;
+ end
+ else begin
+ assign bin_o[WIDTH-1] = bin_1[1];
+ `IP_MODULE_NAME(efx_fifo_gray2bin) #(.WIDTH(WIDTH-1)) u_gray2bin (.bin_o(bin_o[WIDTH-2:0]), .gray_i({bin_1[0], gray_i[WIDTH-3:0]}));
+ end
+ end
+ else /* if (WIDTH == 1) */
+ assign bin_o = gray_i;
+endgenerate
+
+endmodule
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / bin2gray.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / Binary to Gray Encoding Convertor
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+// 1.0 Initial rev
+//
+// *******************************
+
+`resetall
+`timescale 1ns/1ps
+
+module `IP_MODULE_NAME(efx_fifo_bin2gray)
+#(parameter WIDTH=5)
+(// outputs
+ output wire [WIDTH-1:0] gray_o,
+ // input
+ input [WIDTH-1:0] bin_i
+ );
+
+//---------------------------------------------------------------------
+// Function : bit_xor
+// Description: reduction xor
+function bit_xor (
+ input [31:0] nex_bit,
+ input [31:0] curr_bit,
+ input [WIDTH-1:0] xor_in);
+ begin : fn_bit_xor
+ bit_xor = xor_in[nex_bit] ^ xor_in[curr_bit];
+ end
+endfunction
+
+// Convert Binary to Gray, bit by bit
+generate
+begin
+ genvar bit_idx;
+ for(bit_idx=0; bit_idx 1) begin
+ depth = depth - 1;
+ for (depth2width=0; depth>0; depth2width = depth2width + 1)
+ depth = depth>>1;
+ end
+ else
+ depth2width = 0;
+end
+endfunction
+
+function integer width2depth;
+input [31:0] width;
+begin : fnWidth2Depth
+ width2depth = width**2;
+end
+endfunction
+
+function integer rdwidthcompute;
+input [31:0] asym_option;
+input [31:0] wr_width;
+begin : RdWidthCompute
+ rdwidthcompute = (asym_option==0)? wr_width/16 :
+ (asym_option==1)? wr_width/8 :
+ (asym_option==2)? wr_width/4 :
+ (asym_option==3)? wr_width/2 :
+ (asym_option==4)? wr_width/1 :
+ (asym_option==5)? wr_width*2 :
+ (asym_option==6)? wr_width*4 :
+ (asym_option==7)? wr_width*8 :
+ (asym_option==8)? wr_width*16 : wr_width/1;
+end
+endfunction
+
+function integer rddepthcompute;
+input [31:0] wr_depth;
+input [31:0] wr_width;
+input [31:0] rd_width;
+begin : RdDepthCompute
+ rddepthcompute = (wr_depth * wr_width) / rd_width;
+end
+endfunction
+
+endmodule
+
+
+/////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / simple_dual_port_ram_fifo.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / EFX FIFO
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+//
+// *******************************
+
+module `IP_MODULE_NAME(efx_fifo_ram) #(
+ parameter FAMILY = "TRION",
+ parameter WR_DEPTH = 512,
+ parameter RD_DEPTH = 512,
+ parameter WDATA_WIDTH = 8,
+ parameter RDATA_WIDTH = 8,
+ parameter WADDR_WIDTH = 9,
+ parameter RADDR_WIDTH = 9,
+ parameter OUTPUT_REG = 1,
+ parameter RAM_MUX_RATIO = 4,
+ parameter ENDIANESS = 0, //0: Big endian (default) 1: Little endian
+ parameter RAM_STYLE = "block_ram"
+) (
+ input wire wclk,
+ input wire rclk,
+ input wire we,
+ input wire re,
+ input wire [(WDATA_WIDTH-1):0] wdata,
+ input wire [(WADDR_WIDTH-1):0] waddr,
+ input wire [(RADDR_WIDTH-1):0] raddr,
+ output wire [(RDATA_WIDTH-1):0] rdata
+);
+
+localparam MEM_DEPTH = (WR_DEPTH > RD_DEPTH) ? WR_DEPTH : RD_DEPTH;
+localparam MEM_DATA_WIDTH = (WDATA_WIDTH > RDATA_WIDTH) ? RDATA_WIDTH : WDATA_WIDTH;
+localparam LSB_WIDTH = (WADDR_WIDTH > RADDR_WIDTH) ? (WADDR_WIDTH - RADDR_WIDTH) : (RADDR_WIDTH - WADDR_WIDTH);
+localparam RDATA_WDATA_RATIO = (RDATA_WIDTH <= WDATA_WIDTH/32) ? "ONE_THIRTYTWO" :
+ (RDATA_WIDTH <= WDATA_WIDTH/16) ? "ONE_SIXTEENTH" :
+ (RDATA_WIDTH <= WDATA_WIDTH/8) ? "ONE_EIGHTH" :
+ (RDATA_WIDTH <= WDATA_WIDTH/4) ? "ONE_FOURTH" :
+ (RDATA_WIDTH <= WDATA_WIDTH/2) ? "ONE_HALF" :
+ (RDATA_WIDTH <= WDATA_WIDTH) ? "ONE" :
+ (RDATA_WIDTH <= WDATA_WIDTH*2) ? "TWO_TIMES" :
+ (RDATA_WIDTH <= WDATA_WIDTH*4) ? "FOUR_TIMES" :
+ (RDATA_WIDTH <= WDATA_WIDTH*4) ? "EIGHT_TIMES" :
+ (RDATA_WIDTH <= WDATA_WIDTH*4) ? "SIXTEEN_TIMES" : "THIRTYTWO_TIMES";
+
+(* syn_ramstyle = RAM_STYLE *) reg [MEM_DATA_WIDTH-1:0] ram[MEM_DEPTH-1:0];
+reg [RDATA_WIDTH-1:0] r_rdata_1P;
+reg [RDATA_WIDTH-1:0] r_rdata_2P;
+
+wire re_int;
+
+generate
+ if (FAMILY == "TRION") begin
+ if (RDATA_WDATA_RATIO == "ONE") begin
+ always @ (posedge wclk) begin
+ if (we)
+ ram[waddr] <= wdata;
+ end
+
+ always @ (posedge rclk) begin
+ if (re_int) begin
+ r_rdata_1P <= ram[raddr];
+ end
+ r_rdata_2P <= r_rdata_1P;
+ end
+ end
+
+ else if (RDATA_WDATA_RATIO == "ONE_THIRTYTWO" || RDATA_WDATA_RATIO == "ONE_SIXTEENTH" || RDATA_WDATA_RATIO == "ONE_EIGHTH" || RDATA_WDATA_RATIO == "ONE_FOURTH" || RDATA_WDATA_RATIO == "ONE_HALF" ) begin
+ if (ENDIANESS == 0) begin
+ integer i;
+ always @ (posedge wclk) begin
+ for (i=0; i= WR_DEPTH-1;
+ assign rd_almost_empty = rd_datacount <= 'd1;
+ end
+ else begin
+ assign wr_almost_full = 1'b0;
+ assign rd_almost_empty = 1'b0;
+ end
+
+ if (PROGRAMMABLE_FULL == "STATIC_SINGLE") begin
+ reg wr_prog_full_int;
+ assign wr_prog_full = wr_datacount >= PROG_FULL_ASSERT;
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_prog_full_int <= 1'b0;
+ end
+ else begin
+ wr_prog_full_int <= wr_prog_full;
+ end
+ end
+ end
+ else if (PROGRAMMABLE_FULL == "STATIC_DUAL") begin
+ reg wr_prog_full_int;
+ assign wr_prog_full = wr_prog_full_int ? wr_datacount >= PROG_FULL_NEGATE : wr_datacount >= PROG_FULL_ASSERT;
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_prog_full_int <= 1'b0;
+ end
+ else begin
+ wr_prog_full_int <= wr_prog_full;
+ end
+ end
+ end
+ else begin
+ assign wr_prog_full = 1'b0;
+ end
+
+ if (PROGRAMMABLE_EMPTY == "STATIC_SINGLE") begin
+ reg rd_prog_empty_int;
+ assign rd_prog_empty = rd_datacount <= PROG_EMPTY_ASSERT;
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_prog_empty_int <= 1'b1;
+ end
+ else begin
+ rd_prog_empty_int <= rd_prog_empty;
+ end
+ end
+ end
+ else if (PROGRAMMABLE_EMPTY == "STATIC_DUAL") begin
+ reg rd_prog_empty_int;
+ assign rd_prog_empty = rd_prog_empty_int ? (rd_datacount <= PROG_EMPTY_NEGATE) : (rd_datacount <= PROG_EMPTY_ASSERT);
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_prog_empty_int <= 1'b1;
+ end
+ else begin
+ rd_prog_empty_int <= rd_prog_empty;
+ end
+ end
+ end
+ else begin
+ assign rd_prog_empty = 1'b0;
+ end
+
+ if (HANDSHAKE_FLAG) begin
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_ack <= 1'b0;
+ end
+ else begin
+ // NIC
+ //wr_ack <= wr_en_int & ~wr_overflow;
+ wr_ack <= OVERFLOW_PROTECT ? wr_en_int & ~wr_overflow : wr_en_int;
+ end
+ end
+ end
+
+ if (OVERFLOW_PROTECT) begin
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_overflow <= 1'b0;
+ end
+ else if (we && wr_full) begin
+ wr_overflow <= 1'b1;
+ end
+ else begin
+ wr_overflow <= 1'b0;
+ end
+ end
+ end
+ else if (HANDSHAKE_FLAG) begin
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_overflow <= 1'b0;
+ end
+ else begin
+ wr_overflow <= we && wr_full ? 1'b1 : wr_overflow;
+ end
+ end
+ end
+
+ if (UNDERFLOW_PROTECT) begin
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_underflow <= 1'b0;
+ end
+ else if (re && rd_empty) begin
+ rd_underflow <= 1'b1;
+ end
+ else begin
+ rd_underflow <= 1'b0;
+ end
+ end
+ end
+ else if (HANDSHAKE_FLAG) begin
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_underflow <= 1'b0;
+ end
+ else begin
+ rd_underflow <= re && rd_empty ? 1'b1 : rd_underflow;
+ end
+ end
+ end
+
+ localparam RATIO_WIDTH = (RADDR_WIDTH >= WADDR_WIDTH)? RADDR_WIDTH - WADDR_WIDTH : WADDR_WIDTH - RADDR_WIDTH;
+
+ if (ASYM_WIDTH_RATIO < 4) begin
+ assign wr_full = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:0] == raddr_int[RADDR_WIDTH-1:RATIO_WIDTH]);
+ assign rd_empty_int = waddr_int[WADDR_WIDTH:0] == raddr_cntr[RADDR_WIDTH:RATIO_WIDTH];
+ assign wr_datacount_int = waddr_cntr - (raddr_int/RAM_MUX_RATIO);
+ assign rd_datacount_int = (waddr_int*RAM_MUX_RATIO)-raddr_cntr;
+ end
+ // NIC
+ else if (ASYM_WIDTH_RATIO == 4) begin
+ assign wr_full = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:0] == raddr_int[RADDR_WIDTH-1:0]);
+ assign rd_empty_int = waddr_int[WADDR_WIDTH:0] == raddr_cntr[RADDR_WIDTH:0];
+ assign wr_datacount_int = waddr_cntr - raddr_int;
+ assign rd_datacount_int = waddr_int - raddr_cntr;
+ end
+ else begin
+ assign wr_full = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:RATIO_WIDTH] == raddr_int[RADDR_WIDTH-1:0]);
+ // NIC
+ //assign rd_empty_int = (waddr_int- raddr_cntr*RAM_MUX_RATIO) < RAM_MUX_RATIO;
+ assign rd_empty_int = waddr_int[WADDR_WIDTH:RATIO_WIDTH] == raddr_cntr[RADDR_WIDTH:0];
+ assign wr_datacount_int = waddr_cntr - (raddr_int*RAM_MUX_RATIO);
+ assign rd_datacount_int = (waddr_int/RAM_MUX_RATIO)-raddr_cntr;
+ end
+endgenerate
+
+always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ waddr_cntr <= 'h0;
+ end
+ else if (wr_en_int) begin
+ waddr_cntr <= waddr_cntr + 1'b1;
+ end
+end
+
+always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ waddr_cntr_r <= 'h0;
+ end
+ else begin
+ waddr_cntr_r <= waddr_cntr;
+ end
+end
+
+always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ raddr_cntr <= 'h0;
+ end
+ // NIC
+ //else if (rd_en_int) begin
+ else begin
+ //raddr_cntr <= raddr_cntr + 1'b1;
+ //raddr_cntr <= raddr_cntr + (re & ~rd_empty_int);
+ raddr_cntr <= ram_raddr;
+ end
+end
+// NIC
+assign ram_raddr = raddr_cntr + (UNDERFLOW_PROTECT ? re & ~rd_empty_int : re);
+
+
+generate
+ if (SYNC_CLK) begin : sync_clk
+ if (MODE == "FWFT") begin
+ assign waddr_int = waddr_cntr_r;
+ assign raddr_int = raddr_cntr;
+ end
+ else begin
+ assign waddr_int = waddr_cntr;
+ assign raddr_int = raddr_cntr;
+ end
+ end
+ else begin : async_clk
+ reg [RADDR_WIDTH:0] raddr_cntr_gry_r;
+ reg [WADDR_WIDTH:0] waddr_cntr_gry_r;
+
+ wire [RADDR_WIDTH:0] raddr_cntr_gry;
+ wire [RADDR_WIDTH:0] raddr_cntr_gry_sync;
+ wire [RADDR_WIDTH:0] raddr_cntr_sync_g2b;
+ wire [WADDR_WIDTH:0] waddr_cntr_gry;
+ wire [WADDR_WIDTH:0] waddr_cntr_gry_sync;
+ wire [WADDR_WIDTH:0] waddr_cntr_sync_g2b;
+
+ if (PIPELINE_REG) begin
+ reg [RADDR_WIDTH:0] raddr_cntr_sync_g2b_r;
+ reg [WADDR_WIDTH:0] waddr_cntr_sync_g2b_r;
+
+ assign waddr_int = waddr_cntr_sync_g2b_r;
+ assign raddr_int = raddr_cntr_sync_g2b_r;
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ raddr_cntr_sync_g2b_r <= 'h0;
+ end
+ else begin
+ raddr_cntr_sync_g2b_r <= raddr_cntr_sync_g2b;
+ end
+ end
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ waddr_cntr_sync_g2b_r <= 'h0;
+ end
+ else begin
+ waddr_cntr_sync_g2b_r <= waddr_cntr_sync_g2b;
+ end
+ end
+ end
+ else begin
+ assign waddr_int = waddr_cntr_sync_g2b;
+ assign raddr_int = raddr_cntr_sync_g2b;
+ end
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ raddr_cntr_gry_r <= 'h0;
+ end
+ else begin
+ raddr_cntr_gry_r <= raddr_cntr_gry;
+ end
+ end
+ `IP_MODULE_NAME(efx_fifo_bin2gray) # (.WIDTH(RADDR_WIDTH+1) ) xrd2wr_bin2gray (.bin_i(raddr_cntr), .gray_o(raddr_cntr_gry));
+ `IP_MODULE_NAME(efx_asyncreg) # (.ASYNC_STAGE(SYNC_STAGE), .WIDTH (RADDR_WIDTH+1), .ACTIVE_LOW(0), .OFF_ASSERTION (1)) xrd2wr_addr_sync (.clk(wclk), .reset_n(wr_rst), .d_i(raddr_cntr_gry_r), .d_o(raddr_cntr_gry_sync));
+ `IP_MODULE_NAME(efx_fifo_gray2bin) # (.WIDTH(RADDR_WIDTH+1) ) xrd2wr_gray2bin (.gray_i(raddr_cntr_gry_sync), .bin_o(raddr_cntr_sync_g2b));
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ waddr_cntr_gry_r <= 'h0;
+ end
+ else begin
+ waddr_cntr_gry_r <= waddr_cntr_gry;
+ end
+ end
+ `IP_MODULE_NAME(efx_fifo_bin2gray) # (.WIDTH(WADDR_WIDTH+1) ) wr2rd_bin2gray (.bin_i(waddr_cntr), .gray_o(waddr_cntr_gry));
+ `IP_MODULE_NAME(efx_asyncreg) # (.ASYNC_STAGE(SYNC_STAGE), .WIDTH (WADDR_WIDTH+1), .ACTIVE_LOW(0), .OFF_ASSERTION (1)) wr2rd_addr_sync (.clk(rclk), .reset_n(rd_rst), .d_i(waddr_cntr_gry_r), .d_o(waddr_cntr_gry_sync));
+ `IP_MODULE_NAME(efx_fifo_gray2bin) # (.WIDTH(WADDR_WIDTH+1) ) wr2rd_gray2bin (.gray_i(waddr_cntr_gry_sync), .bin_o(waddr_cntr_sync_g2b));
+
+ end
+endgenerate
+endmodule
+
+
+
+// synopsys translate_off
+`timescale 1 ns / 1 ps
+// synopsys translate_on
+
+module `IP_MODULE_NAME(efx_resetsync) #(
+ parameter ASYNC_STAGE = 2,
+ parameter ACTIVE_LOW = 1
+) (
+ input wire clk,
+ input wire reset,
+ output wire d_o
+);
+
+
+generate
+ if (ACTIVE_LOW == 1) begin: active_low
+ `IP_MODULE_NAME(efx_asyncreg) #(
+ .WIDTH (1),
+ .ACTIVE_LOW (1),
+ .RST_VALUE (0)
+ ) efx_resetsync_active_low (
+ .clk (clk),
+ .reset_n (reset),
+ .d_i (1'b1),
+ .d_o (d_o)
+ );
+ end
+ else begin: active_high
+ `IP_MODULE_NAME(efx_asyncreg) #(
+ .WIDTH (1),
+ .ACTIVE_LOW (0),
+ .RST_VALUE (1)
+ ) efx_resetsync_active_high (
+ .clk (clk),
+ .reset_n (reset),
+ .d_i (1'b0),
+ .d_o (d_o)
+ );
+ end
+endgenerate
+
+endmodule
+
+
+
+// synopsys translate_off
+`timescale 1 ns / 1 ps
+// synopsys translate_on
+
+module `IP_MODULE_NAME(efx_asyncreg) #(
+ parameter ASYNC_STAGE = 2,
+ parameter WIDTH = 4,
+ parameter ACTIVE_LOW = 1, // 0 - Active high reset, 1 - Active low reset
+ parameter RST_VALUE = 0,
+ parameter OFF_ASSERTION = 0 // 1 = Turn off PULSE_WIDTH_CHK assertion for a particular instance
+) (
+ input wire clk,
+ input wire reset_n,
+ input wire [WIDTH-1:0] d_i,
+ output wire [WIDTH-1:0] d_o
+);
+
+
+
+
+
+
+
+
+
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect author = "author-a" , author_info = "author-a-details"
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+IjzmeF2ACtI8q/MHPcSQakfCyuQSUgg747Z3U+BWZdCStFbqF/Rhg0VPl8JT+91V
+o/8Ohsiw6GnpSIX69XazqGYmhEjb+W7W2ngBYentEXdSyzUYvEbr8i71cL04f1fE
+El78uYgSvjFwoDyocXOVYk8JA0v7y6WnabkL02lAqASKGQK55nzfKeUVbJHKHjAY
+kIT3Nf7JWK2NVVymI1Zs5QttwrNgKBSqoiPvmy4+16bTQMx4R205Bb4rT1MqSqIc
+/5U5/Z1e1tZzOqoEyhfcMMKW0emdBIdByNvteK05ZATt11Uzj2M/Vn1r9KmYd0h1
+uYJaS5tuGEuFInBHa7oO8g==
+`pragma protect key_keyowner = "Cadence Design Systems." , key_keyname = "CDS_RSA_KEY_VER_2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+ABJo/BvEH9XbZrt+xPOQ2C7yeLcnebDlRELbHyCdXeeNkZRVZ9m0ie+1HufS/I+3
+fC63lnVTenVdf9s4tm1RLd5VBkmFb37ikgaESy2aRKWsdLG6x2OyuODoMDRCjYUa
+rxhnwLWh5E55yR3XVZgM2k7/NPP2cTL7iOSCjH4No38siNjs4Fapyc4FFq0TOsQq
+PMqsZ5jgmM+ZT8cil0wMt5tpdEOwvchbe1GcZLIhcIFLD/Gb2XtP0Q0QkOlNzuiL
+DNyobLTjDkV5si+/23Ng2E7tDq+SX+vJP4ciI63kXtsmQdn1ff2Y64ibNXJtpu/w
+K3OoKmk3zFeArSsql8B4/Q==
+`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
+`pragma protect key_block
+RAoMYYsrw2j05cvQ8NR0lCh+Ia/OGVfdwZqq0pwIkgDzO3Z7ol96oQmQzFfIQY/M
+GzEOFdYJTfjnxPvhSPxT1tpq2Fgx6PbC2FMWFtN6/TrG/s01ifIWIZ9Wrfo8Q01l
+6XTAESHR1htrOOx6AiDHAQLOlBb0zgfZjayGJBRX7FI=
+`pragma protect key_keyowner = "Aldec" , key_keyname = "ALDEC15_001"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+YclPuIbYLW/ftZYybucr9ooblGFkJDcdUWf6kCJBGKpIRjItUB3LdSwcREekRWqf
+RGiSRFoyrOTiScT06zZ4fkm+PEKj8O3RU1VMMzDjuEUqkAEELJHNOH71tCSC6MWk
+1dop7MZy8BSXhzg3W3RXIA8IGSJRDibliv+SjkbUzg/WceDI176fJmUwGUji93Tw
+Zu2vRjA/RTi3ZMzS/2Z9YE156hpipJ/Cu6ca8V3y5Kt6DX4fcCS09xESr6soT5Oz
+eKRExN7wu8dvYMUuu1YgCVVR47BBDQi3wdZHqlq1PLaycnNOwBPLOAzA19Hefh/0
+2HflB1HYKxojQCcZU7qUgQ==
+`pragma protect key_keyowner = "Siemens" , key_keyname = "SIEMENS-VERIF-SIM-RSA-2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+fMvC6d2jTMqMqGFzPCPWt6pV9wRUCG4/taH3Nfn7RcekdiLyXQEQgm1SN+X+hkbx
+Pu7552vaw2ez4j3zrTk2vRPnDAsxY8GidEnkJcULi8kiia9Xy/ePFLxOJHHigkiB
+rU7uwrFblcYYBRwQjhMhJDowyR9HVAonxhOWVIlYagtABxLYlNdDEn+N4yPLVCsr
+XUWy1E2L5GUFFNQffENN0iyUaKdWAKGIqgIZK1sB3tVOPVsULetSoyzRErWPNZQD
+e5jbBBNZGyQQWgOJkOfy280ekoUUEZajqtB1jDvE3k8kbo4rzvr7yTkhSzLqjGod
+B2Zpo2FQ//YDRSAaEa9ksQ==
+`pragma protect key_keyowner = "Mentor Graphics Corporation" , key_keyname = "MGC-VERIF-SIM-RSA-2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+TcmE9lQROafuvxGWP3fMVxDoeaiMX6ALoT3detg/qWZ36+yPTc/t8N7/DtSx17Ze
+vr6iBb+ge3aAzWAq2QHyVfgVV15dvW/HsOXXTh7UqExiO7Dxa6nHXuAhYMON6NP2
+ihfIRSvdnrL2ufvg7A2rCHGAqnr6cVnRLfhNJxtA1lloQbJEtlf/CWNblDxEfyw2
+06l3l8pp1rS0E4tMqagmOr+yhNSpcS9vQswFltqroh6kNIE64zKri96HKkRFLNlP
+fpsN7plEpLS54SxIMmh8Op+w0a/jXVOxxD+FLepsZWfGiNksENgu2Xo6TvZIQUUN
+ZoPzFCMjGk5ZmMyIlytNCw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4288 )
+`pragma protect data_block
+0d33xo/2RnBYy8BD6jq1J42m9u/75PA0owNvxlnr0TDOq7sF8XT6xouctVD1XQW2
+Ylwj0urY+dCJZku0aGRpcvb3H/nTlKVdEZOEl4QqB1gNGz/3mz75A3eudu5zgHEr
+MaagjyQfDnoIqLWi1r5uTZrlS298IvNcGAJ+xXzpmkFmfG4Tk/5Jf2GPAPVtjREI
+01kt8Go4CL1WNxBKcwm0xCiCchxvZ2oEtpERiC+7LUalgTJapIVoLFpvFv98229k
+egvgF1KHNj0rAKedSG2Xo58TyA4iZXJJDdtgCxiKgu3Rimjno7l+ekApwmvx8n+p
+yHkRGqetWfRhyE4A5q03RzOeSdA6NbCqijB3NPw/p58brAbA35rrjYpGIZXtZ4mU
+De3As8VtD64nS2PRuf4/a2lIcDbwMjNTfMpN7iJfVBJ0/48tLHdetx592TLXenkF
+GvAZ2yxoyBYzKctj4Keo+19Xp1UjVd3fr2MR3A7nmxLRKDA+upDxQ7ql8+pR7Moh
+0b53/4Ri3Mkl+7EC1KXJNt2VbkZmcT7OAFIoPpibmcXS2R6DNVrhSKzfc2+TRM9r
+mwRrJy9/R5RR+WGfw1S57Ho3wBPf4belj+Tfd7yhnwOVRXkTMq5M1BiigrGeeQ3q
+z/hc1Kg8b/R+g7lnU0pqASnExPQW/DIMfH1RX75U68CAgaBAH22Vcbkoibp8sxyO
+g18LefEh48UffnbpCKyv7SQ3LAdj+YO+KvvXHj1eW+CH7GA2lC5vt2be5Ah2/13H
+bCeZ+srG6r7wmafy9MNNh8AgjUfZWwMnuJdCIcHTOfAncCd2B0T1Oza4VIkvnSl5
+60V34JXkfrGsNuHxwCF/sRSBbZUSpqig4ZGYHjOHldx2OANZQeUvLES3fwScYY5D
+7SpR4ofVxIB/ev/+RXzvC3MNk1N0GT4F1XwokeeQIr/ilRETe/pFvEKttvviZ7uJ
+uEVblS2v61DMXEgDavkbA0WdhMChPulwDvZtisWT4hCKRxfuBvNBtz0wH/WgRoX3
+aipWvPJG3G0xvO0u0EQVNdcxE+LZ7vyGF5HWEwKdQYDyhH+yVDeG+M/b08dU2aq4
+sG7dyygyVnzVbk2Lf0nCkGqKkUZUr05Zim0Wcflkhkqy348SOZ3xmEGuYAkzelLV
+feQ+0ScsscFL5Cq4ETfFrN8GO8M5kkBN2ELs1MQecPRsgMCh0hcvd8IQrJTybQPW
+aqwp9mgnFvS8AJ1ct+XgrAt8zgVnhaZGS9TKa6OWbr0U+SD5m+/pXjNsZA2dni6b
+85/PmQeWeAarE/+EaJn/hlP6y3x3R3ItU8Itf6SB50LZ17LAhIRSIYsa7LBBNWOk
+ngFHcGBCJnqTJv3hdVqa9cYipZ98XCa8dqrtAM5Rkxwd6H8KxXA+B+PWEz/cQWlb
+szi9u5ufmyaJp6PWhklroQkPJEorUtF96X763itgtlAMHfkZglkElUD/gPlkXLtl
+yquUmHqPK5D2pJDq0Q0jromE2yrr9fl3OI+eBehd2YBUivGKeaDFkPx7HbzWp9ok
+9bT55H8VKYyF1awcjNND+WcXzm2WfvZHBDUJkRm7dnOQRvcX2RxlPRZSzAA3irVn
+GFbHXD0RYn/dUR7Vy4kU68P5S5q4bUxD5vmUCN9vDoCivY7WCnlQCHQs3+iFblzP
+A636C3dNQMSw0pjDisiZB63VczY8bivFh3cO82inNw5r2IZjvMB9XPhc4FHuIpfR
+F7ptW0TUnO1MSDcZvCnjUfVSnHN22l2FM/P5oI1SbG3W+8YmxBvto8jwpES4ohOQ
+YSECrvWkLklq68FVTzB7Tvg3JLdSy3TEKBuZE/ot0w/SXusFovOwd4aeiNDAmzwl
+fQuCYHuJ0UKLaVNVAO4mw91PJODKCk2NYTr0ghOLovOXiMhUYtXZ+wFchXVkQKDI
+B8BXjM7P+blhoOFA6AhRuCX4gZn0dP6m99qnyBJoxf1/FyfJXuklnPll93amUYUx
+MzxNNTf7F08tnKQ8pTOk2mfFZnhA2MFn4XQ9FaGvtUrlJI8bvJTWiZFMF0eOJdIw
+kzYOXEzKBjIdWW4rtTZmQJb7AOrznUpYdgTAPip/DQx6cg1+tZAVwhZPCjCsb5wa
+em5hMtISQKDc92QrlU5O74OXe7641fzFRcKqy9AzwhZl+tmHk1uvpDkpsYiMa7Rk
+YrbIjsKQV36PTqYPvxq1EiwYF8PMRf9FG8JZk85EZdM6QEGuehDHqFcZ+SlUb7/e
+ji6GgjKxcZwaRREGKSOslcscHS6QNuGCF3iInqNCT4V2l7nboWOefMT2f1kmQOdE
+szTFg563SQ8pu7ok3T3XNqUDi5ulvF+XGHDhcQ2hTkZ+xQ8dHFAWZdgzEGMXF2Lw
+jU+ZRA2JULfjxOMIU2j9f+aGWmFx2PELMA5K5uOWYUQG2Fn04p1D6u8MEe7fIPeI
+k7KH8j/Tumj+kG4t/lCrme6VM9u6A2NGddX1yH1NCejfophy3UWJg9wL/dNxzf6t
+vXdm3rGPdZPWFgSIuGlmT03QZmWGPbs8qvkkUVAL37kMJP2r4L+PI00ZxbX8V5jp
+GgYN1Rh+NSOwAcUEFCViRhFYC+Gi5eZ6AF6XDSU6qfjGsUKqJ9yrNx0Km6+SjpAK
+7Zxblp7vweFVkJ7IESoFeB+vP8JNeoidbBPGEWo+2V08PgfGgjPEAA6pjj8uc0jC
+SDFZ0sVrzvc66PZ5FxbI4g+VuXPJgyJsnQ/eHhPVTVTP3/oGMRVktNiJrkJYxAW7
+Sa/EJMjfXX+rMIWG5ssWLT6WfrojlHduEqJ9hJr24RZy514HHF8SMPRBLD6l1wd5
+07U/ChjFdy5qHn5Ce+lanjxnoxgvCsF3lMqoZ7e2bfzXakj7CxahwqRt6yeU0Q+/
+a8tvIJgHfdtOPw/r6HnSrzpdWzTx2e6/MEryHZqpMN63Lhakpjw1L7u3FD/rW40b
+LGajigQ7Ql+cZmP7wYl+uSmTFIS6ZgXOc1ibb7yYxJwpeixPHL1iu5ltvriRiTZ6
+DMbbOjNpPuL7ie3AwgmwXwnpnTL6k/Rj2+ma3B7ImODBMkC4SLtTc0ynCcPAFZKA
+Xh78wUAgt1T5Nm4XR555DBO7zPHX9rZzMLil4/j0RMDwn1gitmP2PSNFWsrXJG8p
+C46kfpdqoM3Yf6HySlhsith6GW41sMF6imUXwahQQRw240HLW3N876LDe6bjTmgN
+eIC7y/4NZk7OmpmP8udAEH+UsNfSGtKA8959AoJDr43XsWkOfccNWstu4sTXA5+w
+pCALypmBMdholEsrW9DgsIgbgf2pcOAC9+mAjld+yyQ+UNdKRbmtRDHTztGmcVvw
+Szip4YUuTM1tPzReucfm38gVFT7eo1qFQg/FJ4VgeYab7ku5OHuwZQmKyzng/t0U
+A1lquVENVYQEIotBiOC7jQ1YTkTasGN4xoFgFTyKLFPyk8bl2/anzr1Fx0ieVGCx
+2ipzG2JzIQf/FlHXaYrgkWiF817amty+KZp4/dCJtvDXxzOZKnBTVcjHXpqR1Ik+
+tdV+k+21tXZxP0rkG0yi4//2c5UiWGb0UegpemqutykLuT9tGjsqMuc5DaDH/8zk
+wLTVfODT+HqN1/ZLqfq9VoAF5m/ujnPNt3wZcsjsAyBD153rW4Q2yVYMat0sFQN6
+XbNAeNBJZlO/aE1PfKBcSDFkJkPqRxlgdiE5B83/w1MP6Z4qwz7LJ8yTYM22xwRo
+LIYpKq52yYMhJm42YeQxbBRTx0MyubCb+ompEVBF28Eh0vE98UAZj7t1szSweg99
+Wq6/4kxR2SQj8rFo2wrZe7ngsDmbIrMk2SinS6WmV4Mj+MBbPlmiuwB6NUV04Id1
+9enBBsJIfWt+PZJXyWkOoG/fOVBUxCY+CMCiab0qQ1EVdhggrdI30BgFqcLjfyD6
+/h5AqIzMGWrhWnap8WDEh1Ah6K9f2oCESSXO751sV5eK8jgl63FJMIVsnjVejxrl
+Qa7PCXP3BO6Cnv896NBzAsddPq/AYBLHIC6eX3sTtOxTx52NsmJzoyUSJcAoA/QS
+leHU1bLA2z+HGfMrkSzsuvXafmqr3B+PHfWdxrYzTxmVhMBPX/FvEU/gfxXGa6kj
+niZYGue/Rk+zXL65ENgPwxiz0mm7QyQ6eMBMRovm6MGyIl/8obkOPygH+lhc+bgR
+SNWLmxqjR2YABrKsUgCITQ6GK7VmVR3wOOwbZs+YW/0Yj2yzg7ESjaeqI40/OQFD
+Ft2IHaURJPk6jl5vRrcCc0J0GCy7CK0BU14n+Nxfl2+CFRe4efoqZry/CmY2+S4M
+p9OqgjUzHGSIbNRAXHf44nIAUjWYvijzzLSj9A7WY3TpYxgtqU8Wbf7SbWmw8RJV
+pAYDHGmwHa8fL4Y9xEFF/WqmqWSL3g146i41MKWKY7lchvnWtc6yOgk+0geVFOpe
+9BLs4TehFA/SueFC99S0Cxcxc0KMWXOKm0I3bI1CAlLje7wUcdI/pki33iqBLJlL
+T2vz8ptPqfgAxDW0ZEvEYY/jfB+jCO0MKT7XK/LZNYSuEke3Y3CeuwZ/5IWkDcwy
+7BArmDy7Hpw88le9ODL94mS1fUB8jsBaazeiXniZPNZjBkugt/ZAf4XYuoaGVPAM
+DnRd8GW5eiDHFCEB42lpg9n7Ak8cXsSSlODCHeay2VtcQP1DEgwWdI5XdXE879gI
+8lLU9bH2MfsxI2mNWCMv5immaioZJDorIVzyMGvIn3OcgqmhTU1owINUJf+Hm8Q7
+JfJq4m6t0J5eoKQH57uSGFkWRZ3dtp5QL3d5bBOMmorXUBzdrLt8wurvNke29bHD
+UQdmANjayV8drYWAccZdPWyi9jNC/K31BTDI6RCpZdV3Wr5scOZdXWrl961jirm1
+g/2MGKxriuH2F4MRIh2vp3uS8PLbj4cHJv+5+LtLgs0lpdEMYAvJKDACRg68tDhY
+XsF9lhHpcF5+tANOawRtnSvy/rlLn+A3wi7v8tnTZcLkocJ51c+nK5/Ij0YgUrA0
+eLrKNlJM78stswPWkvpBlAJ+G3D4Cw6P3XcJWrLyV3u79jf9PRJZmxMU/COGTmgQ
+PJdXp90O3u2Pjdwhp4VdtBK2d/jTpk59j8xbQBavf5flZ+PzoLpd8NSt6GdPVJ5r
+uVWvNy14pJXUsn+Tgxj+9Wp3vm5mofWtJAkEgr/Rfp7AVLLShJSd6vsbT7F2+TS/
+OMDv0XH92v1G4tqJ0rbxS1TnxX61+1sfjKlfIQdFR9gxLy71Tb705LQHBAw8vmSx
+X6Uv+HbtPaEqRCF+pdvGsLNI2Seo6INA/mXqNpd6VPhfQHtp3bgV+Hxnlcc9lCiI
+bCZq6KG4a6sVQHIZ3pZo7PQtoAo22niHvgZFoOVnBv+bu+blmvSV6gxCPoV8rwOe
+/WD7YikHE7WVSq1SHtTIcbPv+K+1NKqZIiSCS2qDfJLgI7vH4zjIqibDhzGZTeKV
+Km234SSlJ1OL4WQ5FtsxjednjUIAKqVe1auDiTzAKY28dwUkwGN/XXQ+EjrmxQuL
+qIAT3WP49EeM+CQCp3D6Vxzm7Picq+RtwtbAXnnSQtvPcaSprODI089a0iR46Pp/
+4DLMUOLS+01HozXF1589YdqYep05No/Fp4eP2RdQxicYxK8d/OcvG7E8F1URVmAa
+XdZxVa9caM3xYMWDZaiaOo6IZ+YM5VeZ4KxUblS1L1IlOnGOOZ3AiaLsHOh55ryc
+Ei7EaFpheCmlTJyxUg8TdA==
+`pragma protect end_protected
+
+`undef IP_UUID
+`undef IP_NAME_CONCAT
+`undef IP_MODULE_NAME
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_define.svh b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_define.svh
new file mode 100644
index 0000000..d6e5cb2
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_define.svh
@@ -0,0 +1,66 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 8.1
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+localparam SYNC_CLK = 0;
+localparam SYNC_STAGE = 2;
+localparam DATA_WIDTH = 16;
+localparam MODE = "FWFT";
+localparam OUTPUT_REG = 0;
+localparam PROG_FULL_ASSERT = 128;
+localparam PROGRAMMABLE_FULL = "NONE";
+localparam PROG_FULL_NEGATE = 128;
+localparam PROGRAMMABLE_EMPTY = "NONE";
+localparam PROG_EMPTY_ASSERT = 2;
+localparam PROG_EMPTY_NEGATE = 3;
+localparam OPTIONAL_FLAGS = 0;
+localparam PIPELINE_REG = 1;
+localparam DEPTH = 512;
+localparam FAMILY = "TITANIUM";
+localparam ASYM_WIDTH_RATIO = 4;
+localparam BYPASS_RESET_SYNC = 0;
+localparam ENDIANESS = 0;
+localparam RAM_STYLE = "block_ram";
+localparam OVERFLOW_PROTECT = 0;
+localparam UNDERFLOW_PROTECT = 0;
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_tmpl.sv b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_tmpl.sv
new file mode 100644
index 0000000..a0f357f
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_tmpl.sv
@@ -0,0 +1,60 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 8.1
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+gTSE_core_fifo_ctrl u_gTSE_core_fifo_ctrl
+(
+ .full_o ( full_o ),
+ .empty_o ( empty_o ),
+ .wr_clk_i ( wr_clk_i ),
+ .rd_clk_i ( rd_clk_i ),
+ .wr_en_i ( wr_en_i ),
+ .rd_en_i ( rd_en_i ),
+ .wdata ( wdata ),
+ .rst_busy ( rst_busy ),
+ .rdata ( rdata ),
+ .a_rst_i ( a_rst_i ),
+ .wr_datacount_o ( wr_datacount_o ),
+ .rd_datacount_o ( rd_datacount_o )
+);
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_tmpl.vhd b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_tmpl.vhd
new file mode 100644
index 0000000..470be78
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_tmpl.vhd
@@ -0,0 +1,75 @@
+--------------------------------------------------------------------------------
+-- Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+--
+-- This document contains proprietary information which is
+-- protected by copyright. All rights are reserved. This notice
+-- refers to original work by Efinix, Inc. which may be derivitive
+-- of other work distributed under license of the authors. In the
+-- case of derivative work, nothing in this notice overrides the
+-- original author's license agreement. Where applicable, the
+-- original license agreement is included in it's original
+-- unmodified form immediately below this header.
+--
+-- WARRANTY DISCLAIMER.
+-- THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+-- EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+-- RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+-- INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+-- MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+-- PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+-- WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+--
+-- LIMITATION OF LIABILITY.
+-- NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+-- INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+-- MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+-- OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+-- SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+-- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+-- GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+-- MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+-- THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+-- (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+-- BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+-- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+-- CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+-- APPLY TO LICENSEE.
+--
+--------------------------------------------------------------------------------
+------------- Begin Cut here for COMPONENT Declaration ------
+component gTSE_core_fifo_ctrl is
+port (
+ full_o : out std_logic;
+ empty_o : out std_logic;
+ wr_clk_i : in std_logic;
+ rd_clk_i : in std_logic;
+ wr_en_i : in std_logic;
+ rd_en_i : in std_logic;
+ wdata : in std_logic_vector(15 downto 0);
+ rst_busy : out std_logic;
+ rdata : out std_logic_vector(15 downto 0);
+ a_rst_i : in std_logic;
+ wr_datacount_o : out std_logic_vector(9 downto 0);
+ rd_datacount_o : out std_logic_vector(9 downto 0)
+);
+end component gTSE_core_fifo_ctrl;
+
+---------------------- End COMPONENT Declaration ------------
+------------- Begin Cut here for INSTANTIATION Template -----
+u_gTSE_core_fifo_ctrl : gTSE_core_fifo_ctrl
+port map (
+ full_o => full_o,
+ empty_o => empty_o,
+ wr_clk_i => wr_clk_i,
+ rd_clk_i => rd_clk_i,
+ wr_en_i => wr_en_i,
+ rd_en_i => rd_en_i,
+ wdata => wdata,
+ rst_busy => rst_busy,
+ rdata => rdata,
+ a_rst_i => a_rst_i,
+ wr_datacount_o => wr_datacount_o,
+ rd_datacount_o => rd_datacount_o
+);
+
+------------------------ End INSTANTIATION Template ---------
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/ipm/component.pickle b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/ipm/component.pickle
new file mode 100644
index 0000000..61a1d4c
Binary files /dev/null and b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/ipm/component.pickle differ
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/ipm/graph.pickle b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/ipm/graph.pickle
new file mode 100644
index 0000000..6aaff8c
Binary files /dev/null and b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/ipm/graph.pickle differ
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/settings.json b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/settings.json
new file mode 100644
index 0000000..20c6360
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/settings.json
@@ -0,0 +1,75 @@
+{
+ "args": [
+ "-o",
+ "gTSE_core_fifo_ctrl",
+ "--base_path",
+ "/projects/SSE/llching/repo/efx_IP_master/efx_IP/efx_hard_soc/fpga/Ti375C529_devkit/ip",
+ "--vlnv",
+ {
+ "vendor": "efinixinc.com",
+ "library": "memory",
+ "name": "efx_fifo_top",
+ "version": "8.1"
+ }
+ ],
+ "conf": {
+ "SYNC_CLK": "0",
+ "SYNC_STAGE": "2",
+ "DEPTH_2": "9",
+ "DATA_WIDTH": "16",
+ "MODE": "\"FWFT\"",
+ "OUTPUT_REG": "0",
+ "PROG_FULL_ASSERT": "128",
+ "PROGRAMMABLE_FULL": "\"NONE\"",
+ "PFN_INTERNAL": "127",
+ "PEA_INTERNAL": "2",
+ "PEN_INTERNAL": "3",
+ "PROGRAMMABLE_EMPTY": "\"NONE\"",
+ "OPTIONAL_FLAGS": "0",
+ "PIPELINE_REG": "1",
+ "ASYM_WIDTH_RATIO": "4",
+ "BYPASS_RESET_SYNC": "0",
+ "ENDIANESS": "0",
+ "RAM_STYLE": "\"block_ram\"",
+ "OVERFLOW_PROTECT": "0",
+ "UNDERFLOW_PROTECT": "0"
+ },
+ "output": {
+ "external_source_source": [
+ "gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl.sv",
+ "gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_define.svh",
+ "gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_tmpl.sv",
+ "gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_tmpl.vhd"
+ ],
+ "external_example_example": [
+ "gTSE_core_fifo_ctrl/T20F256_devkit/fifo_demo.peri.xml",
+ "gTSE_core_fifo_ctrl/T20F256_devkit/fifo_demo.xml",
+ "gTSE_core_fifo_ctrl/T20F256_devkit/fifo_demo_top.v",
+ "gTSE_core_fifo_ctrl/T20F256_devkit/fifo_demo_T20.sdc",
+ "gTSE_core_fifo_ctrl/T20F256_devkit/efx_symmetric_width_fifo_top.sv",
+ "gTSE_core_fifo_ctrl/T20F256_devkit/gTSE_core_fifo_ctrl.sv",
+ "gTSE_core_fifo_ctrl/T20F256_devkit/gTSE_core_fifo_ctrl_define.svh"
+ ],
+ "external_example_2": [
+ "gTSE_core_fifo_ctrl/Ti60F225_devkit/fifo_demo.peri.xml",
+ "gTSE_core_fifo_ctrl/Ti60F225_devkit/fifo_demo.xml",
+ "gTSE_core_fifo_ctrl/Ti60F225_devkit/fifo_demo_top.v",
+ "gTSE_core_fifo_ctrl/Ti60F225_devkit/fifo_demo_Ti60.sdc",
+ "gTSE_core_fifo_ctrl/Ti60F225_devkit/efx_symmetric_width_fifo_top.sv",
+ "gTSE_core_fifo_ctrl/Ti60F225_devkit/gTSE_core_fifo_ctrl.sv",
+ "gTSE_core_fifo_ctrl/Ti60F225_devkit/gTSE_core_fifo_ctrl_define.svh"
+ ],
+ "external_testbench_testbench": [
+ "gTSE_core_fifo_ctrl/Testbench/fifo_tb.sv",
+ "gTSE_core_fifo_ctrl/Testbench/xrun.sh",
+ "gTSE_core_fifo_ctrl/Testbench/msim.sh",
+ "gTSE_core_fifo_ctrl/Testbench/flist",
+ "gTSE_core_fifo_ctrl/Testbench/modelsim.do",
+ "gTSE_core_fifo_ctrl/Testbench/gTSE_core_fifo_ctrl.sv",
+ "gTSE_core_fifo_ctrl/Testbench/gTSE_core_fifo_ctrl_define.svh"
+ ]
+ },
+ "ooc_synthesis": {},
+ "sw_version": "2025.2.272",
+ "generated_date": "2025-10-16T09:35:38.547531+00:00"
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data.sv b/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data.sv
new file mode 100644
index 0000000..79ebb98
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data.sv
@@ -0,0 +1,1587 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 8.1
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+`define IP_UUID _b22e1dac76b0412988d984e3bea79485
+`define IP_NAME_CONCAT(a,b) a``b
+`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
+module gTSE_core_fifo_data
+(
+ output full_o,
+ output empty_o,
+ input wr_clk_i,
+ input rd_clk_i,
+ input wr_en_i,
+ input rd_en_i,
+ input [12:0] wdata,
+ output rst_busy,
+ output [12:0] rdata,
+ input a_rst_i,
+ output [12:0] wr_datacount_o,
+ output [12:0] rd_datacount_o
+);
+`IP_MODULE_NAME(efx_fifo_top)
+#(
+ .SYNC_CLK (0),
+ .SYNC_STAGE (2),
+ .DATA_WIDTH (13),
+ .MODE ("STANDARD"),
+ .OUTPUT_REG (0),
+ .PROG_FULL_ASSERT (128),
+ .PROGRAMMABLE_FULL ("NONE"),
+ .PROG_FULL_NEGATE (128),
+ .PROGRAMMABLE_EMPTY ("NONE"),
+ .PROG_EMPTY_ASSERT (2),
+ .PROG_EMPTY_NEGATE (3),
+ .OPTIONAL_FLAGS (0),
+ .PIPELINE_REG (1),
+ .DEPTH (4096),
+ .FAMILY ("TITANIUM"),
+ .ASYM_WIDTH_RATIO (4),
+ .BYPASS_RESET_SYNC (0),
+ .ENDIANESS (0),
+ .RAM_STYLE ("block_ram"),
+ .OVERFLOW_PROTECT (0),
+ .UNDERFLOW_PROTECT (0)
+)
+u_efx_fifo_top
+(
+ .full_o ( full_o ),
+ .empty_o ( empty_o ),
+ .wr_clk_i ( wr_clk_i ),
+ .rd_clk_i ( rd_clk_i ),
+ .wr_en_i ( wr_en_i ),
+ .rd_en_i ( rd_en_i ),
+ .wdata ( wdata ),
+ .rst_busy ( rst_busy ),
+ .rdata ( rdata ),
+ .a_rst_i ( a_rst_i ),
+ .wr_datacount_o ( wr_datacount_o ),
+ .rd_datacount_o ( rd_datacount_o )
+);
+endmodule
+
+/////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / gray2bin.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / Gray to Binary Encoding Convertor
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+// 1.0 Initial rev
+//
+// *******************************
+
+`resetall
+`timescale 1ns/1ps
+
+module `IP_MODULE_NAME(efx_fifo_gray2bin)
+#(parameter WIDTH=5)
+(// outputs
+ output wire [WIDTH-1:0] bin_o,
+ // input
+ input [WIDTH-1:0] gray_i);
+
+//---------------------------------------------------------------------
+// Recursive Module
+// Description: reduction xor
+generate
+ if (WIDTH > 1) begin
+ wire [1:0] bin_1;
+ assign bin_1 = {gray_i[WIDTH-1], gray_i[WIDTH-1]^gray_i[WIDTH-2]};
+ if (WIDTH == 2) begin
+ assign bin_o = bin_1;
+ end
+ else begin
+ assign bin_o[WIDTH-1] = bin_1[1];
+ `IP_MODULE_NAME(efx_fifo_gray2bin) #(.WIDTH(WIDTH-1)) u_gray2bin (.bin_o(bin_o[WIDTH-2:0]), .gray_i({bin_1[0], gray_i[WIDTH-3:0]}));
+ end
+ end
+ else /* if (WIDTH == 1) */
+ assign bin_o = gray_i;
+endgenerate
+
+endmodule
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / bin2gray.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / Binary to Gray Encoding Convertor
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+// 1.0 Initial rev
+//
+// *******************************
+
+`resetall
+`timescale 1ns/1ps
+
+module `IP_MODULE_NAME(efx_fifo_bin2gray)
+#(parameter WIDTH=5)
+(// outputs
+ output wire [WIDTH-1:0] gray_o,
+ // input
+ input [WIDTH-1:0] bin_i
+ );
+
+//---------------------------------------------------------------------
+// Function : bit_xor
+// Description: reduction xor
+function bit_xor (
+ input [31:0] nex_bit,
+ input [31:0] curr_bit,
+ input [WIDTH-1:0] xor_in);
+ begin : fn_bit_xor
+ bit_xor = xor_in[nex_bit] ^ xor_in[curr_bit];
+ end
+endfunction
+
+// Convert Binary to Gray, bit by bit
+generate
+begin
+ genvar bit_idx;
+ for(bit_idx=0; bit_idx 1) begin
+ depth = depth - 1;
+ for (depth2width=0; depth>0; depth2width = depth2width + 1)
+ depth = depth>>1;
+ end
+ else
+ depth2width = 0;
+end
+endfunction
+
+function integer width2depth;
+input [31:0] width;
+begin : fnWidth2Depth
+ width2depth = width**2;
+end
+endfunction
+
+function integer rdwidthcompute;
+input [31:0] asym_option;
+input [31:0] wr_width;
+begin : RdWidthCompute
+ rdwidthcompute = (asym_option==0)? wr_width/16 :
+ (asym_option==1)? wr_width/8 :
+ (asym_option==2)? wr_width/4 :
+ (asym_option==3)? wr_width/2 :
+ (asym_option==4)? wr_width/1 :
+ (asym_option==5)? wr_width*2 :
+ (asym_option==6)? wr_width*4 :
+ (asym_option==7)? wr_width*8 :
+ (asym_option==8)? wr_width*16 : wr_width/1;
+end
+endfunction
+
+function integer rddepthcompute;
+input [31:0] wr_depth;
+input [31:0] wr_width;
+input [31:0] rd_width;
+begin : RdDepthCompute
+ rddepthcompute = (wr_depth * wr_width) / rd_width;
+end
+endfunction
+
+endmodule
+
+
+/////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / simple_dual_port_ram_fifo.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / EFX FIFO
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// *******************************
+// Revisions:
+//
+// *******************************
+
+module `IP_MODULE_NAME(efx_fifo_ram) #(
+ parameter FAMILY = "TRION",
+ parameter WR_DEPTH = 512,
+ parameter RD_DEPTH = 512,
+ parameter WDATA_WIDTH = 8,
+ parameter RDATA_WIDTH = 8,
+ parameter WADDR_WIDTH = 9,
+ parameter RADDR_WIDTH = 9,
+ parameter OUTPUT_REG = 1,
+ parameter RAM_MUX_RATIO = 4,
+ parameter ENDIANESS = 0, //0: Big endian (default) 1: Little endian
+ parameter RAM_STYLE = "block_ram"
+) (
+ input wire wclk,
+ input wire rclk,
+ input wire we,
+ input wire re,
+ input wire [(WDATA_WIDTH-1):0] wdata,
+ input wire [(WADDR_WIDTH-1):0] waddr,
+ input wire [(RADDR_WIDTH-1):0] raddr,
+ output wire [(RDATA_WIDTH-1):0] rdata
+);
+
+localparam MEM_DEPTH = (WR_DEPTH > RD_DEPTH) ? WR_DEPTH : RD_DEPTH;
+localparam MEM_DATA_WIDTH = (WDATA_WIDTH > RDATA_WIDTH) ? RDATA_WIDTH : WDATA_WIDTH;
+localparam LSB_WIDTH = (WADDR_WIDTH > RADDR_WIDTH) ? (WADDR_WIDTH - RADDR_WIDTH) : (RADDR_WIDTH - WADDR_WIDTH);
+localparam RDATA_WDATA_RATIO = (RDATA_WIDTH <= WDATA_WIDTH/32) ? "ONE_THIRTYTWO" :
+ (RDATA_WIDTH <= WDATA_WIDTH/16) ? "ONE_SIXTEENTH" :
+ (RDATA_WIDTH <= WDATA_WIDTH/8) ? "ONE_EIGHTH" :
+ (RDATA_WIDTH <= WDATA_WIDTH/4) ? "ONE_FOURTH" :
+ (RDATA_WIDTH <= WDATA_WIDTH/2) ? "ONE_HALF" :
+ (RDATA_WIDTH <= WDATA_WIDTH) ? "ONE" :
+ (RDATA_WIDTH <= WDATA_WIDTH*2) ? "TWO_TIMES" :
+ (RDATA_WIDTH <= WDATA_WIDTH*4) ? "FOUR_TIMES" :
+ (RDATA_WIDTH <= WDATA_WIDTH*4) ? "EIGHT_TIMES" :
+ (RDATA_WIDTH <= WDATA_WIDTH*4) ? "SIXTEEN_TIMES" : "THIRTYTWO_TIMES";
+
+(* syn_ramstyle = RAM_STYLE *) reg [MEM_DATA_WIDTH-1:0] ram[MEM_DEPTH-1:0];
+reg [RDATA_WIDTH-1:0] r_rdata_1P;
+reg [RDATA_WIDTH-1:0] r_rdata_2P;
+
+wire re_int;
+
+generate
+ if (FAMILY == "TRION") begin
+ if (RDATA_WDATA_RATIO == "ONE") begin
+ always @ (posedge wclk) begin
+ if (we)
+ ram[waddr] <= wdata;
+ end
+
+ always @ (posedge rclk) begin
+ if (re_int) begin
+ r_rdata_1P <= ram[raddr];
+ end
+ r_rdata_2P <= r_rdata_1P;
+ end
+ end
+
+ else if (RDATA_WDATA_RATIO == "ONE_THIRTYTWO" || RDATA_WDATA_RATIO == "ONE_SIXTEENTH" || RDATA_WDATA_RATIO == "ONE_EIGHTH" || RDATA_WDATA_RATIO == "ONE_FOURTH" || RDATA_WDATA_RATIO == "ONE_HALF" ) begin
+ if (ENDIANESS == 0) begin
+ integer i;
+ always @ (posedge wclk) begin
+ for (i=0; i= WR_DEPTH-1;
+ assign rd_almost_empty = rd_datacount <= 'd1;
+ end
+ else begin
+ assign wr_almost_full = 1'b0;
+ assign rd_almost_empty = 1'b0;
+ end
+
+ if (PROGRAMMABLE_FULL == "STATIC_SINGLE") begin
+ reg wr_prog_full_int;
+ assign wr_prog_full = wr_datacount >= PROG_FULL_ASSERT;
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_prog_full_int <= 1'b0;
+ end
+ else begin
+ wr_prog_full_int <= wr_prog_full;
+ end
+ end
+ end
+ else if (PROGRAMMABLE_FULL == "STATIC_DUAL") begin
+ reg wr_prog_full_int;
+ assign wr_prog_full = wr_prog_full_int ? wr_datacount >= PROG_FULL_NEGATE : wr_datacount >= PROG_FULL_ASSERT;
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_prog_full_int <= 1'b0;
+ end
+ else begin
+ wr_prog_full_int <= wr_prog_full;
+ end
+ end
+ end
+ else begin
+ assign wr_prog_full = 1'b0;
+ end
+
+ if (PROGRAMMABLE_EMPTY == "STATIC_SINGLE") begin
+ reg rd_prog_empty_int;
+ assign rd_prog_empty = rd_datacount <= PROG_EMPTY_ASSERT;
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_prog_empty_int <= 1'b1;
+ end
+ else begin
+ rd_prog_empty_int <= rd_prog_empty;
+ end
+ end
+ end
+ else if (PROGRAMMABLE_EMPTY == "STATIC_DUAL") begin
+ reg rd_prog_empty_int;
+ assign rd_prog_empty = rd_prog_empty_int ? (rd_datacount <= PROG_EMPTY_NEGATE) : (rd_datacount <= PROG_EMPTY_ASSERT);
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_prog_empty_int <= 1'b1;
+ end
+ else begin
+ rd_prog_empty_int <= rd_prog_empty;
+ end
+ end
+ end
+ else begin
+ assign rd_prog_empty = 1'b0;
+ end
+
+ if (HANDSHAKE_FLAG) begin
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_ack <= 1'b0;
+ end
+ else begin
+ // NIC
+ //wr_ack <= wr_en_int & ~wr_overflow;
+ wr_ack <= OVERFLOW_PROTECT ? wr_en_int & ~wr_overflow : wr_en_int;
+ end
+ end
+ end
+
+ if (OVERFLOW_PROTECT) begin
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_overflow <= 1'b0;
+ end
+ else if (we && wr_full) begin
+ wr_overflow <= 1'b1;
+ end
+ else begin
+ wr_overflow <= 1'b0;
+ end
+ end
+ end
+ else if (HANDSHAKE_FLAG) begin
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ wr_overflow <= 1'b0;
+ end
+ else begin
+ wr_overflow <= we && wr_full ? 1'b1 : wr_overflow;
+ end
+ end
+ end
+
+ if (UNDERFLOW_PROTECT) begin
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_underflow <= 1'b0;
+ end
+ else if (re && rd_empty) begin
+ rd_underflow <= 1'b1;
+ end
+ else begin
+ rd_underflow <= 1'b0;
+ end
+ end
+ end
+ else if (HANDSHAKE_FLAG) begin
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ rd_underflow <= 1'b0;
+ end
+ else begin
+ rd_underflow <= re && rd_empty ? 1'b1 : rd_underflow;
+ end
+ end
+ end
+
+ localparam RATIO_WIDTH = (RADDR_WIDTH >= WADDR_WIDTH)? RADDR_WIDTH - WADDR_WIDTH : WADDR_WIDTH - RADDR_WIDTH;
+
+ if (ASYM_WIDTH_RATIO < 4) begin
+ assign wr_full = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:0] == raddr_int[RADDR_WIDTH-1:RATIO_WIDTH]);
+ assign rd_empty_int = waddr_int[WADDR_WIDTH:0] == raddr_cntr[RADDR_WIDTH:RATIO_WIDTH];
+ assign wr_datacount_int = waddr_cntr - (raddr_int/RAM_MUX_RATIO);
+ assign rd_datacount_int = (waddr_int*RAM_MUX_RATIO)-raddr_cntr;
+ end
+ // NIC
+ else if (ASYM_WIDTH_RATIO == 4) begin
+ assign wr_full = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:0] == raddr_int[RADDR_WIDTH-1:0]);
+ assign rd_empty_int = waddr_int[WADDR_WIDTH:0] == raddr_cntr[RADDR_WIDTH:0];
+ assign wr_datacount_int = waddr_cntr - raddr_int;
+ assign rd_datacount_int = waddr_int - raddr_cntr;
+ end
+ else begin
+ assign wr_full = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:RATIO_WIDTH] == raddr_int[RADDR_WIDTH-1:0]);
+ // NIC
+ //assign rd_empty_int = (waddr_int- raddr_cntr*RAM_MUX_RATIO) < RAM_MUX_RATIO;
+ assign rd_empty_int = waddr_int[WADDR_WIDTH:RATIO_WIDTH] == raddr_cntr[RADDR_WIDTH:0];
+ assign wr_datacount_int = waddr_cntr - (raddr_int*RAM_MUX_RATIO);
+ assign rd_datacount_int = (waddr_int/RAM_MUX_RATIO)-raddr_cntr;
+ end
+endgenerate
+
+always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ waddr_cntr <= 'h0;
+ end
+ else if (wr_en_int) begin
+ waddr_cntr <= waddr_cntr + 1'b1;
+ end
+end
+
+always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ waddr_cntr_r <= 'h0;
+ end
+ else begin
+ waddr_cntr_r <= waddr_cntr;
+ end
+end
+
+always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ raddr_cntr <= 'h0;
+ end
+ // NIC
+ //else if (rd_en_int) begin
+ else begin
+ //raddr_cntr <= raddr_cntr + 1'b1;
+ //raddr_cntr <= raddr_cntr + (re & ~rd_empty_int);
+ raddr_cntr <= ram_raddr;
+ end
+end
+// NIC
+assign ram_raddr = raddr_cntr + (UNDERFLOW_PROTECT ? re & ~rd_empty_int : re);
+
+
+generate
+ if (SYNC_CLK) begin : sync_clk
+ if (MODE == "FWFT") begin
+ assign waddr_int = waddr_cntr_r;
+ assign raddr_int = raddr_cntr;
+ end
+ else begin
+ assign waddr_int = waddr_cntr;
+ assign raddr_int = raddr_cntr;
+ end
+ end
+ else begin : async_clk
+ reg [RADDR_WIDTH:0] raddr_cntr_gry_r;
+ reg [WADDR_WIDTH:0] waddr_cntr_gry_r;
+
+ wire [RADDR_WIDTH:0] raddr_cntr_gry;
+ wire [RADDR_WIDTH:0] raddr_cntr_gry_sync;
+ wire [RADDR_WIDTH:0] raddr_cntr_sync_g2b;
+ wire [WADDR_WIDTH:0] waddr_cntr_gry;
+ wire [WADDR_WIDTH:0] waddr_cntr_gry_sync;
+ wire [WADDR_WIDTH:0] waddr_cntr_sync_g2b;
+
+ if (PIPELINE_REG) begin
+ reg [RADDR_WIDTH:0] raddr_cntr_sync_g2b_r;
+ reg [WADDR_WIDTH:0] waddr_cntr_sync_g2b_r;
+
+ assign waddr_int = waddr_cntr_sync_g2b_r;
+ assign raddr_int = raddr_cntr_sync_g2b_r;
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ raddr_cntr_sync_g2b_r <= 'h0;
+ end
+ else begin
+ raddr_cntr_sync_g2b_r <= raddr_cntr_sync_g2b;
+ end
+ end
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ waddr_cntr_sync_g2b_r <= 'h0;
+ end
+ else begin
+ waddr_cntr_sync_g2b_r <= waddr_cntr_sync_g2b;
+ end
+ end
+ end
+ else begin
+ assign waddr_int = waddr_cntr_sync_g2b;
+ assign raddr_int = raddr_cntr_sync_g2b;
+ end
+
+ always @ (posedge rclk or posedge rd_rst) begin
+ if (rd_rst) begin
+ raddr_cntr_gry_r <= 'h0;
+ end
+ else begin
+ raddr_cntr_gry_r <= raddr_cntr_gry;
+ end
+ end
+ `IP_MODULE_NAME(efx_fifo_bin2gray) # (.WIDTH(RADDR_WIDTH+1) ) xrd2wr_bin2gray (.bin_i(raddr_cntr), .gray_o(raddr_cntr_gry));
+ `IP_MODULE_NAME(efx_asyncreg) # (.ASYNC_STAGE(SYNC_STAGE), .WIDTH (RADDR_WIDTH+1), .ACTIVE_LOW(0), .OFF_ASSERTION (1)) xrd2wr_addr_sync (.clk(wclk), .reset_n(wr_rst), .d_i(raddr_cntr_gry_r), .d_o(raddr_cntr_gry_sync));
+ `IP_MODULE_NAME(efx_fifo_gray2bin) # (.WIDTH(RADDR_WIDTH+1) ) xrd2wr_gray2bin (.gray_i(raddr_cntr_gry_sync), .bin_o(raddr_cntr_sync_g2b));
+
+ always @ (posedge wclk or posedge wr_rst) begin
+ if (wr_rst) begin
+ waddr_cntr_gry_r <= 'h0;
+ end
+ else begin
+ waddr_cntr_gry_r <= waddr_cntr_gry;
+ end
+ end
+ `IP_MODULE_NAME(efx_fifo_bin2gray) # (.WIDTH(WADDR_WIDTH+1) ) wr2rd_bin2gray (.bin_i(waddr_cntr), .gray_o(waddr_cntr_gry));
+ `IP_MODULE_NAME(efx_asyncreg) # (.ASYNC_STAGE(SYNC_STAGE), .WIDTH (WADDR_WIDTH+1), .ACTIVE_LOW(0), .OFF_ASSERTION (1)) wr2rd_addr_sync (.clk(rclk), .reset_n(rd_rst), .d_i(waddr_cntr_gry_r), .d_o(waddr_cntr_gry_sync));
+ `IP_MODULE_NAME(efx_fifo_gray2bin) # (.WIDTH(WADDR_WIDTH+1) ) wr2rd_gray2bin (.gray_i(waddr_cntr_gry_sync), .bin_o(waddr_cntr_sync_g2b));
+
+ end
+endgenerate
+endmodule
+
+
+
+// synopsys translate_off
+`timescale 1 ns / 1 ps
+// synopsys translate_on
+
+module `IP_MODULE_NAME(efx_resetsync) #(
+ parameter ASYNC_STAGE = 2,
+ parameter ACTIVE_LOW = 1
+) (
+ input wire clk,
+ input wire reset,
+ output wire d_o
+);
+
+
+generate
+ if (ACTIVE_LOW == 1) begin: active_low
+ `IP_MODULE_NAME(efx_asyncreg) #(
+ .WIDTH (1),
+ .ACTIVE_LOW (1),
+ .RST_VALUE (0)
+ ) efx_resetsync_active_low (
+ .clk (clk),
+ .reset_n (reset),
+ .d_i (1'b1),
+ .d_o (d_o)
+ );
+ end
+ else begin: active_high
+ `IP_MODULE_NAME(efx_asyncreg) #(
+ .WIDTH (1),
+ .ACTIVE_LOW (0),
+ .RST_VALUE (1)
+ ) efx_resetsync_active_high (
+ .clk (clk),
+ .reset_n (reset),
+ .d_i (1'b0),
+ .d_o (d_o)
+ );
+ end
+endgenerate
+
+endmodule
+
+
+
+// synopsys translate_off
+`timescale 1 ns / 1 ps
+// synopsys translate_on
+
+module `IP_MODULE_NAME(efx_asyncreg) #(
+ parameter ASYNC_STAGE = 2,
+ parameter WIDTH = 4,
+ parameter ACTIVE_LOW = 1, // 0 - Active high reset, 1 - Active low reset
+ parameter RST_VALUE = 0,
+ parameter OFF_ASSERTION = 0 // 1 = Turn off PULSE_WIDTH_CHK assertion for a particular instance
+) (
+ input wire clk,
+ input wire reset_n,
+ input wire [WIDTH-1:0] d_i,
+ output wire [WIDTH-1:0] d_o
+);
+
+
+
+
+
+
+
+
+
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect author = "author-a" , author_info = "author-a-details"
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+IjzmeF2ACtI8q/MHPcSQakfCyuQSUgg747Z3U+BWZdCStFbqF/Rhg0VPl8JT+91V
+o/8Ohsiw6GnpSIX69XazqGYmhEjb+W7W2ngBYentEXdSyzUYvEbr8i71cL04f1fE
+El78uYgSvjFwoDyocXOVYk8JA0v7y6WnabkL02lAqASKGQK55nzfKeUVbJHKHjAY
+kIT3Nf7JWK2NVVymI1Zs5QttwrNgKBSqoiPvmy4+16bTQMx4R205Bb4rT1MqSqIc
+/5U5/Z1e1tZzOqoEyhfcMMKW0emdBIdByNvteK05ZATt11Uzj2M/Vn1r9KmYd0h1
+uYJaS5tuGEuFInBHa7oO8g==
+`pragma protect key_keyowner = "Cadence Design Systems." , key_keyname = "CDS_RSA_KEY_VER_2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+ABJo/BvEH9XbZrt+xPOQ2C7yeLcnebDlRELbHyCdXeeNkZRVZ9m0ie+1HufS/I+3
+fC63lnVTenVdf9s4tm1RLd5VBkmFb37ikgaESy2aRKWsdLG6x2OyuODoMDRCjYUa
+rxhnwLWh5E55yR3XVZgM2k7/NPP2cTL7iOSCjH4No38siNjs4Fapyc4FFq0TOsQq
+PMqsZ5jgmM+ZT8cil0wMt5tpdEOwvchbe1GcZLIhcIFLD/Gb2XtP0Q0QkOlNzuiL
+DNyobLTjDkV5si+/23Ng2E7tDq+SX+vJP4ciI63kXtsmQdn1ff2Y64ibNXJtpu/w
+K3OoKmk3zFeArSsql8B4/Q==
+`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
+`pragma protect key_block
+RAoMYYsrw2j05cvQ8NR0lCh+Ia/OGVfdwZqq0pwIkgDzO3Z7ol96oQmQzFfIQY/M
+GzEOFdYJTfjnxPvhSPxT1tpq2Fgx6PbC2FMWFtN6/TrG/s01ifIWIZ9Wrfo8Q01l
+6XTAESHR1htrOOx6AiDHAQLOlBb0zgfZjayGJBRX7FI=
+`pragma protect key_keyowner = "Aldec" , key_keyname = "ALDEC15_001"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+YclPuIbYLW/ftZYybucr9ooblGFkJDcdUWf6kCJBGKpIRjItUB3LdSwcREekRWqf
+RGiSRFoyrOTiScT06zZ4fkm+PEKj8O3RU1VMMzDjuEUqkAEELJHNOH71tCSC6MWk
+1dop7MZy8BSXhzg3W3RXIA8IGSJRDibliv+SjkbUzg/WceDI176fJmUwGUji93Tw
+Zu2vRjA/RTi3ZMzS/2Z9YE156hpipJ/Cu6ca8V3y5Kt6DX4fcCS09xESr6soT5Oz
+eKRExN7wu8dvYMUuu1YgCVVR47BBDQi3wdZHqlq1PLaycnNOwBPLOAzA19Hefh/0
+2HflB1HYKxojQCcZU7qUgQ==
+`pragma protect key_keyowner = "Siemens" , key_keyname = "SIEMENS-VERIF-SIM-RSA-2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+fMvC6d2jTMqMqGFzPCPWt6pV9wRUCG4/taH3Nfn7RcekdiLyXQEQgm1SN+X+hkbx
+Pu7552vaw2ez4j3zrTk2vRPnDAsxY8GidEnkJcULi8kiia9Xy/ePFLxOJHHigkiB
+rU7uwrFblcYYBRwQjhMhJDowyR9HVAonxhOWVIlYagtABxLYlNdDEn+N4yPLVCsr
+XUWy1E2L5GUFFNQffENN0iyUaKdWAKGIqgIZK1sB3tVOPVsULetSoyzRErWPNZQD
+e5jbBBNZGyQQWgOJkOfy280ekoUUEZajqtB1jDvE3k8kbo4rzvr7yTkhSzLqjGod
+B2Zpo2FQ//YDRSAaEa9ksQ==
+`pragma protect key_keyowner = "Mentor Graphics Corporation" , key_keyname = "MGC-VERIF-SIM-RSA-2"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+TcmE9lQROafuvxGWP3fMVxDoeaiMX6ALoT3detg/qWZ36+yPTc/t8N7/DtSx17Ze
+vr6iBb+ge3aAzWAq2QHyVfgVV15dvW/HsOXXTh7UqExiO7Dxa6nHXuAhYMON6NP2
+ihfIRSvdnrL2ufvg7A2rCHGAqnr6cVnRLfhNJxtA1lloQbJEtlf/CWNblDxEfyw2
+06l3l8pp1rS0E4tMqagmOr+yhNSpcS9vQswFltqroh6kNIE64zKri96HKkRFLNlP
+fpsN7plEpLS54SxIMmh8Op+w0a/jXVOxxD+FLepsZWfGiNksENgu2Xo6TvZIQUUN
+ZoPzFCMjGk5ZmMyIlytNCw==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4288 )
+`pragma protect data_block
+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
+Ei7EaFpheCmlTJyxUg8TdA==
+`pragma protect end_protected
+
+`undef IP_UUID
+`undef IP_NAME_CONCAT
+`undef IP_MODULE_NAME
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_define.svh b/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_define.svh
new file mode 100644
index 0000000..90fdc68
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_define.svh
@@ -0,0 +1,66 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 8.1
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+localparam SYNC_CLK = 0;
+localparam SYNC_STAGE = 2;
+localparam DATA_WIDTH = 13;
+localparam MODE = "STANDARD";
+localparam OUTPUT_REG = 0;
+localparam PROG_FULL_ASSERT = 128;
+localparam PROGRAMMABLE_FULL = "NONE";
+localparam PROG_FULL_NEGATE = 128;
+localparam PROGRAMMABLE_EMPTY = "NONE";
+localparam PROG_EMPTY_ASSERT = 2;
+localparam PROG_EMPTY_NEGATE = 3;
+localparam OPTIONAL_FLAGS = 0;
+localparam PIPELINE_REG = 1;
+localparam DEPTH = 4096;
+localparam FAMILY = "TITANIUM";
+localparam ASYM_WIDTH_RATIO = 4;
+localparam BYPASS_RESET_SYNC = 0;
+localparam ENDIANESS = 0;
+localparam RAM_STYLE = "block_ram";
+localparam OVERFLOW_PROTECT = 0;
+localparam UNDERFLOW_PROTECT = 0;
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_tmpl.sv b/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_tmpl.sv
new file mode 100644
index 0000000..1305620
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_tmpl.sv
@@ -0,0 +1,60 @@
+// =============================================================================
+// Generated by efx_ipmgr
+// Version: 2025.2.272
+// IP Version: 8.1
+// =============================================================================
+
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+//
+// This document contains proprietary information which is
+// protected by copyright. All rights are reserved. This notice
+// refers to original work by Efinix, Inc. which may be derivitive
+// of other work distributed under license of the authors. In the
+// case of derivative work, nothing in this notice overrides the
+// original author's license agreement. Where applicable, the
+// original license agreement is included in it's original
+// unmodified form immediately below this header.
+//
+// WARRANTY DISCLAIMER.
+// THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+// EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+// RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+// INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+// PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+// WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+//
+// LIMITATION OF LIABILITY.
+// NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+// INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+// MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+// OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+// SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+// CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+// GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+// MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+// THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+// (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+// BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+// NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+// CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+// APPLY TO LICENSEE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+gTSE_core_fifo_data u_gTSE_core_fifo_data
+(
+ .full_o ( full_o ),
+ .empty_o ( empty_o ),
+ .wr_clk_i ( wr_clk_i ),
+ .rd_clk_i ( rd_clk_i ),
+ .wr_en_i ( wr_en_i ),
+ .rd_en_i ( rd_en_i ),
+ .wdata ( wdata ),
+ .rst_busy ( rst_busy ),
+ .rdata ( rdata ),
+ .a_rst_i ( a_rst_i ),
+ .wr_datacount_o ( wr_datacount_o ),
+ .rd_datacount_o ( rd_datacount_o )
+);
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_tmpl.vhd b/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_tmpl.vhd
new file mode 100644
index 0000000..513297d
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_tmpl.vhd
@@ -0,0 +1,75 @@
+--------------------------------------------------------------------------------
+-- Copyright (C) 2013-2025 Efinix Inc. All rights reserved.
+--
+-- This document contains proprietary information which is
+-- protected by copyright. All rights are reserved. This notice
+-- refers to original work by Efinix, Inc. which may be derivitive
+-- of other work distributed under license of the authors. In the
+-- case of derivative work, nothing in this notice overrides the
+-- original author's license agreement. Where applicable, the
+-- original license agreement is included in it's original
+-- unmodified form immediately below this header.
+--
+-- WARRANTY DISCLAIMER.
+-- THE DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND
+-- EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH
+-- RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,
+-- INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+-- MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR
+-- PURPOSE. SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED
+-- WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.
+--
+-- LIMITATION OF LIABILITY.
+-- NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY
+-- INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT
+-- MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY
+-- OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,
+-- SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY
+-- CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+-- GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR
+-- MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN
+-- THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER
+-- (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE
+-- BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO
+-- NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+-- CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT
+-- APPLY TO LICENSEE.
+--
+--------------------------------------------------------------------------------
+------------- Begin Cut here for COMPONENT Declaration ------
+component gTSE_core_fifo_data is
+port (
+ full_o : out std_logic;
+ empty_o : out std_logic;
+ wr_clk_i : in std_logic;
+ rd_clk_i : in std_logic;
+ wr_en_i : in std_logic;
+ rd_en_i : in std_logic;
+ wdata : in std_logic_vector(12 downto 0);
+ rst_busy : out std_logic;
+ rdata : out std_logic_vector(12 downto 0);
+ a_rst_i : in std_logic;
+ wr_datacount_o : out std_logic_vector(12 downto 0);
+ rd_datacount_o : out std_logic_vector(12 downto 0)
+);
+end component gTSE_core_fifo_data;
+
+---------------------- End COMPONENT Declaration ------------
+------------- Begin Cut here for INSTANTIATION Template -----
+u_gTSE_core_fifo_data : gTSE_core_fifo_data
+port map (
+ full_o => full_o,
+ empty_o => empty_o,
+ wr_clk_i => wr_clk_i,
+ rd_clk_i => rd_clk_i,
+ wr_en_i => wr_en_i,
+ rd_en_i => rd_en_i,
+ wdata => wdata,
+ rst_busy => rst_busy,
+ rdata => rdata,
+ a_rst_i => a_rst_i,
+ wr_datacount_o => wr_datacount_o,
+ rd_datacount_o => rd_datacount_o
+);
+
+------------------------ End INSTANTIATION Template ---------
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_data/ipm/component.pickle b/Ti375C529_devkit/ip/gTSE_core_fifo_data/ipm/component.pickle
new file mode 100644
index 0000000..c2645c9
Binary files /dev/null and b/Ti375C529_devkit/ip/gTSE_core_fifo_data/ipm/component.pickle differ
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_data/ipm/graph.pickle b/Ti375C529_devkit/ip/gTSE_core_fifo_data/ipm/graph.pickle
new file mode 100644
index 0000000..c15a035
Binary files /dev/null and b/Ti375C529_devkit/ip/gTSE_core_fifo_data/ipm/graph.pickle differ
diff --git a/Ti375C529_devkit/ip/gTSE_core_fifo_data/settings.json b/Ti375C529_devkit/ip/gTSE_core_fifo_data/settings.json
new file mode 100644
index 0000000..62ba683
--- /dev/null
+++ b/Ti375C529_devkit/ip/gTSE_core_fifo_data/settings.json
@@ -0,0 +1,75 @@
+{
+ "args": [
+ "-o",
+ "gTSE_core_fifo_data",
+ "--base_path",
+ "/projects/SSE/llching/repo/efx_IP_master/efx_IP/efx_hard_soc/fpga/Ti375C529_devkit/ip",
+ "--vlnv",
+ {
+ "vendor": "efinixinc.com",
+ "library": "memory",
+ "name": "efx_fifo_top",
+ "version": "8.1"
+ }
+ ],
+ "conf": {
+ "SYNC_CLK": "0",
+ "SYNC_STAGE": "2",
+ "DEPTH_2": "12",
+ "DATA_WIDTH": "13",
+ "MODE": "\"STANDARD\"",
+ "OUTPUT_REG": "0",
+ "PROG_FULL_ASSERT": "128",
+ "PROGRAMMABLE_FULL": "\"NONE\"",
+ "PFN_INTERNAL": "127",
+ "PEA_INTERNAL": "2",
+ "PEN_INTERNAL": "3",
+ "PROGRAMMABLE_EMPTY": "\"NONE\"",
+ "OPTIONAL_FLAGS": "0",
+ "PIPELINE_REG": "1",
+ "ASYM_WIDTH_RATIO": "4",
+ "BYPASS_RESET_SYNC": "0",
+ "ENDIANESS": "0",
+ "RAM_STYLE": "\"block_ram\"",
+ "OVERFLOW_PROTECT": "0",
+ "UNDERFLOW_PROTECT": "0"
+ },
+ "output": {
+ "external_source_source": [
+ "gTSE_core_fifo_data/gTSE_core_fifo_data.sv",
+ "gTSE_core_fifo_data/gTSE_core_fifo_data_define.svh",
+ "gTSE_core_fifo_data/gTSE_core_fifo_data_tmpl.sv",
+ "gTSE_core_fifo_data/gTSE_core_fifo_data_tmpl.vhd"
+ ],
+ "external_example_example": [
+ "gTSE_core_fifo_data/T20F256_devkit/fifo_demo.peri.xml",
+ "gTSE_core_fifo_data/T20F256_devkit/fifo_demo.xml",
+ "gTSE_core_fifo_data/T20F256_devkit/fifo_demo_top.v",
+ "gTSE_core_fifo_data/T20F256_devkit/fifo_demo_T20.sdc",
+ "gTSE_core_fifo_data/T20F256_devkit/efx_symmetric_width_fifo_top.sv",
+ "gTSE_core_fifo_data/T20F256_devkit/gTSE_core_fifo_data.sv",
+ "gTSE_core_fifo_data/T20F256_devkit/gTSE_core_fifo_data_define.svh"
+ ],
+ "external_example_2": [
+ "gTSE_core_fifo_data/Ti60F225_devkit/fifo_demo.peri.xml",
+ "gTSE_core_fifo_data/Ti60F225_devkit/fifo_demo.xml",
+ "gTSE_core_fifo_data/Ti60F225_devkit/fifo_demo_top.v",
+ "gTSE_core_fifo_data/Ti60F225_devkit/fifo_demo_Ti60.sdc",
+ "gTSE_core_fifo_data/Ti60F225_devkit/efx_symmetric_width_fifo_top.sv",
+ "gTSE_core_fifo_data/Ti60F225_devkit/gTSE_core_fifo_data.sv",
+ "gTSE_core_fifo_data/Ti60F225_devkit/gTSE_core_fifo_data_define.svh"
+ ],
+ "external_testbench_testbench": [
+ "gTSE_core_fifo_data/Testbench/fifo_tb.sv",
+ "gTSE_core_fifo_data/Testbench/xrun.sh",
+ "gTSE_core_fifo_data/Testbench/msim.sh",
+ "gTSE_core_fifo_data/Testbench/flist",
+ "gTSE_core_fifo_data/Testbench/modelsim.do",
+ "gTSE_core_fifo_data/Testbench/gTSE_core_fifo_data.sv",
+ "gTSE_core_fifo_data/Testbench/gTSE_core_fifo_data_define.svh"
+ ]
+ },
+ "ooc_synthesis": {},
+ "sw_version": "2025.2.272",
+ "generated_date": "2025-10-16T09:35:27.104449+00:00"
+}
\ No newline at end of file
diff --git a/Ti375C529_devkit/source/MacRxCheckSumChecker.v b/Ti375C529_devkit/source/MacRxCheckSumChecker.v
new file mode 100644
index 0000000..d13420d
--- /dev/null
+++ b/Ti375C529_devkit/source/MacRxCheckSumChecker.v
@@ -0,0 +1,460 @@
+`timescale 1ns/1ps
+`define IP_MODULE_NAME(name) name
+module `IP_MODULE_NAME(MacRxCheckSumChecker) (
+ input wire io_input_valid,
+ output reg io_input_ready,
+ input wire io_input_payload_last,
+ input wire io_input_payload_fragment_error,
+ input wire [7:0] io_input_payload_fragment_data,
+ output reg io_output_valid,
+ input wire io_output_ready,
+ output reg io_output_payload_last,
+ output reg io_output_payload_fragment_error,
+ output reg [7:0] io_output_payload_fragment_data,
+ input wire clk,
+ input wire reset
+);
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+hitigEdAF1oYulO+rzgvZGPZ/Fd2rMxle3YAk5YXRsXciII9biXM11yT9um6jJ8+
+3kzVSR81TQjw7cIj5GSOo/ZUXLyM5C31H4zOLXmkRszAL1LLpcHPwqj/0zmRQxsk
+Crgj5D989eHlroC0Prpz3dn6NdNSKLXz0GqV6d9E9r24bdIdCEg7IOxSJrlw18oq
+t6GUxKyKSqV8FcH3XaacJ6RYAf6AeAQgEC04VhojxONJQnPlp2dcTeMRl6NhnRqs
+sxE1pShW8ERncX+VZUigeFks09GmTIJcmh3dk//EuICiBGVdKtEDU3w0bxIs8mkX
+fv849ddnaoUeK2vjnaRMXg==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 20032 )
+`pragma protect data_block
+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
+1HaTisqxJbDWbV49GlfnQg==
+`pragma protect end_protected
+
+//pragma protect end
+
+`undef IP_MODULE_NAME
diff --git a/Ti375C529_devkit/source/MacTxLso.v b/Ti375C529_devkit/source/MacTxLso.v
new file mode 100644
index 0000000..8805316
--- /dev/null
+++ b/Ti375C529_devkit/source/MacTxLso.v
@@ -0,0 +1,1744 @@
+`timescale 1ns/1ps
+`define IP_MODULE_NAME(name) name
+module `IP_MODULE_NAME(MacTxLso) (
+ input wire io_input_valid,
+ output wire io_input_ready,
+ input wire io_input_payload_last,
+ input wire [7:0] io_input_payload_fragment_data,
+ output wire io_output_valid,
+ input wire io_output_ready,
+ output wire io_output_payload_last,
+ output wire [7:0] io_output_payload_fragment_data,
+ input wire clk,
+ input wire reset
+);
+//pragma protect
+//pragma protect begin
+
+/* Encryption Envelope */
+
+`pragma protect begin_protected
+`pragma protect version = 1
+`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
+`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
+`pragma protect key_method = "rsa"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
+`pragma protect key_block
+EYAd3mbn/xhar3hlqQhHXmi9nJO/Sc1phUP+NTKHH/cySFdPR/c6LtYnfdaakOst
+DZn8xJcYSAxgRQrxWTES7TEnvtmukjAiedXml9QEurP5HyD300CnuOA/HNrQFS72
+ijRe6hCva+3p6g+osbxssWNj43uf3H7A3z00f+6LU+gLjl/cLAQopvRSpv9Cq4Wf
+GA3mmls9DUOQ96sxBgLufDQ2V6kAggNRmbMbb4iks2sRddHYw6khj4qpbBu601G3
+SfzSAZcejK7it73r7Ku/bv8a995UcODh5Ya0pEiQ1O0NHuROqzGo/+rFQrBwvMEv
+oKFvKMZEUs4IM4MZeY9q3g==
+`pragma protect data_method = "aes256-cbc"
+`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 81776 )
+`pragma protect data_block
+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
+`pragma protect end_protected
+
+//pragma protect end
+
+`undef IP_MODULE_NAME
diff --git a/Ti375C529_devkit/source/design_modules.v b/Ti375C529_devkit/source/design_modules.v
new file mode 100644
index 0000000..d99ad61
--- /dev/null
+++ b/Ti375C529_devkit/source/design_modules.v
@@ -0,0 +1,1494 @@
+////////////////////////////////////////////////////////////////////////////
+// _____
+// / _______ Copyright (C) 2013-2022 Efinix Inc. All rights reserved.
+// / / \
+// / / .. / design_modules.v
+// / / .' /
+// __/ /.' / Description:
+// __ \ / Modules for SapphireSoC example design
+// /_/ /\ \_____/ /
+// ____/ \_______/
+//
+// ***********************************************************************
+// Revisions:
+// 1.0 Initial rev
+// 1.1 Added Custom ALU
+// 1.2 Fixed AXI4 slave read first issue
+// 1.3 Added axi full-duplex to half-duplex converter
+// ***********************************************************************
+`timescale 1ns/1ps
+
+module apb3_slave #(
+ // user parameter starts here
+ //
+ parameter ADDR_WIDTH = 16,
+ parameter DATA_WIDTH = 32,
+ parameter NUM_REG = 4
+) (
+ // user logic starts here
+ input clk,
+ input resetn,
+ input [ADDR_WIDTH-1:0] PADDR,
+ input PSEL,
+ input PENABLE,
+ output PREADY,
+ input PWRITE,
+ input [DATA_WIDTH-1:0] PWDATA,
+ output [DATA_WIDTH-1:0] PRDATA,
+ output PSLVERROR
+
+);
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+localparam [1:0] IDLE = 2'b00,
+ SETUP = 2'b01,
+ ACCESS = 2'b10;
+
+integer byteIndex;
+reg [DATA_WIDTH-1:0] slaveReg [0:NUM_REG-1];
+reg [DATA_WIDTH-1:0] slaveRegOut;
+reg [1:0] busState,
+ busNext;
+reg slaveReady;
+wire actWrite,
+ actRead;
+reg [31:0] lfsr;
+wire lfsr_stop;
+
+
+///////////////////////////////////////////////////////////////////////////////
+
+ always@(posedge clk or negedge resetn)
+ begin
+ if(!resetn)
+ busState <= IDLE;
+ else
+ busState <= busNext;
+ end
+
+ always@(*)
+ begin
+ busNext = busState;
+
+ case(busState)
+ IDLE:
+ begin
+ if(PSEL && !PENABLE)
+ busNext = SETUP;
+ else
+ busNext = IDLE;
+ end
+ SETUP:
+ begin
+ if(PSEL && PENABLE)
+ busNext = ACCESS;
+ else
+ busNext = IDLE;
+ end
+ ACCESS:
+ begin
+ if(PREADY)
+ busNext = IDLE;
+ else
+ busNext = ACCESS;
+ end
+ default:
+ begin
+ busNext = IDLE;
+ end
+ endcase
+ end
+
+
+ assign actWrite = PWRITE & (busState == ACCESS);
+ assign actRead = !PWRITE & (busState == ACCESS);
+ assign PSLVERROR = 1'b0;
+ assign PRDATA = slaveRegOut;
+ assign PREADY = slaveReady & & (busState !== IDLE);
+
+ always@ (posedge clk)
+ begin
+ slaveReady <= actWrite | actRead;
+ end
+
+ always@ (posedge clk or negedge resetn)
+ begin
+ if(!resetn)
+ for(byteIndex = 0; byteIndex < NUM_REG; byteIndex = byteIndex + 1)
+ slaveReg[byteIndex] <= {DATA_WIDTH{1'b0}};
+ else
+ begin
+ if(actWrite)
+ begin
+ for(byteIndex = 0; byteIndex < NUM_REG; byteIndex = byteIndex + 1)
+ if (PADDR[3:0] == (byteIndex*4))
+ slaveReg[byteIndex] <= PWDATA;
+ end
+ else
+ begin
+ slaveReg[0] <= lfsr;
+ for(byteIndex = 1; byteIndex < NUM_REG; byteIndex = byteIndex + 1)
+ slaveReg[byteIndex] <= slaveReg[byteIndex];
+ end
+ end
+ end
+
+ always@ (posedge clk or negedge resetn)
+ begin
+ if(!resetn)
+ slaveRegOut <= {DATA_WIDTH{1'b0}};
+ else begin
+ if(actRead)
+ slaveRegOut <= slaveReg[PADDR[7:2]];
+ else
+ slaveRegOut <= slaveRegOut;
+
+ end
+
+ end
+
+ assign lfsr_stop = slaveReg[1][0];
+//custom logics
+
+ always@(posedge clk or negedge resetn)
+ begin
+ if (!resetn)
+ lfsr <= 'd1;
+ else
+ begin
+ if(!lfsr_stop)
+ begin
+ lfsr[31] <= lfsr[0];
+ lfsr[30] <= lfsr[31];
+ lfsr[29] <= lfsr[30];
+ lfsr[28] <= lfsr[29];
+ lfsr[27] <= lfsr[28];
+ lfsr[26] <= lfsr[27];
+ lfsr[25] <= lfsr[26];
+ lfsr[24] <= lfsr[25];
+ lfsr[23] <= lfsr[24];
+ lfsr[22] <= lfsr[23];
+ lfsr[21] <= lfsr[22];
+ lfsr[20] <= lfsr[21];
+ lfsr[19] <= lfsr[20];
+ lfsr[18] <= lfsr[19];
+ lfsr[17] <= lfsr[18];
+ lfsr[16] <= lfsr[17];
+ lfsr[15] <= lfsr[16];
+ lfsr[14] <= lfsr[15];
+ lfsr[13] <= lfsr[14];
+ lfsr[12] <= lfsr[13];
+ lfsr[11] <= lfsr[12];
+ lfsr[10] <= lfsr[11];
+ lfsr[9 ] <= lfsr[10];
+ lfsr[8 ] <= lfsr[9 ];
+ lfsr[7 ] <= lfsr[8 ];
+ lfsr[6 ] <= lfsr[7 ];
+ lfsr[5 ] <= lfsr[6 ];
+ lfsr[4 ] <= lfsr[5 ];
+ lfsr[3 ] <= lfsr[4 ] ^ lfsr[0];
+ lfsr[2 ] <= lfsr[3 ];
+ lfsr[1 ] <= lfsr[2 ];
+ lfsr[0 ] <= lfsr[1 ] ^ lfsr[0];
+ end
+ else
+ begin
+ lfsr <= lfsr;
+ end
+ end
+ end
+
+endmodule
+
+// ***********************************************************************
+
+module axi4_slave #(
+ parameter ADDR_WIDTH = 32,
+ parameter DATA_WIDTH = 32
+) (
+ //custom logic starts here
+ output axi_interrupt,
+ //
+ input axi_aclk,
+ input axi_resetn,
+ //AW
+ input [7:0] axi_awid,
+ input [ADDR_WIDTH-1:0] axi_awaddr,
+ input [7:0] axi_awlen,
+ input [2:0] axi_awsize,
+ input [1:0] axi_awburst,
+ input axi_awlock,
+ input [3:0] axi_awcache,
+ input [2:0] axi_awprot,
+ input [3:0] axi_awqos,
+ input [3:0] axi_awregion,
+ input axi_awvalid,
+ output axi_awready,
+ //W
+ input [DATA_WIDTH-1:0] axi_wdata,
+ input [(DATA_WIDTH/8)-1:0]
+ axi_wstrb,
+ input axi_wlast,
+ input axi_wvalid,
+ output axi_wready,
+ //B
+ output [7:0] axi_bid,
+ output [1:0] axi_bresp,
+ output axi_bvalid,
+ input axi_bready,
+ //AR
+ input [7:0] axi_arid,
+ input [ADDR_WIDTH-1:0] axi_araddr,
+ input [7:0] axi_arlen,
+ input [2:0] axi_arsize,
+ input [1:0] axi_arburst,
+ input axi_arlock,
+ input [3:0] axi_arcache,
+ input [2:0] axi_arprot,
+ input [3:0] axi_arqos,
+ input [3:0] axi_arregion,
+ input axi_arvalid,
+ output axi_arready,
+ //R
+ output [7:0] axi_rid,
+ output [DATA_WIDTH-1:0] axi_rdata,
+ output [1:0] axi_rresp,
+ output axi_rlast,
+ output axi_rvalid,
+ input axi_rready
+);
+
+///////////////////////////////////////////////////////////////////////////////
+localparam RAM_SIZE = 2048;
+localparam RAMW = $clog2(RAM_SIZE);
+
+localparam [2:0] IDLE = 3'h0,
+ PRE_WR = 3'h1,
+ WR = 3'h2,
+ WR_RESP = 3'h3,
+ PRE_RD = 3'h4,
+ RD = 3'h5;
+
+reg [2:0] busState,
+ busNext;
+wire busReady,
+ busPreWrite,
+ busWrite,
+ busWriteResp,
+ busPreRead,
+ busRead;
+wire awWrap,
+ arWrap;
+reg [7:0] awidReg;
+reg [ADDR_WIDTH-1:0] awaddrReg;
+reg [7:0] awlenReg;
+reg [2:0] awsizeReg;
+reg [1:0] awburstReg,
+ awlockReg;
+reg [3:0] awcacheReg;
+reg [2:0] awprotReg;
+reg [3:0] awqosReg;
+reg [3:0] awregionReg;
+
+reg [7:0] aridReg;
+reg [ADDR_WIDTH-1:0] araddrReg;
+reg [7:0] arlenReg;
+reg [2:0] arsizeReg;
+reg [1:0] arburstReg,
+ arlockReg;
+reg [3:0] arcacheReg;
+reg [2:0] arprotReg;
+reg [3:0] arqosReg;
+reg [3:0] arregionReg;
+
+reg [31:0] awaddr_base;
+wire [31:0] awWrapSize;
+reg [7:0] decodeAwsize;
+
+wire [31:0] araddr_wrap;
+reg [7:0] decodeArsize;
+
+reg [31:0] araddr_base;
+wire [31:0] arWrapSize;
+reg [7:0] ridReg;
+reg [1:0] rrespReg;
+reg [1:0] rlastReg;
+
+wire pWr_done;
+wire pRd_done;
+wire awaddr_ext;
+wire araddr_ext;
+wire [(DATA_WIDTH/8)-1:0]
+ rlast;
+wire [(DATA_WIDTH/8)-1:0]
+ rvalid;
+//custom logic
+wire [9:0] wdata [0:3];
+wire wEnable[0:3];
+wire [9:0] rdata [0:3];
+wire [31:0] data_o;
+wire rEnable;
+reg r_axi_interrupt;
+
+///////////////////////////////////////////////////////////////////////////////
+
+
+ always@ (posedge axi_aclk or negedge axi_resetn)
+ begin
+ if(!axi_resetn)
+ busState <= IDLE;
+ else
+ busState <= busNext;
+
+ end
+
+ always@ (*)
+ begin
+ busNext = busState;
+
+ case(busState)
+ IDLE:
+ begin
+ if(axi_awvalid)
+ busNext = PRE_WR;
+ else if(axi_arvalid)
+ busNext = PRE_RD;
+ else
+ busNext = IDLE;
+ end
+ PRE_WR:
+ begin
+ if(pWr_done)
+ busNext = WR;
+ else
+ busNext = PRE_WR;
+ end
+ WR:
+ begin
+ if(axi_wlast)
+ busNext = WR_RESP;
+ else
+ busNext = WR;
+ end
+ WR_RESP:
+ begin
+ if(axi_bready)
+ busNext = IDLE;
+ else
+ busNext = WR_RESP;
+ end
+ PRE_RD:
+ begin
+ if(pRd_done)
+ busNext = RD;
+ else
+ busNext = PRE_RD;
+ end
+ RD:
+ begin
+ if(axi_rlast && axi_rready)
+ busNext = IDLE;
+ else
+ busNext = RD;
+ end
+ default:
+ busNext = IDLE;
+ endcase
+ end
+
+ assign busReady = (busState == IDLE);
+ assign busPreWrite = (busState == PRE_WR);
+ assign busWrite = (busState == WR);
+ assign busWriteResp = (busState == WR_RESP);
+ assign busPreRead = (busState == PRE_RD);
+ assign busRead = (busState == RD);
+
+ //PRE_WRITE
+ assign pWr_done = (awburstReg == 2'b10)? awaddr_ext : 1'b1;
+ //AW Control
+
+ assign axi_awready = busReady;
+
+ //Wrap Control
+ always@ (posedge axi_aclk or negedge axi_resetn)
+ begin
+ if (!axi_resetn)
+ awaddr_base <= 'h0;
+ else begin
+ if(busReady)
+ awaddr_base <= 'h0;
+ else if(busPreWrite && !awaddr_ext)
+ awaddr_base <= awaddr_base + awWrapSize;
+ else
+ awaddr_base <= awaddr_base;
+ end
+ end
+
+ assign awaddr_ext = busPreWrite ? (awaddr_base[RAMW:0] > awaddrReg[RAMW:0]) : 1'b0;
+ assign awWrap = busWrite && (axi_awburst == 2'b10) ? (awaddrReg[RAMW:0] == awaddr_base - 4) : 1'b0;
+ assign awWrapSize = (DATA_WIDTH/8) * awlenReg;
+
+ //AW Info
+ always@ (posedge axi_aclk)
+ begin
+ if(axi_awvalid) begin
+ awidReg <= axi_awid;
+ awlenReg <= axi_awlen + 1'b1;
+ awsizeReg <= axi_awsize;
+ awburstReg <= axi_awburst;
+ awlockReg <= axi_awlock;
+ awcacheReg <= axi_awcache;
+ awprotReg <= axi_awprot;
+ awqosReg <= axi_awqos;
+ awregionReg <= axi_awregion;
+ end
+ else begin
+ awidReg <= awidReg;
+ awlenReg <= awlenReg;
+ awsizeReg <= awsizeReg;
+ awburstReg <= awburstReg;
+ awlockReg <= awlockReg;
+ awcacheReg <= awcacheReg;
+ awprotReg <= awprotReg;
+ awqosReg <= awqosReg;
+ awregionReg <= awregionReg;
+ end
+ end
+
+ always@ (awsizeReg)
+ begin
+ case(awsizeReg)
+ 3'h0:decodeAwsize <= 8'd1;
+ 3'h1:decodeAwsize <= 8'd2;
+ 3'h2:decodeAwsize <= 8'd4;
+ 3'h3:decodeAwsize <= 8'd8;
+ 3'h4:decodeAwsize <= 8'd16;
+ 3'h5:decodeAwsize <= 8'd32;
+ 3'h6:decodeAwsize <= 8'd64;
+ 3'h7:decodeAwsize <= 8'd128;
+ default:decodeAwsize <= 8'd1;
+ endcase
+ end
+
+ always@ (posedge axi_aclk)
+ begin
+ if(axi_awvalid)
+ awaddrReg <= axi_awaddr;
+ else if (busWrite) begin
+ case(awburstReg)
+ 2'b00://fixed burst
+ awaddrReg <= awaddrReg;
+ 2'b01://incremental burst
+ awaddrReg <= awaddrReg + decodeAwsize;
+ 2'b10://wrap burst
+ begin
+ if(awWrap)
+ awaddrReg <= awaddrReg - awWrapSize;
+ else
+ awaddrReg <= awaddrReg + decodeAwsize;
+ end
+ default:
+ awaddrReg <= awaddrReg;
+ endcase
+ end
+ end
+ //W operation
+ assign axi_wready = busWrite;
+
+ //B Response
+ assign axi_bid = awidReg;
+ assign axi_bresp = 2'b00;
+ assign axi_bvalid = busWriteResp;
+
+ //PRE_READ
+ assign pRd_done = (arburstReg == 2'b10)? araddr_ext : 1'b1;
+
+ //AR Control
+ assign axi_arready = busReady;
+
+ //Wrap Control
+ always@ (posedge axi_aclk or negedge axi_resetn)
+ begin
+ if (!axi_resetn)
+ araddr_base <= 'h0;
+ else begin
+ if(busReady)
+ araddr_base <= 'h0;
+ else if(busPreRead && !araddr_ext)
+ araddr_base <= araddr_base + arWrapSize;
+ else
+ araddr_base <= araddr_base;
+ end
+ end
+
+ assign araddr_ext = busPreRead ? (araddr_base[RAMW:0] > araddrReg[RAMW:0]) : 1'b0;
+ assign arWrap = (busRead && axi_arburst == 2'b10) ? (araddrReg[RAMW:0] == araddr_base - 4) : 1'b0;
+ assign arWrapSize = (DATA_WIDTH/8) * arlenReg;
+
+ //AR Info
+ always@ (posedge axi_aclk)
+ begin
+ if(axi_arvalid) begin
+ aridReg <= axi_arid;
+ arlenReg <= axi_arlen + 1'b1;
+ arsizeReg <= axi_arsize;
+ arburstReg <= axi_arburst;
+ arlockReg <= axi_arlock;
+ arcacheReg <= axi_arcache;
+ arprotReg <= axi_arprot;
+ arqosReg <= axi_arqos;
+ arregionReg <= axi_arregion;
+ end
+ else begin
+ aridReg <= aridReg;
+ arlenReg <= arlenReg;
+ arsizeReg <= arsizeReg;
+ arburstReg <= arburstReg;
+ arlockReg <= arlockReg;
+ arcacheReg <= arcacheReg;
+ arprotReg <= arprotReg;
+ arqosReg <= arqosReg;
+ arregionReg <= arregionReg;
+ end
+ end
+
+ always@ (arsizeReg)
+ begin
+ case(arsizeReg)
+ 3'h0:decodeArsize <= 8'd1;
+ 3'h1:decodeArsize <= 8'd2;
+ 3'h2:decodeArsize <= 8'd4;
+ 3'h3:decodeArsize <= 8'd8;
+ 3'h4:decodeArsize <= 8'd16;
+ 3'h5:decodeArsize <= 8'd32;
+ 3'h6:decodeArsize <= 8'd64;
+ 3'h7:decodeArsize <= 8'd128;
+ default:decodeArsize <= 8'd1;
+ endcase
+ end
+
+ always@ (posedge axi_aclk)
+ begin
+ if(axi_arvalid)
+ araddrReg <= axi_araddr;
+ else if (rEnable && axi_rready) begin
+ case(arburstReg)
+ 2'b00://fixed burst
+ araddrReg <= araddrReg;
+ 2'b01://incremental burst
+ araddrReg <= araddrReg + decodeArsize;
+ 2'b10://wrap burst
+ begin
+ if(arWrap)
+ araddrReg <= araddrReg - arWrapSize;
+ else
+ araddrReg <= araddrReg + decodeArsize;
+ end
+ default:
+ araddrReg <= araddrReg;
+ endcase
+ end
+ end
+
+ // R Operation
+ assign axi_rdata = data_o;
+
+ // R Response
+ assign axi_rvalid = busRead? |rvalid : 1'b0 ;
+ assign axi_rlast = busRead? |rlast : 1'b0 ;
+
+ assign axi_rresp = 2'b00;
+ assign axi_rid = aridReg;
+
+ //custom logic starts here
+ assign axi_interrupt = r_axi_interrupt;
+ assign rEnable = (axi_arburst == 2'b10)? busRead : busPreRead;
+
+ always@ (posedge axi_aclk)
+ begin
+ if (!axi_resetn)
+ begin
+ r_axi_interrupt <= 1'b0;
+ end
+ else
+ begin
+ if((axi_wvalid) && (axi_wdata == 16'hABCD))
+ r_axi_interrupt <= 1'b1;
+ else
+ r_axi_interrupt <= 1'b0;
+ end
+ end
+
+ genvar i;
+ generate
+ for(i=0;i < (DATA_WIDTH/8); i = i + 1) begin
+
+ assign rvalid[i] = (arlenReg != 'h1)? rdata[i][8] : 1'b1;
+ assign rlast[i] = (arlenReg != 'h1)? rdata[i][9] : 1'b1;
+ assign wdata[i] = {axi_wlast, axi_wvalid, axi_wdata[(i*8+7) -: 8]} ;
+ assign data_o[(i*8+7) -: 8] = rdata[i];
+ assign wEnable[i] = axi_wready & axi_wvalid & axi_wstrb[i];
+
+ ext_mem #(
+ .DATA_WIDTH (10),
+ .ADDR_WIDTH (RAMW-2),
+ .OUTPUT_REG ("TRUE")
+
+ ) user_ram (
+ .wdata (wdata[i]),
+ .waddr (awaddrReg[RAMW-1:2]),
+ .raddr (araddrReg[RAMW-1:2]),
+ .we (wEnable[i]),
+ .wclk (axi_aclk),
+ .re (rEnable),
+ .rclk (axi_aclk),
+ .rdata (rdata[i])
+ );
+ end
+ endgenerate
+
+endmodule
+
+// ***********************************************************************
+
+module memory_checker #(
+ parameter WIDTH = 32,
+ parameter ALEN = 23,
+ parameter START_ADDR = 32'h00000000,
+ parameter STOP_ADDR = 32'h00100000,
+ parameter ADDR_OFFSET = (ALEN + 1)*(WIDTH/8)
+) (
+input axi_clk,
+input rstn,
+input start,
+output [7:0] aid,
+output reg [31:0] aaddr,
+output reg [7:0] alen,
+output reg [2:0] asize,
+output reg [1:0] aburst,
+output reg [1:0] alock,
+output reg avalid,
+input aready,
+output reg atype,
+
+output [7:0] wid,
+output reg [WIDTH-1:0] wdata,
+output [WIDTH/8-1:0] wstrb,
+output reg wlast,
+output reg wvalid,
+input wready,
+
+input [3:0] rid,
+input [WIDTH-1:0] rdata,
+input rlast,
+input rvalid,
+output reg rready,
+input [1:0] rresp,
+
+input [7:0] bid,
+input bvalid,
+output reg bready,
+output pass
+
+);
+
+///////////////////////////////////////////////////////////////////////////////
+localparam ASIZE = (WIDTH == 512)? 6 :
+ (WIDTH == 256)? 5 :
+ (WIDTH == 128)? 4 :
+ (WIDTH == 64)? 3 : 2;
+
+//Main states
+localparam COMPARE_WIDTH = WIDTH;
+localparam IDLE = 4'b0000,
+ WRITE_ADDR = 4'b0001,
+ PRE_WRITE = 4'b0010,
+ WRITE = 4'b0011,
+ POST_WRITE = 4'b0100,
+ READ_ADDR = 4'b0101,
+ PRE_READ = 4'b0110,
+ READ_COMPARE = 4'b0111,
+ POST_READ = 4'b1000,
+ DONE = 4'b1001;
+
+//reg [3:0] states, nstates;
+reg fail;
+reg done;
+reg [3:0] states;
+reg [3:0] nstates;
+reg bvalid_done;
+reg [1:0] start_sync;
+reg [8:0] write_cnt, read_cnt;
+reg [WIDTH-1:0] rdata_store;
+reg wburst_done,
+ rburst_done,
+ write_done,
+ read_done;
+
+///////////////////////////////////////////////////////////////////////////////
+ assign aid = 8'h00;
+ assign wstrb = {WIDTH/8{1'b1}};
+ assign wid = 8'h00;
+ assign pass = done & ~fail;
+
+ always @(posedge axi_clk or negedge rstn)
+ begin
+ if (!rstn) begin
+ start_sync <= 2'b00;
+ end else begin
+ start_sync[0] <= start;
+ start_sync[1] <= start_sync[0];
+ end
+ end
+
+ always @(posedge axi_clk or negedge rstn)
+ begin
+ if (!rstn) begin
+ states <= IDLE;
+ end else begin
+ states <= nstates;
+ end
+ end
+
+ always @(states or start_sync[1] or write_cnt or rburst_done or write_done or read_done or bvalid_done or aready)
+ begin
+ case(states)
+ IDLE :
+ if (start_sync[1])
+ nstates = WRITE_ADDR;
+ else
+ nstates = IDLE;
+ WRITE_ADDR :
+ if (aready)
+ nstates = PRE_WRITE;
+ else
+ nstates = WRITE_ADDR;
+ PRE_WRITE :
+ nstates = WRITE;
+ WRITE :
+ if (write_cnt == 9'd0)
+ nstates = POST_WRITE;
+ else
+ nstates = WRITE;
+ POST_WRITE :
+ if (write_done & bvalid_done)
+ nstates = READ_ADDR;
+ else if (bvalid_done)
+ nstates = WRITE_ADDR;
+ else
+ nstates = POST_WRITE;
+ READ_ADDR :
+ if (aready)
+ nstates = PRE_READ;
+ else
+ nstates = READ_ADDR;
+ PRE_READ :
+ nstates = READ_COMPARE;
+ READ_COMPARE :
+ if (rburst_done)
+ nstates = POST_READ;
+ else
+ nstates = READ_COMPARE;
+ POST_READ :
+ if (read_done)
+ nstates = DONE;
+ else
+ nstates = READ_ADDR;
+ DONE :
+ nstates = DONE;
+ default :
+ nstates = IDLE;
+ endcase
+ end
+
+ always @(posedge axi_clk or negedge rstn)
+ begin
+ if (!rstn) begin
+ aaddr <= START_ADDR;
+ avalid <= 1'b0;
+ atype <= 1'b0;
+ aburst <= 2'b00;
+ asize <= 3'b000;
+ alen <= 8'd0;
+ alock <= 2'b00;
+ wvalid <= 1'b0;
+ write_cnt <= ALEN + 1;
+ write_done <= 1'b0;
+ wdata <= {WIDTH{1'b0}};
+ wburst_done <= 1'b0;
+ wlast <= 1'b0;
+ bready <= 1'b0;
+ fail <= 1'b0;
+ done <= 1'b0;
+ rready <= 1'b0;
+ bvalid_done <=1'b0;
+ end
+ else
+ begin
+ if (states == IDLE)
+ begin
+ aaddr <= START_ADDR;
+ avalid <= 1'b0;
+ atype <= 1'b0;
+ aburst <= 2'b00;
+ asize <= 3'b000;
+ alen <= 8'd0;
+ alock <= 2'b00;
+ wvalid <= 1'b0;
+ write_cnt <= ALEN + 1;
+ wdata <= {WIDTH{1'b0}};
+ wburst_done <= 1'b0;
+ wlast <= 1'b0;
+ bready <= 1'b0;
+ rready <= 1'b0;
+ bvalid_done <= 1'b0;
+ fail <= 1'b0;
+ done <= 1'b0;
+ end
+ if (states == WRITE_ADDR)
+ begin
+ avalid <= 1'b1;
+ atype <= 1'b1;
+ asize <= ASIZE;
+ alen <= ALEN;
+ aburst <= 2'b01;
+ alock <= 2'b00;
+ wvalid <= 1'b0;
+ write_cnt <= ALEN + 1;
+ wburst_done <= 1'b0;
+ bvalid_done <= 1'b0;
+ bready <= 1'b0;
+ rready <= 1'b0;
+ done <= 1'b0;
+ fail <= 1'b0;
+ end
+ if (states == PRE_WRITE)
+ begin
+ avalid <= 1'b0;
+ atype <= 1'b0;
+ wvalid <= 1'b1;
+ wdata <= {{WIDTH/32{~aaddr[7:0]}},{WIDTH/32{~write_cnt[7:0]}},{WIDTH/32{aaddr[7:0]}},{WIDTH/32{write_cnt[7:0]}}};
+ bready <= 1'b1;
+ write_cnt <= write_cnt - 1;
+ if(alen == 'd0)
+ begin
+ wlast <= 1'b1;
+ end
+ end
+ if (states == WRITE)
+ begin
+ if (wready == 1'b1)
+ begin
+ wdata <= {{WIDTH/32{~aaddr[7:0]}},{WIDTH/32{~write_cnt[7:0]}},{WIDTH/32{aaddr[7:0]}},{WIDTH/32{write_cnt[7:0]}}};
+ if (write_cnt == 9'd0)
+ begin
+ wburst_done <= 1'b1;
+ wlast <= 1'b0;
+ wvalid <= 1'b0;
+ if (aaddr >= STOP_ADDR)
+ begin
+ write_done <= 1'b1;
+ end else
+ begin
+ write_done <= 1'b0;
+ end
+ end if (write_cnt == 9'd1)
+ begin
+ wlast <= 1'b1;
+ write_cnt <= write_cnt - 1;
+ end
+ else
+ begin
+ write_cnt <= write_cnt - 1;
+ end
+ end
+ end
+ if (states == POST_WRITE)
+ begin
+ if (write_done)
+ begin
+ aaddr <= START_ADDR;
+ end
+ else
+ begin
+ if (bvalid) begin
+ aaddr <= aaddr + ADDR_OFFSET;
+ end
+ end
+ if (wready == 1'b1)
+ begin
+ wlast <= 1'b0;
+ wvalid <= 1'b0;
+ end
+ if (bvalid)
+ begin
+ bvalid_done <= 1'b1;
+ bready <= 1'b0;
+ end
+ end
+ if (states == READ_ADDR)
+ begin
+ avalid <= 1'b1;
+ read_cnt <= ALEN + 1;
+
+ end
+ if (states == PRE_READ)
+ begin
+ avalid <= 1'b0;
+ rburst_done <= 1'b0;
+ rdata_store <= {{WIDTH/32{~aaddr[7:0]}},{WIDTH/32{~read_cnt[7:0]}},{WIDTH/32{aaddr[7:0]}},{WIDTH/32{read_cnt[7:0]}}};
+ read_cnt <= read_cnt - 1'b1;
+ end
+ if (states == READ_COMPARE)
+ begin
+ rready <= 1'b1;
+ if (read_cnt != 9'd0)
+ begin
+ if (rvalid == 1'b1)
+ begin
+ rdata_store <= {{WIDTH/32{~aaddr[7:0]}},{WIDTH/32{~read_cnt[7:0]}},{WIDTH/32{aaddr[7:0]}},{WIDTH/32{read_cnt[7:0]}}};
+ read_cnt <= read_cnt - 1'b1;
+ if (rdata[COMPARE_WIDTH-1:0] != rdata_store[COMPARE_WIDTH-1:0])
+ fail <= 1'b1;
+ else
+ fail <= 1'b0;
+ end
+
+ end
+ end
+ if (read_cnt == 9'd0)
+ begin
+ if (rvalid == 1'b1)
+ begin
+ if (rdata[COMPARE_WIDTH-1:0] != rdata_store[COMPARE_WIDTH-1:0])
+ begin
+ fail <= 1'b1;
+ end
+ else
+ begin
+ fail <= 1'b0;
+ end
+ if (aaddr >= STOP_ADDR)
+ begin
+ read_done <= 1'b1;
+ end
+ else
+ begin
+ read_done <= 1'b0;
+ end
+ rburst_done <= 1'b1;
+ end
+ end
+ if (states == POST_READ)
+ begin
+ aaddr <= aaddr + ADDR_OFFSET;
+ rready <= 1'b1;
+ end
+ if (states == DONE)
+ begin
+ done <= 1'b1;
+ end
+ end
+ end
+endmodule
+
+// ***********************************************************************
+module timer_start #(
+ parameter MHZ = 50,
+ parameter SECOND = 3,
+ parameter PULSE = 0
+) (
+ input clk,
+ input rst_n,
+ output start
+);
+
+reg [35:0] delay_cnt;
+wire second_tick;
+reg [4:0] second_cnt;
+reg [3:0] pulse_reg;
+wire start_reg;
+
+///////////////////////////////////////////////////////////////////////////////
+
+`ifndef EFX_SIM
+localparam tick_cnt = (MHZ * 1000000) >> 1;
+`else
+localparam tick_cnt = MHZ * 200;
+`endif
+
+ always@(posedge clk or negedge rst_n)
+ begin
+ if(!rst_n)
+ delay_cnt <= 'd0;
+ else
+ begin
+ if(delay_cnt == tick_cnt || start_reg == 1'b1)
+ delay_cnt <= 'd0;
+ else
+ delay_cnt <= delay_cnt + 1'b1;
+ end
+ end
+
+ assign second_tick = ((delay_cnt) == (tick_cnt - 1));
+
+ always@(posedge clk or negedge rst_n)
+ begin
+ if(!rst_n)
+ second_cnt <= 'd0;
+ else
+ begin
+ if(second_tick)
+ second_cnt <= second_cnt + 1'b1;
+ else
+ second_cnt <= second_cnt;
+ end
+ end
+
+ assign start_reg = (second_cnt == SECOND);
+
+ always@(posedge clk)
+ begin
+ pulse_reg <= {pulse_reg[2:0],start_reg};
+ end
+
+generate
+if(PULSE == 1)
+ assign start = ~pulse_reg[3] & start_reg;
+else
+ assign start = start_reg;
+endgenerate
+
+endmodule
+
+// ***********************************************************************
+module ext_mem #(
+ parameter DATA_WIDTH = 8,
+ parameter ADDR_WIDTH = 9,
+ parameter OUTPUT_REG = "TRUE",
+ parameter RAM_INIT_FILE = ""
+) (
+ input [DATA_WIDTH-1:0] wdata,
+ input [ADDR_WIDTH-1:0] waddr,
+ input [ADDR_WIDTH-1:0] raddr,
+ input we,
+ input wclk,
+ input re,
+ input rclk,
+ output [DATA_WIDTH-1:0] rdata
+);
+
+/////////////////////////////////////////////////////////////////////////////
+
+ localparam MEMORY_DEPTH = 2**ADDR_WIDTH;
+ localparam MAX_DATA = (1<> 5) + enckey3;
+assign cal0 = cal0_top ^ cal0_mid ^ cal0_bot;
+assign cal1_top = (raw_r1 << 4) + enckey0;
+assign cal1_mid = raw_r1 + delta_r1;
+assign cal1_bot = (raw_r1 >> 5) + enckey1;
+assign cal1 = cal1_top ^ cal1_mid ^ cal1_bot;
+
+endmodule
+/////////////////////////////////////////////////////////////////////////////
+module fd_to_hd_wrapper (
+input clk,
+input reset,
+output wire io_ddrA_arw_valid,
+input io_ddrA_arw_ready,
+output wire [31:0] io_ddrA_arw_payload_addr,
+output wire [7:0] io_ddrA_arw_payload_id,
+output wire [7:0] io_ddrA_arw_payload_len,
+output wire [2:0] io_ddrA_arw_payload_size,
+output wire [1:0] io_ddrA_arw_payload_burst,
+output wire [1:0] io_ddrA_arw_payload_lock,
+output wire io_ddrA_arw_payload_write,
+
+input io_ddrA_aw_valid,
+output wire io_ddrA_aw_ready,
+input [31:0] io_ddrA_aw_payload_addr,
+input [7:0] io_ddrA_aw_payload_id,
+input [7:0] io_ddrA_aw_payload_len,
+input [2:0] io_ddrA_aw_payload_size,
+input [1:0] io_ddrA_aw_payload_burst,
+input [1:0] io_ddrA_aw_payload_lock,
+
+input io_ddrA_ar_valid,
+output wire io_ddrA_ar_ready,
+input [31:0] io_ddrA_ar_payload_addr,
+input [7:0] io_ddrA_ar_payload_id,
+input [7:0] io_ddrA_ar_payload_len,
+input [2:0] io_ddrA_ar_payload_size,
+input [1:0] io_ddrA_ar_payload_burst,
+input [1:0] io_ddrA_ar_payload_lock
+);
+/////////////////////////////////////////////////////////////////////////////
+localparam [1:0] IDLE = 2'h0,
+ WRITE = 2'h1,
+ READ = 2'h2;
+
+reg [1:0] st_cur,
+ st_next;
+
+wire op_write,
+ op_read;
+/////////////////////////////////////////////////////////////////////////////
+ always@(posedge clk or posedge reset)
+ begin
+ if(reset)
+ st_cur <= IDLE;
+ else
+ st_cur <= st_next;
+ end
+
+ always@*
+ begin
+ st_next = st_cur;
+ case(st_cur)
+ IDLE:
+ begin
+ if(io_ddrA_aw_valid)
+ st_next = WRITE;
+ else if (io_ddrA_ar_valid)
+ st_next = READ;
+ else
+ st_next = IDLE;
+ end
+ WRITE:
+ begin
+ if(io_ddrA_aw_ready)
+ st_next = IDLE;
+ else
+ st_next = WRITE;
+ end
+ READ:
+ begin
+ if(io_ddrA_ar_ready)
+ st_next = IDLE;
+ else
+ st_next = READ;
+ end
+ default: st_next = IDLE;
+ endcase
+ end
+
+assign op_write = (st_cur == WRITE);
+assign op_read = (st_cur == READ);
+
+assign io_ddrA_arw_valid = op_write ? io_ddrA_aw_valid : op_read ? io_ddrA_ar_valid : 1'b0;
+assign io_ddrA_arw_payload_addr = op_write ? io_ddrA_aw_payload_addr : io_ddrA_ar_payload_addr;
+assign io_ddrA_arw_payload_id = op_write ? io_ddrA_aw_payload_id : io_ddrA_ar_payload_id;
+assign io_ddrA_arw_payload_len = op_write ? io_ddrA_aw_payload_len : io_ddrA_ar_payload_len;
+assign io_ddrA_arw_payload_size = op_write ? io_ddrA_aw_payload_size : io_ddrA_ar_payload_size;
+assign io_ddrA_arw_payload_burst = op_write ? io_ddrA_aw_payload_burst : io_ddrA_ar_payload_burst;
+assign io_ddrA_arw_payload_lock = op_write ? io_ddrA_aw_payload_lock : io_ddrA_ar_payload_lock;
+assign io_ddrA_arw_payload_write = op_write;
+
+assign io_ddrA_aw_ready = op_write ? io_ddrA_arw_ready : 1'b0;
+assign io_ddrA_ar_ready = op_read ? io_ddrA_arw_ready : 1'b0;
+
+endmodule
diff --git a/Ti375C529_devkit/source/top_soc.v b/Ti375C529_devkit/source/top_soc.v
new file mode 100644
index 0000000..37a7731
--- /dev/null
+++ b/Ti375C529_devkit/source/top_soc.v
@@ -0,0 +1,888 @@
+`define ETH_1000MBPS 1
+
+module top_soc (
+output jtagCtrl_tdi,
+input jtagCtrl_tdo,
+output jtagCtrl_enable,
+output jtagCtrl_capture,
+output jtagCtrl_shift,
+output jtagCtrl_update,
+output jtagCtrl_reset,
+input ut_jtagCtrl_tdi,
+output ut_jtagCtrl_tdo,
+input ut_jtagCtrl_enable,
+input ut_jtagCtrl_capture,
+input ut_jtagCtrl_shift,
+input ut_jtagCtrl_update,
+input ut_jtagCtrl_reset,
+input io_cfuClk,
+input io_cfuReset,
+input cpu0_customInstruction_cmd_valid,
+output cpu0_customInstruction_cmd_ready,
+input [9:0] cpu0_customInstruction_function_id,
+input [31:0] cpu0_customInstruction_inputs_0,
+input [31:0] cpu0_customInstruction_inputs_1,
+output cpu0_customInstruction_rsp_valid,
+input cpu0_customInstruction_rsp_ready,
+output [31:0] cpu0_customInstruction_outputs_0,
+input cpu1_customInstruction_cmd_valid,
+output cpu1_customInstruction_cmd_ready,
+input [9:0] cpu1_customInstruction_function_id,
+input [31:0] cpu1_customInstruction_inputs_0,
+input [31:0] cpu1_customInstruction_inputs_1,
+output cpu1_customInstruction_rsp_valid,
+input cpu1_customInstruction_rsp_ready,
+output [31:0] cpu1_customInstruction_outputs_0,
+input cpu2_customInstruction_cmd_valid,
+output cpu2_customInstruction_cmd_ready,
+input [9:0] cpu2_customInstruction_function_id,
+input [31:0] cpu2_customInstruction_inputs_0,
+input [31:0] cpu2_customInstruction_inputs_1,
+output cpu2_customInstruction_rsp_valid,
+input cpu2_customInstruction_rsp_ready,
+output [31:0] cpu2_customInstruction_outputs_0,
+input cpu3_customInstruction_cmd_valid,
+output cpu3_customInstruction_cmd_ready,
+input [9:0] cpu3_customInstruction_function_id,
+input [31:0] cpu3_customInstruction_inputs_0,
+input [31:0] cpu3_customInstruction_inputs_1,
+output cpu3_customInstruction_rsp_valid,
+input cpu3_customInstruction_rsp_ready,
+output [31:0] cpu3_customInstruction_outputs_0,
+output io_ddrMasters_0_aw_valid,
+input io_ddrMasters_0_aw_ready,
+output [31:0] io_ddrMasters_0_aw_payload_addr,
+output [3:0] io_ddrMasters_0_aw_payload_id,
+output [3:0] io_ddrMasters_0_aw_payload_region,
+output [7:0] io_ddrMasters_0_aw_payload_len,
+output [2:0] io_ddrMasters_0_aw_payload_size,
+output [1:0] io_ddrMasters_0_aw_payload_burst,
+output io_ddrMasters_0_aw_payload_lock,
+output [3:0] io_ddrMasters_0_aw_payload_cache,
+output [3:0] io_ddrMasters_0_aw_payload_qos,
+output [2:0] io_ddrMasters_0_aw_payload_prot,
+output io_ddrMasters_0_aw_payload_allStrb,
+output io_ddrMasters_0_w_valid,
+input io_ddrMasters_0_w_ready,
+output [127:0] io_ddrMasters_0_w_payload_data,
+output [15:0] io_ddrMasters_0_w_payload_strb,
+output io_ddrMasters_0_w_payload_last,
+input io_ddrMasters_0_b_valid,
+output io_ddrMasters_0_b_ready,
+input [3:0] io_ddrMasters_0_b_payload_id,
+input [1:0] io_ddrMasters_0_b_payload_resp,
+output io_ddrMasters_0_ar_valid,
+input io_ddrMasters_0_ar_ready,
+output [31:0] io_ddrMasters_0_ar_payload_addr,
+output [3:0] io_ddrMasters_0_ar_payload_id,
+output [3:0] io_ddrMasters_0_ar_payload_region,
+output [7:0] io_ddrMasters_0_ar_payload_len,
+output [2:0] io_ddrMasters_0_ar_payload_size,
+output [1:0] io_ddrMasters_0_ar_payload_burst,
+output io_ddrMasters_0_ar_payload_lock,
+output [3:0] io_ddrMasters_0_ar_payload_cache,
+output [3:0] io_ddrMasters_0_ar_payload_qos,
+output [2:0] io_ddrMasters_0_ar_payload_prot,
+input io_ddrMasters_0_r_valid,
+output io_ddrMasters_0_r_ready,
+input [127:0] io_ddrMasters_0_r_payload_data,
+input [3:0] io_ddrMasters_0_r_payload_id,
+input [1:0] io_ddrMasters_0_r_payload_resp,
+input io_ddrMasters_0_r_payload_last,
+input io_ddrMasters_0_clk,
+input io_ddrMasters_0_reset,
+output io_ddrMasters_memCheck_pass,
+output userInterruptA,
+output userInterruptB,
+output userInterruptC,
+output userInterruptD,
+output userInterruptE,
+output userInterruptF,
+output userInterruptH,
+output userInterruptG,
+output userInterruptI,
+input [3:0] system_gpio_0_io_read,
+output [3:0] system_gpio_0_io_write,
+output [3:0] system_gpio_0_io_writeEnable,
+output system_uart_0_io_txd,
+input system_uart_0_io_rxd,
+output system_spi_0_io_sclk_write,
+output system_spi_0_io_data_0_writeEnable,
+input system_spi_0_io_data_0_read,
+output system_spi_0_io_data_0_write,
+output system_spi_0_io_data_1_writeEnable,
+input system_spi_0_io_data_1_read,
+output system_spi_0_io_data_1_write,
+output system_spi_0_io_data_2_writeEnable,
+input system_spi_0_io_data_2_read,
+output system_spi_0_io_data_2_write,
+output system_spi_0_io_data_3_writeEnable,
+input system_spi_0_io_data_3_read,
+output system_spi_0_io_data_3_write,
+output [3:0] system_spi_0_io_ss,
+output system_i2c_0_io_sda_writeEnable,
+output system_i2c_0_io_sda_write,
+input system_i2c_0_io_sda_read,
+output system_i2c_0_io_scl_writeEnable,
+output system_i2c_0_io_scl_write,
+input system_i2c_0_io_scl_read,
+input [31:0] axiA_awaddr,
+input [7:0] axiA_awlen,
+input [2:0] axiA_awsize,
+input [1:0] axiA_awburst,
+input axiA_awlock,
+input [3:0] axiA_awcache,
+input [2:0] axiA_awprot,
+input [3:0] axiA_awqos,
+input [3:0] axiA_awregion,
+input axiA_awvalid,
+output axiA_awready,
+input [31:0] axiA_wdata,
+input [3:0] axiA_wstrb,
+input axiA_wvalid,
+input axiA_wlast,
+output axiA_wready,
+output [1:0] axiA_bresp,
+output axiA_bvalid,
+input axiA_bready,
+input [31:0] axiA_araddr,
+input [7:0] axiA_arlen,
+input [2:0] axiA_arsize,
+input [1:0] axiA_arburst,
+input axiA_arlock,
+input [3:0] axiA_arcache,
+input [2:0] axiA_arprot,
+input [3:0] axiA_arqos,
+input [3:0] axiA_arregion,
+input axiA_arvalid,
+output axiA_arready,
+output [31:0] axiA_rdata,
+output [1:0] axiA_rresp,
+output axiA_rlast,
+output axiA_rvalid,
+input axiA_rready,
+output axiAInterrupt,
+input cfg_done,
+output cfg_start,
+output cfg_sel,
+output cfg_reset,
+input io_peripheralClk,
+input io_peripheralReset,
+output io_asyncReset,
+input io_gpio_sw_n,
+input pll_peripheral_locked,
+input pll_system_locked,
+input pll_tse_locked,
+// SDHC
+input sd_base_clk,
+output sd_clk_hi,
+output sd_clk_lo,
+input sd_cmd_i,
+output sd_cmd_o,
+output sd_cmd_oe,
+input [3:0] sd_dat_i,
+output [3:0] sd_dat_o,
+output [3:0] sd_dat_oe,
+input sd_cd_n,
+input sd_wp,
+// TSEMAC
+input io_tseClk,
+// MAC
+output [3:0] rgmii_txd_HI,
+output [3:0] rgmii_txd_LO,
+output rgmii_tx_ctl_HI,
+output rgmii_tx_ctl_LO,
+output rgmii_txc_HI,
+output rgmii_txc_LO,
+input [3:0] rgmii_rxd_HI,
+input [3:0] rgmii_rxd_LO,
+input rgmii_rx_ctl_HI,
+input rgmii_rx_ctl_LO,
+input mux_clk,
+output [1:0] mux_clk_sw,
+// PHY
+output phy_rst,
+input phy_mdi,
+output phy_mdo,
+output phy_mdo_en,
+output phy_mdc,
+input rgmii_rxc,
+input rgmii_rxc_slow
+
+);
+////////////////////////////////////////////////////////////////////////////
+localparam PERI_FREQ = 200;
+localparam AXIS_DEV = 3;
+localparam AXIM_DEV = 2;
+localparam SLB = 0;
+// SDHC
+localparam SDHC = 1;
+localparam MSDHC = 0;
+// TSEMAC
+localparam TSE = 2;
+localparam MTSE = 1;
+////////////////////////////////////////////////////////////////////////////
+// Switch between sdhc and slb
+wire [(AXIS_DEV*32)-1:0] gAXIS_m_awaddr;
+wire [(AXIS_DEV*8)-1:0] gAXIS_m_awlen;
+wire [(AXIS_DEV*3)-1:0] gAXIS_m_awsize;
+wire [(AXIS_DEV*2)-1:0] gAXIS_m_awburst;
+wire [(AXIS_DEV*2)-1:0] gAXIS_m_awlock;
+wire [(AXIS_DEV*4)-1:0] gAXIS_m_awcache;
+wire [(AXIS_DEV*4)-1:0] gAXIS_m_awprot;
+wire [(AXIS_DEV*4)-1:0] gAXIS_m_awqos;
+wire [(AXIS_DEV*4)-1:0] gAXIS_m_awregion;
+wire [AXIS_DEV-1:0] gAXIS_m_awvalid;
+wire [AXIS_DEV-1:0] gAXIS_m_awready;
+wire [(AXIS_DEV*32)-1:0] gAXIS_m_wdata;
+wire [(AXIS_DEV*4)-1:0] gAXIS_m_wstrb;
+wire [AXIS_DEV-1:0] gAXIS_m_wvalid;
+wire [AXIS_DEV-1:0] gAXIS_m_wlast;
+wire [AXIS_DEV-1:0] gAXIS_m_wready;
+wire [(AXIS_DEV*2)-1:0] gAXIS_m_bresp;
+wire [AXIS_DEV-1:0] gAXIS_m_bvalid;
+wire [AXIS_DEV-1:0] gAXIS_m_bready;
+wire [(AXIS_DEV*32)-1:0] gAXIS_m_araddr;
+wire [(AXIS_DEV*8)-1:0] gAXIS_m_arlen;
+wire [(AXIS_DEV*3)-1:0] gAXIS_m_arsize;
+wire [(AXIS_DEV*2)-1:0] gAXIS_m_arburst;
+wire [(AXIS_DEV*2)-1:0] gAXIS_m_arlock;
+wire [(AXIS_DEV*4)-1:0] gAXIS_m_arcache;
+wire [(AXIS_DEV*4)-1:0] gAXIS_m_arprot;
+wire [(AXIS_DEV*4)-1:0] gAXIS_m_arqos;
+wire [(AXIS_DEV*4)-1:0] gAXIS_m_arregion;
+wire [AXIS_DEV-1:0] gAXIS_m_arvalid;
+wire [AXIS_DEV-1:0] gAXIS_m_arready;
+wire [(AXIS_DEV*32)-1:0] gAXIS_m_rdata;
+wire [(AXIS_DEV*2)-1:0] gAXIS_m_rresp;
+wire [AXIS_DEV-1:0] gAXIS_m_rlast;
+wire [AXIS_DEV-1:0] gAXIS_m_rvalid;
+wire [AXIS_DEV-1:0] gAXIS_m_rready;
+// Switch between sdhc and tsemac
+wire [(AXIM_DEV*32)-1:0] gAXIM_s_awaddr;
+wire [(AXIM_DEV*8)-1:0] gAXIM_s_awlen;
+wire [(AXIM_DEV*3)-1:0] gAXIM_s_awsize;
+wire [(AXIM_DEV*2)-1:0] gAXIM_s_awburst;
+wire [(AXIM_DEV*2)-1:0] gAXIM_s_awlock;
+wire [(AXIM_DEV*4)-1:0] gAXIM_s_awcache;
+wire [(AXIM_DEV*4)-1:0] gAXIM_s_awprot;
+wire [(AXIM_DEV*4)-1:0] gAXIM_s_awqos;
+wire [(AXIM_DEV*4)-1:0] gAXIM_s_awregion;
+wire [AXIM_DEV-1:0] gAXIM_s_awvalid;
+wire [AXIM_DEV-1:0] gAXIM_s_awready;
+wire [(AXIM_DEV*128)-1:0] gAXIM_s_wdata;
+wire [(AXIM_DEV*16)-1:0] gAXIM_s_wstrb;
+wire [AXIM_DEV-1:0] gAXIM_s_wvalid;
+wire [AXIM_DEV-1:0] gAXIM_s_wlast;
+wire [AXIM_DEV-1:0] gAXIM_s_wready;
+wire [(AXIM_DEV*2)-1:0] gAXIM_s_bresp;
+wire [AXIM_DEV-1:0] gAXIM_s_bvalid;
+wire [AXIM_DEV-1:0] gAXIM_s_bready;
+wire [(AXIM_DEV*32)-1:0] gAXIM_s_araddr;
+wire [(AXIM_DEV*8)-1:0] gAXIM_s_arlen;
+wire [(AXIM_DEV*3)-1:0] gAXIM_s_arsize;
+wire [(AXIM_DEV*2)-1:0] gAXIM_s_arburst;
+wire [(AXIM_DEV*2)-1:0] gAXIM_s_arlock;
+wire [(AXIM_DEV*4)-1:0] gAXIM_s_arcache;
+wire [(AXIM_DEV*4)-1:0] gAXIM_s_arprot;
+wire [(AXIM_DEV*4)-1:0] gAXIM_s_arqos;
+wire [(AXIM_DEV*4)-1:0] gAXIM_s_arregion;
+wire [AXIM_DEV-1:0] gAXIM_s_arvalid;
+wire [AXIM_DEV-1:0] gAXIM_s_arready;
+wire [(AXIM_DEV*128)-1:0] gAXIM_s_rdata;
+wire [(AXIM_DEV*2)-1:0] gAXIM_s_rresp;
+wire [AXIM_DEV-1:0] gAXIM_s_rlast;
+wire [AXIM_DEV-1:0] gAXIM_s_rvalid;
+wire [AXIM_DEV-1:0] gAXIM_s_rready;
+// SDHC
+wire sd_rst;
+wire sd_int;
+wire sd_dat_oe_i;
+// DMA
+wire dma_tx_rst;
+wire dma_rx_rst;
+wire dma_tx_descriptorUpdate;
+wire [1:0] dma_interrupts;
+wire [31:0] dma_apb3_paddr;
+wire dma_apb3_psel;
+wire dma_apb3_penable;
+wire dma_apb3_pready;
+wire dma_apb3_pwrite;
+wire [31:0] dma_apb3_pwdata;
+wire [31:0] dma_apb3_prdata;
+wire dma_apb3_pslverror;
+// TSE
+wire tse_pll_ok;
+wire phy_sw_rst;
+wire mac_ext_rst;
+wire [2:0] eth_speed;
+wire s_eth_tx_tvalid;
+wire s_eth_tx_tready;
+wire [7:0] s_eth_tx_tdata;
+wire [0:0] s_eth_tx_tkeep;
+wire [3:0] s_eth_tx_tdest;
+wire s_eth_tx_tlast;
+wire m_eth_rx_tvalid;
+wire m_eth_rx_tready;
+wire [7:0] m_eth_rx_tdata;
+wire [0:0] m_eth_rx_tkeep;
+wire [3:0] m_eth_rx_tdest;
+wire m_eth_rx_tlast;
+//reset
+wire io_asyncReset_soc;
+wire watchdog_reset;
+
+gAXIS_1to3_switch u_AXIS_1to3_switch
+(
+ .rst_n ( ~io_peripheralReset ),
+ .clk ( io_peripheralClk ),
+ .m_axi_awvalid ( gAXIS_m_awvalid ),
+ .m_axi_awready ( gAXIS_m_awready ),
+ .m_axi_awid ( ),
+ .m_axi_awaddr ( gAXIS_m_awaddr ),
+ .m_axi_awburst ( gAXIS_m_awburst ),
+ .m_axi_awlen ( gAXIS_m_awlen ),
+ .m_axi_awsize ( gAXIS_m_awsize ),
+ .m_axi_awcache ( gAXIS_m_awcache ),
+ .m_axi_awqos ( gAXIS_m_awqos ),
+ .m_axi_awprot ( gAXIS_m_awprot ),
+ .m_axi_awuser ( ),
+ .m_axi_awlock ( gAXIS_m_awlock ),
+ .m_axi_awregion ( gAXIS_m_awregion ),
+ .m_axi_wvalid ( gAXIS_m_wvalid ),
+ .m_axi_wready ( gAXIS_m_wready ),
+ .m_axi_wdata ( gAXIS_m_wdata ),
+ .m_axi_wstrb ( gAXIS_m_wstrb ),
+ .m_axi_wlast ( gAXIS_m_wlast ),
+ .m_axi_wuser ( ),
+ .m_axi_bready ( gAXIS_m_bready ),
+ .m_axi_bvalid ( gAXIS_m_bvalid ),
+ .m_axi_bresp ( gAXIS_m_bresp ),
+ .m_axi_buser ( {AXIS_DEV{3'h0}} ),
+ .m_axi_bid ( {AXIS_DEV{8'h0}} ),
+ .m_axi_arvalid ( gAXIS_m_arvalid ),
+ .m_axi_arready ( gAXIS_m_arready ),
+ .m_axi_arid ( ),
+ .m_axi_araddr ( gAXIS_m_araddr ),
+ .m_axi_arburst ( gAXIS_m_arburst ),
+ .m_axi_arlen ( gAXIS_m_arlen ),
+ .m_axi_arsize ( gAXIS_m_arsize ),
+ .m_axi_arlock ( gAXIS_m_arlock ),
+ .m_axi_arprot ( gAXIS_m_arprot ),
+ .m_axi_arcache ( gAXIS_m_arcache ),
+ .m_axi_arqos ( gAXIS_m_arqos ),
+ .m_axi_aruser ( ),
+ .m_axi_arregion ( gAXIS_m_arregion ),
+ .m_axi_ruser ( {AXIS_DEV{3'h0}}),
+ .m_axi_rvalid ( gAXIS_m_rvalid ),
+ .m_axi_rready ( gAXIS_m_rready ),
+ .m_axi_rid ( {AXIS_DEV{8'h0}}),
+ .m_axi_rdata ( gAXIS_m_rdata ),
+ .m_axi_rresp ( gAXIS_m_rresp ),
+ .m_axi_rlast ( gAXIS_m_rlast ),
+ .s_axi_awvalid ( axiA_awvalid ),
+ .s_axi_awready ( axiA_awready ),
+ .s_axi_awaddr ( {7'h00, axiA_awaddr[24:0]} ),
+ .s_axi_awid ( 8'h00 ),
+ .s_axi_awburst ( axiA_awburst ),
+ .s_axi_awlen ( axiA_awlen ),
+ .s_axi_awsize ( axiA_awsize ),
+ .s_axi_awprot ( {1'b0, axiA_awprot} ),
+ .s_axi_awlock ( {1'b0, axiA_awlock} ),
+ .s_axi_awcache ( axiA_awcache ),
+ .s_axi_awqos ( axiA_awqos ),
+ .s_axi_awuser ( 3'h0 ),
+ .s_axi_wvalid ( axiA_wvalid ),
+ .s_axi_wready ( axiA_wready ),
+ .s_axi_wid ( 8'h00 ),
+ .s_axi_wdata ( axiA_wdata ),
+ .s_axi_wlast ( axiA_wlast ),
+ .s_axi_wstrb ( axiA_wstrb ),
+ .s_axi_wuser ( 3'h0 ),
+ .s_axi_bvalid ( axiA_bvalid ),
+ .s_axi_bready ( axiA_bready ),
+ .s_axi_bresp ( axiA_bresp ),
+ .s_axi_bid ( ),
+ .s_axi_buser ( ),
+ .s_axi_arvalid ( axiA_arvalid ),
+ .s_axi_arready ( axiA_arready ),
+ .s_axi_araddr ( {7'h00, axiA_araddr[24:0]} ),
+ .s_axi_arid ( 8'h00 ),
+ .s_axi_arburst ( axiA_arburst ),
+ .s_axi_arlen ( axiA_arlen ),
+ .s_axi_arsize ( axiA_arsize ),
+ .s_axi_arprot ( { 1'b0, axiA_arprot} ),
+ .s_axi_arlock ( { 1'b0, axiA_arlock} ),
+ .s_axi_arcache ( axiA_arcache ),
+ .s_axi_arqos ( axiA_arqos ),
+ .s_axi_aruser ( 3'h0 ),
+ .s_axi_rready ( axiA_rready ),
+ .s_axi_rvalid ( axiA_rvalid ),
+ .s_axi_rdata ( axiA_rdata ),
+ .s_axi_rresp ( axiA_rresp ),
+ .s_axi_rlast ( axiA_rlast ),
+ .s_axi_rid ( ),
+ .s_axi_ruser ( )
+);
+
+gAXIM_2to1_switch u_AXIM_2to1_switch
+(
+ .rst_n ( ~io_ddrMasters_0_reset ),
+ .clk ( io_ddrMasters_0_clk ),
+ .m_axi_awvalid ( io_ddrMasters_0_aw_valid ),
+ .m_axi_awready ( io_ddrMasters_0_aw_ready ),
+ .m_axi_awid ( io_ddrMasters_0_aw_payload_id ),
+ .m_axi_awaddr ( io_ddrMasters_0_aw_payload_addr ),
+ .m_axi_awburst ( io_ddrMasters_0_aw_payload_burst ),
+ .m_axi_awlen ( io_ddrMasters_0_aw_payload_len ),
+ .m_axi_awsize ( io_ddrMasters_0_aw_payload_size ),
+ .m_axi_awcache ( io_ddrMasters_0_aw_payload_cache ),
+ .m_axi_awqos ( io_ddrMasters_0_aw_payload_qos ),
+ .m_axi_awprot ( io_ddrMasters_0_aw_payload_prot ),
+ .m_axi_awuser ( ),
+ .m_axi_awlock ( io_ddrMasters_0_aw_payload_lock ),
+ .m_axi_awregion ( io_ddrMasters_0_aw_payload_region ),
+ .m_axi_wvalid ( io_ddrMasters_0_w_valid ),
+ .m_axi_wready ( io_ddrMasters_0_w_ready ),
+ .m_axi_wdata ( io_ddrMasters_0_w_payload_data ),
+ .m_axi_wstrb ( io_ddrMasters_0_w_payload_strb ),
+ .m_axi_wlast ( io_ddrMasters_0_w_payload_last ),
+ .m_axi_wuser ( ),
+ .m_axi_bready ( io_ddrMasters_0_b_ready ),
+ .m_axi_bvalid ( io_ddrMasters_0_b_valid ),
+ .m_axi_bresp ( io_ddrMasters_0_b_payload_resp ),
+ .m_axi_buser ( 3'h0 ),
+ .m_axi_bid ( {4'h0, io_ddrMasters_0_b_payload_id} ),
+ .m_axi_arvalid ( io_ddrMasters_0_ar_valid ),
+ .m_axi_arready ( io_ddrMasters_0_ar_ready ),
+ .m_axi_arid ( io_ddrMasters_0_ar_payload_id ),
+ .m_axi_araddr ( io_ddrMasters_0_ar_payload_addr ),
+ .m_axi_arburst ( io_ddrMasters_0_ar_payload_burst ),
+ .m_axi_arlen ( io_ddrMasters_0_ar_payload_len ),
+ .m_axi_arsize ( io_ddrMasters_0_ar_payload_size ),
+ .m_axi_arlock ( io_ddrMasters_0_ar_payload_lock ),
+ .m_axi_arprot ( io_ddrMasters_0_ar_payload_prot ),
+ .m_axi_arcache ( io_ddrMasters_0_ar_payload_cache ),
+ .m_axi_arqos ( io_ddrMasters_0_ar_payload_qos ),
+ .m_axi_aruser ( ),
+ .m_axi_arregion ( io_ddrMasters_0_ar_payload_region ),
+ .m_axi_ruser ( 3'h0),
+ .m_axi_rvalid ( io_ddrMasters_0_r_valid ),
+ .m_axi_rready ( io_ddrMasters_0_r_ready ),
+ .m_axi_rid ( 8'h0 ),
+ .m_axi_rdata ( io_ddrMasters_0_r_payload_data ),
+ .m_axi_rresp ( io_ddrMasters_0_r_payload_resp ),
+ .m_axi_rlast ( io_ddrMasters_0_r_payload_last ),
+ .s_axi_awvalid ( gAXIM_s_awvalid ),
+ .s_axi_awready ( gAXIM_s_awready ),
+ .s_axi_awaddr ( gAXIM_s_awaddr ),
+ .s_axi_awid ( {AXIM_DEV{8'h00}} ),
+ .s_axi_awburst ( gAXIM_s_awburst ),
+ .s_axi_awlen ( gAXIM_s_awlen ),
+ .s_axi_awsize ( gAXIM_s_awsize ),
+ .s_axi_awprot ( gAXIM_s_awprot ),
+ .s_axi_awlock ( gAXIM_s_awlock ),
+ .s_axi_awcache ( gAXIM_s_awcache ),
+ .s_axi_awqos ( gAXIM_s_awqos ),
+ .s_axi_awuser ( {AXIM_DEV{3'h0}} ),
+ .s_axi_wvalid ( gAXIM_s_wvalid ),
+ .s_axi_wready ( gAXIM_s_wready ),
+ .s_axi_wid ( {AXIM_DEV{8'h00}} ),
+ .s_axi_wdata ( gAXIM_s_wdata ),
+ .s_axi_wlast ( gAXIM_s_wlast ),
+ .s_axi_wstrb ( gAXIM_s_wstrb ),
+ .s_axi_wuser ( {AXIM_DEV{3'h0}} ),
+ .s_axi_bvalid ( gAXIM_s_bvalid ),
+ .s_axi_bready ( gAXIM_s_bready ),
+ .s_axi_bresp ( gAXIM_s_bresp ),
+ .s_axi_bid ( ),
+ .s_axi_buser ( ),
+ .s_axi_arvalid ( gAXIM_s_arvalid ),
+ .s_axi_arready ( gAXIM_s_arready ),
+ .s_axi_araddr ( gAXIM_s_araddr ),
+ .s_axi_arid ( {AXIM_DEV{8'h00}} ),
+ .s_axi_arburst ( gAXIM_s_arburst ),
+ .s_axi_arlen ( gAXIM_s_arlen ),
+ .s_axi_arsize ( gAXIM_s_arsize ),
+ .s_axi_arprot ( gAXIM_s_axiA_arprot ),
+ .s_axi_arlock ( gAXIM_s_axiA_arlock ),
+ .s_axi_arcache ( gAXIM_s_arcache ),
+ .s_axi_arqos ( gAXIM_s_arqos ),
+ .s_axi_aruser ( {AXIM_DEV{3'h0}} ),
+ .s_axi_rready ( gAXIM_s_rready ),
+ .s_axi_rvalid ( gAXIM_s_rvalid ),
+ .s_axi_rdata ( gAXIM_s_rdata ),
+ .s_axi_rresp ( gAXIM_s_rresp ),
+ .s_axi_rlast ( gAXIM_s_rlast ),
+ .s_axi_rid ( ),
+ .s_axi_ruser ( )
+);
+
+assign sd_rst = io_peripheralReset;
+assign gAXIS_m_rlast[SDHC*1 +: 1] = 1'b1;
+assign sd_dat_oe = {4{sd_dat_oe_i}};
+assign userInterruptI = sd_int;
+
+gSDHC u_gSDHC
+(
+ .sd_rst ( sd_rst ),
+ .sd_base_clk ( sd_base_clk ),
+ .sd_int ( sd_int ),
+ .sd_cd_n ( sd_cd_n ),
+ .sd_wp ( sd_wp ),
+ .s_axi_aclk ( io_peripheralClk ),
+ .s_axi_awaddr ( gAXIS_m_awaddr[SDHC*32 +: 32] ),
+ .s_axi_awready ( gAXIS_m_awready[SDHC*1 +: 1] ),
+ .s_axi_awvalid ( gAXIS_m_awvalid[SDHC*1 +: 1] ),
+ .s_axi_wstrb ( gAXIS_m_wstrb[SDHC*4 +: 4]),
+ .s_axi_wdata ( gAXIS_m_wdata[SDHC*32 +: 32] ),
+ .s_axi_wready ( gAXIS_m_wready[SDHC*1 +: 1] ),
+ .s_axi_wvalid ( gAXIS_m_wvalid[SDHC*1 +: 1] ),
+ .s_axi_bresp ( gAXIS_m_bresp[SDHC*2 +: 2] ),
+ .s_axi_bvalid ( gAXIS_m_bvalid[SDHC*1 +: 1] ),
+ .s_axi_araddr ( gAXIS_m_araddr[SDHC*32 +: 32] ),
+ .s_axi_bready ( gAXIS_m_bready[SDHC*1 +: 1] ),
+ .s_axi_arready ( gAXIS_m_arready[SDHC*1 +: 1] ),
+ .s_axi_arvalid ( gAXIS_m_arvalid[SDHC*1 +: 1] ),
+ .s_axi_rresp ( gAXIS_m_rresp[SDHC*2 +: 2] ),
+ .s_axi_rdata ( gAXIS_m_rdata[SDHC*32 +: 32]),
+ .s_axi_rvalid ( gAXIS_m_rvalid[SDHC*1 +: 1] ),
+ .s_axi_rready ( gAXIS_m_rready[SDHC*1 +: 1] ),
+ .m_axi_clk ( io_ddrMasters_0_clk ),
+ .m_axi_awaddr ( gAXIM_s_awaddr[MSDHC*32 +: 32] ),
+ .m_axi_awvalid ( gAXIM_s_awvalid[MSDHC*1 +: 1] ),
+ .m_axi_awlen ( gAXIM_s_awlen[MSDHC*8 +: 8] ),
+ .m_axi_awready ( gAXIM_s_awready[MSDHC*1 +: 1] ),
+ .m_axi_awburst ( gAXIM_s_awburst[MSDHC*2 +: 2] ),
+ .m_axi_awsize ( gAXIM_s_awsize[MSDHC*3 +: 3] ),
+ .m_axi_awcache ( gAXIM_s_awcache[MSDHC*4 +: 4] ),
+ .m_axi_awlock ( gAXIM_s_awlock[MSDHC*2 +: 2] ),
+ .m_axi_awprot ( gAXIM_s_awprot[MSDHC*4 +: 4] ),
+ .m_axi_wdata ( gAXIM_s_wdata[MSDHC*128 +: 128] ),
+ .m_axi_wstrb ( gAXIM_s_wstrb[MSDHC*16 +: 16] ),
+ .m_axi_wlast ( gAXIM_s_wlast[MSDHC*1 +: 1] ),
+ .m_axi_wvalid ( gAXIM_s_wvalid[MSDHC*1 +: 1] ),
+ .m_axi_wready ( gAXIM_s_wready[MSDHC*1 +:1] ),
+ .m_axi_bresp ( gAXIM_s_bresp[MSDHC*2 +: 2] ),
+ .m_axi_bvalid ( gAXIM_s_bvalid[MSDHC*1 +: 1] ),
+ .m_axi_bready ( gAXIM_s_bready[MSDHC*1 +: 1] ),
+ .m_axi_arvalid ( gAXIM_s_arvalid[MSDHC*1 +: 1] ),
+ .m_axi_araddr ( gAXIM_s_araddr[MSDHC*32 +: 32] ),
+ .m_axi_arlen ( gAXIM_s_arlen[MSDHC*8 +: 8] ),
+ .m_axi_arsize ( gAXIM_s_arsize[MSDHC*3 +: 3] ),
+ .m_axi_arburst ( gAXIM_s_arburst[MSDHC*2 +: 2] ),
+ .m_axi_arprot ( gAXIM_s_arprot[MSDHC*4 +: 4] ),
+ .m_axi_arlock ( gAXIM_s_arlock[MSDHC*2 +: 2] ),
+ .m_axi_arcache ( gAXIM_s_arcache[MSDHC*4 +: 4] ),
+ .m_axi_arready ( gAXIM_s_arready[MSDHC*1 +: 1] ),
+ .m_axi_rvalid ( gAXIM_s_rvalid[MSDHC*1 +: 1] ),
+ .m_axi_rdata ( gAXIM_s_rdata[MSDHC*128 +: 128] ),
+ .m_axi_rlast ( gAXIM_s_rlast[MSDHC*1 +: 1] ),
+ .m_axi_rresp ( gAXIM_s_rresp[MSDHC*2 +: 2] ),
+ .m_axi_rready ( gAXIM_s_rready[MSDHC*1 +: 1] ),
+ .sd_clk_hi ( sd_clk_hi ),
+ .sd_clk_lo ( sd_clk_lo ),
+ .sd_cmd_i ( sd_cmd_i ),
+ .sd_cmd_o ( sd_cmd_o ),
+ .sd_cmd_oe ( sd_cmd_oe ),
+ .sd_dat_i ( sd_dat_i ),
+ .sd_dat_o ( sd_dat_o ),
+ .sd_dat_oe ( sd_dat_oe_i )
+);
+
+assign m_eth_rx_tdest = 4'h0;
+assign phy_rst = phy_sw_rst;
+assign tse_pll_ok = pll_tse_locked & pll_peripheral_locked;
+
+tseCore u_tseCore (
+ .io_peripheralClk ( io_peripheralClk ),
+ .io_peripheralReset ( io_peripheralReset ),
+ .io_tseClk ( io_tseClk ),
+ .pll_locked ( tse_pll_ok ),
+ .phy_sw_rst ( phy_sw_rst ),
+ .mac_ext_rst ( mac_ext_rst ),
+ .dma_rx_rst ( dma_rx_rst ),
+ .dma_tx_rst ( dma_tx_rst ),
+ .dma_tx_descriptorUpdate ( dma_tx_descriptorUpdate ),
+ .dma_interrupts ( dma_interrupts ),
+ .eth_speed ( eth_speed ),
+ .rgmii_txd_HI ( rgmii_txd_HI ),
+ .rgmii_txd_LO ( rgmii_txd_LO ),
+ .rgmii_tx_ctl_HI ( rgmii_tx_ctl_HI ),
+ .rgmii_tx_ctl_LO ( rgmii_tx_ctl_LO ),
+ .rgmii_txc_HI ( rgmii_txc_HI ),
+ .rgmii_txc_LO ( rgmii_txc_LO ),
+ .rgmii_rxd_HI ( rgmii_rxd_HI ),
+ .rgmii_rxd_LO ( rgmii_rxd_LO ),
+ .rgmii_rx_ctl_HI ( rgmii_rx_ctl_HI ),
+ .rgmii_rx_ctl_LO ( rgmii_rx_ctl_LO ),
+`ifdef ETH_1000MBPS
+ .rgmii_rxc ( rgmii_rxc ),
+`else
+ .rgmii_rxc ( rgmii_rxc_slow ),
+`endif
+ .phy_mdi ( phy_mdi ),
+ .phy_mdo ( phy_mdo ),
+ .phy_mdo_en ( phy_mdo_en ),
+ .phy_mdc ( phy_mdc ),
+ .s_axi_awaddr ( gAXIS_m_awaddr[TSE*32 +: 32] ),
+ .s_axi_awvalid ( gAXIS_m_awvalid[TSE*1 +: 1] ),
+ .s_axi_awready ( gAXIS_m_awready[TSE*1 +: 1] ),
+ .s_axi_wdata ( gAXIS_m_wdata[TSE*32 +: 32] ),
+ .s_axi_wstrb ( gAXIS_m_wstrb[TSE*4 +: 4] ),
+ .s_axi_wlast ( gAXIS_m_wlast[TSE*1 +: 1] ),
+ .s_axi_wvalid ( gAXIS_m_wvalid[TSE*1 +: 1] ),
+ .s_axi_wready ( gAXIS_m_wready[TSE*1 +: 1] ),
+ .s_axi_bresp ( gAXIS_m_bresp[TSE*2 +: 2] ),
+ .s_axi_bvalid ( gAXIS_m_bvalid[TSE*1 +: 1] ),
+ .s_axi_bready ( gAXIS_m_bready[TSE*1 +: 1] ),
+ .s_axi_araddr ( gAXIS_m_araddr[TSE*32 +: 32] ),
+ .s_axi_arvalid ( gAXIS_m_arvalid[TSE*1 +: 1] ),
+ .s_axi_arready ( gAXIS_m_arready[TSE*1 +: 1] ),
+ .s_axi_rresp ( gAXIS_m_rresp[TSE*2 +: 2] ),
+ .s_axi_rdata ( gAXIS_m_rdata[TSE*32 +: 32] ),
+ .s_axi_rlast ( gAXIS_m_rlast[TSE*1 +: 1] ),
+ .s_axi_rvalid ( gAXIS_m_rvalid[TSE*1 +: 1] ),
+ .s_axi_rready ( gAXIS_m_rready[TSE*1 +: 1] ),
+ .s_eth_tx_tvalid ( s_eth_tx_tvalid ),
+ .s_eth_tx_tready ( s_eth_tx_tready ),
+ .s_eth_tx_tdata ( s_eth_tx_tdata ),
+ .s_eth_tx_tkeep ( s_eth_tx_tkeep ),
+ .s_eth_tx_tdest ( s_eth_tx_tdest ),
+ .s_eth_tx_tlast ( s_eth_tx_tlast ),
+ .m_eth_rx_tvalid ( m_eth_rx_tvalid ),
+ .m_eth_rx_tready ( m_eth_rx_tready ),
+ .m_eth_rx_tdata ( m_eth_rx_tdata ),
+ .m_eth_rx_tstrb ( m_eth_rx_tstrb ),
+ .m_eth_rx_tlast ( m_eth_rx_tlast )
+);
+
+assign userInterruptG = dma_interrupts[0];
+assign userInterruptH = dma_interrupts[1];
+
+gDMA u_gDMA (
+ .clk ( io_ddrMasters_0_clk ),
+ .reset ( io_ddrMasters_0_reset ),
+ .ctrl_clk ( io_peripheralClk ),
+ .ctrl_reset ( io_peripheralReset ),
+ .ctrl_PADDR ( dma_apb3_paddr ),
+ .ctrl_PREADY ( dma_apb3_pready ),
+ .ctrl_PENABLE ( dma_apb3_penable ),
+ .ctrl_PSEL ( dma_apb3_psel ),
+ .ctrl_PWRITE ( dma_apb3_pwrite ),
+ .ctrl_PWDATA ( dma_apb3_pwdata ),
+ .ctrl_PRDATA ( dma_apb3_prdata ),
+ .ctrl_PSLVERROR ( dma_apb3_pslverror ),
+ .ctrl_interrupts ( dma_interrupts ),
+ .read_arvalid ( gAXIM_s_arvalid[MTSE*1 +: 1] ),
+ .read_araddr ( gAXIM_s_araddr[MTSE*32 +: 32] ),
+ .read_arready ( gAXIM_s_arready[MTSE*1 +: 1] ),
+ .read_arregion ( gAXIM_s_arregion[MTSE*4 +: 4] ),
+ .read_arlen ( gAXIM_s_arlen[MTSE*8 +: 8] ),
+ .read_arsize ( gAXIM_s_arsize[MTSE*3 +: 3] ),
+ .read_arburst ( gAXIM_s_arburst[MTSE*2 +: 2] ),
+ .read_arlock ( gAXIM_s_arlock[MTSE*2 +: 2] ),
+ .read_arcache ( gAXIM_s_arcache[MTSE*4 +: 4] ),
+ .read_arqos ( gAXIM_s_arqos[MTSE*4 +: 4] ),
+ .read_arprot ( gAXIM_s_arprot[MTSE*4 +: 4] ),
+ .read_rready ( gAXIM_s_rready[MTSE*1 +: 1] ),
+ .read_rvalid ( gAXIM_s_rvalid[MTSE*1 +: 1] ),
+ .read_rdata ( gAXIM_s_rdata[MTSE*128 +: 128] ),
+ .read_rlast ( gAXIM_s_rlast[MTSE*1 +: 1] ),
+ .read_rresp ( gAXIM_s_rresp[MTSE*2 +: 2] ),
+ .write_awvalid ( gAXIM_s_awvalid[MTSE*1 +: 1] ),
+ .write_awready ( gAXIM_s_awready[MTSE*1 +: 1] ),
+ .write_awaddr ( gAXIM_s_awaddr[MTSE*32 +: 32] ),
+ .write_awregion ( gAXIM_s_awregion[MTSE*4 +: 4] ),
+ .write_awlen ( gAXIM_s_awlen[MTSE*8 +: 8] ),
+ .write_awsize ( gAXIM_s_awsize[MTSE*3 +: 3] ),
+ .write_awburst ( gAXIM_s_awburst[MTSE*2 +: 2] ),
+ .write_awlock ( gAXIM_s_awlock[MTSE*2 +: 2] ),
+ .write_awcache ( gAXIM_s_awcache[MTSE*4 +: 4] ),
+ .write_awqos ( gAXIM_s_awqos[MTSE*4 +: 4] ),
+ .write_awprot ( gAXIM_s_awprot[MTSE*4 +: 4] ),
+ .write_wvalid ( gAXIM_s_wvalid[MTSE*1 +: 1] ),
+ .write_wready ( gAXIM_s_wready[MTSE*1 +: 1] ),
+ .write_wdata ( gAXIM_s_wdata[MTSE*128 +: 128] ),
+ .write_wstrb ( gAXIM_s_wstrb[MTSE*16 +: 16] ),
+ .write_wlast ( gAXIM_s_wlast[MTSE*1 +: 1] ),
+ .write_bvalid ( gAXIM_s_bvalid[MTSE*1 +: 1] ),
+ .write_bready ( gAXIM_s_bready[MTSE*1 +: 1] ),
+ .write_bresp ( gAXIM_s_bresp[MTSE*2 +: 2] ),
+ .dat1_o_clk ( io_tseClk ),
+ .dat1_o_reset ( mac_ext_rst | dma_tx_rst),
+ .dat1_o_tvalid ( s_eth_tx_tvalid ),
+ .dat1_o_tready ( s_eth_tx_tready ),
+ .dat1_o_tdata ( s_eth_tx_tdata ),
+ .dat1_o_tkeep ( s_eth_tx_tkeep ),
+ .dat1_o_tdest ( s_eth_tx_tdest ),
+ .dat1_o_tlast ( s_eth_tx_tlast ),
+`ifdef ETH_1000MBPS
+ .dat0_i_clk ( rgmii_rxc ),
+`else
+ .dat0_i_clk ( rgmii_rxc_slow ),
+`endif
+ .dat0_i_reset ( mac_ext_rst | dma_rx_rst ),
+ .dat0_i_tvalid ( m_eth_rx_tvalid ),
+ .dat0_i_tready ( m_eth_rx_tready ),
+ .dat0_i_tdata ( m_eth_rx_tdata ),
+ .dat0_i_tkeep ( 1'b1),
+ .dat0_i_tdest ( m_eth_rx_tdest ),
+ .dat0_i_tlast ( m_eth_rx_tlast ),
+ .io_1_descriptorUpdate ( ),
+ .io_0_descriptorUpdate (dma_tx_descriptorUpdate)
+
+);
+
+////////////////////////////////////////////////////////////////////////////
+
+
+custom_instruction_tea cpu0_custom_instruction_tea_inst(
+.clk(io_cfuClk),
+.reset(io_cfuReset),
+.cmd_valid(cpu0_customInstruction_cmd_valid),
+.cmd_ready(cpu0_customInstruction_cmd_ready),
+.cmd_function_id(cpu0_customInstruction_function_id),
+.cmd_inputs_0(cpu0_customInstruction_inputs_0),
+.cmd_inputs_1(cpu0_customInstruction_inputs_1),
+.rsp_valid(cpu0_customInstruction_rsp_valid),
+.rsp_ready(cpu0_customInstruction_rsp_ready),
+.rsp_outputs_0(cpu0_customInstruction_outputs_0));
+
+custom_instruction_tea cpu1_custom_instruction_tea_inst(
+.clk(io_cfuClk),
+.reset(io_cfuReset),
+.cmd_valid(cpu1_customInstruction_cmd_valid),
+.cmd_ready(cpu1_customInstruction_cmd_ready),
+.cmd_function_id(cpu1_customInstruction_function_id),
+.cmd_inputs_0(cpu1_customInstruction_inputs_0),
+.cmd_inputs_1(cpu1_customInstruction_inputs_1),
+.rsp_valid(cpu1_customInstruction_rsp_valid),
+.rsp_ready(cpu1_customInstruction_rsp_ready),
+.rsp_outputs_0(cpu1_customInstruction_outputs_0));
+
+custom_instruction_tea cpu2_custom_instruction_tea_inst(
+.clk(io_cfuClk),
+.reset(io_cfuReset),
+.cmd_valid(cpu2_customInstruction_cmd_valid),
+.cmd_ready(cpu2_customInstruction_cmd_ready),
+.cmd_function_id(cpu2_customInstruction_function_id),
+.cmd_inputs_0(cpu2_customInstruction_inputs_0),
+.cmd_inputs_1(cpu2_customInstruction_inputs_1),
+.rsp_valid(cpu2_customInstruction_rsp_valid),
+.rsp_ready(cpu2_customInstruction_rsp_ready),
+.rsp_outputs_0(cpu2_customInstruction_outputs_0));
+
+custom_instruction_tea cpu3_custom_instruction_tea_inst(
+.clk(io_cfuClk),
+.reset(io_cfuReset),
+.cmd_valid(cpu3_customInstruction_cmd_valid),
+.cmd_ready(cpu3_customInstruction_cmd_ready),
+.cmd_function_id(cpu3_customInstruction_function_id),
+.cmd_inputs_0(cpu3_customInstruction_inputs_0),
+.cmd_inputs_1(cpu3_customInstruction_inputs_1),
+.rsp_valid(cpu3_customInstruction_rsp_valid),
+.rsp_ready(cpu3_customInstruction_rsp_ready),
+.rsp_outputs_0(cpu3_customInstruction_outputs_0));
+
+assign io_asyncReset = io_asyncReset_soc | watchdog_reset;
+
+//axi4 bridge to various I/O
+EfxSapphireHpSoc_slb u_top_peripherals(
+.io_apbSlave_0_PADDR ( dma_apb3_paddr ),
+.io_apbSlave_0_PENABLE ( dma_apb3_penable ),
+.io_apbSlave_0_PRDATA ( dma_apb3_prdata ),
+.io_apbSlave_0_PREADY ( dma_apb3_pready ),
+.io_apbSlave_0_PSEL ( dma_apb3_psel ),
+.io_apbSlave_0_PSLVERROR ( dma_apb3_pslverror ),
+.io_apbSlave_0_PWDATA ( dma_apb3_pwdata ),
+.io_apbSlave_0_PWRITE ( dma_apb3_pwrite ),
+.system_spi_0_io_sclk_write ( system_spi_0_io_sclk_write ),
+.system_spi_0_io_data_0_writeEnable ( system_spi_0_io_data_0_writeEnable ),
+.system_spi_0_io_data_0_read ( system_spi_0_io_data_0_read ),
+.system_spi_0_io_data_0_write ( system_spi_0_io_data_0_write ),
+.system_spi_0_io_data_1_writeEnable ( system_spi_0_io_data_1_writeEnable ),
+.system_spi_0_io_data_1_read ( system_spi_0_io_data_1_read ),
+.system_spi_0_io_data_1_write ( system_spi_0_io_data_1_write ),
+.system_spi_0_io_data_2_writeEnable ( system_spi_0_io_data_2_writeEnable ),
+.system_spi_0_io_data_2_read ( system_spi_0_io_data_2_read ),
+.system_spi_0_io_data_2_write ( system_spi_0_io_data_2_write ),
+.system_spi_0_io_data_3_writeEnable ( system_spi_0_io_data_3_writeEnable ),
+.system_spi_0_io_data_3_read ( system_spi_0_io_data_3_read ),
+.system_spi_0_io_data_3_write ( system_spi_0_io_data_3_write ),
+.system_spi_0_io_ss ( system_spi_0_io_ss ),
+.system_uart_0_io_txd ( system_uart_0_io_txd ),
+.system_uart_0_io_rxd ( system_uart_0_io_rxd ),
+.system_i2c_0_io_sda_writeEnable ( system_i2c_0_io_sda_writeEnable ),
+.system_i2c_0_io_sda_write ( system_i2c_0_io_sda_write ),
+.system_i2c_0_io_sda_read ( system_i2c_0_io_sda_read ),
+.system_i2c_0_io_scl_writeEnable ( system_i2c_0_io_scl_writeEnable ),
+.system_i2c_0_io_scl_write ( system_i2c_0_io_scl_write ),
+.system_i2c_0_io_scl_read ( system_i2c_0_io_scl_read ),
+.jtagCtrl_tdi ( jtagCtrl_tdi ),
+.jtagCtrl_tdo ( jtagCtrl_tdo ),
+.jtagCtrl_enable ( jtagCtrl_enable ),
+.jtagCtrl_capture ( jtagCtrl_capture ),
+.jtagCtrl_shift ( jtagCtrl_shift ),
+.jtagCtrl_update ( jtagCtrl_update ),
+.jtagCtrl_reset ( jtagCtrl_reset ),
+.ut_jtagCtrl_tdi ( ut_jtagCtrl_tdi ),
+.ut_jtagCtrl_tdo ( ut_jtagCtrl_tdo ),
+.ut_jtagCtrl_enable ( ut_jtagCtrl_enable ),
+.ut_jtagCtrl_capture ( ut_jtagCtrl_capture ),
+.ut_jtagCtrl_shift ( ut_jtagCtrl_shift ),
+.ut_jtagCtrl_update ( ut_jtagCtrl_update ),
+.ut_jtagCtrl_reset ( ut_jtagCtrl_reset ),
+.system_gpio_0_io_read ( system_gpio_0_io_read ),
+.system_gpio_0_io_write ( system_gpio_0_io_write ),
+.system_gpio_0_io_writeEnable ( system_gpio_0_io_writeEnable ),
+.system_watchdog_hardPanic_reset ( watchdog_reset ),
+.userInterruptA ( userInterruptA ),
+.userInterruptB ( userInterruptB ),
+.userInterruptC ( userInterruptC ),
+.userInterruptD ( userInterruptD ),
+.userInterruptE ( userInterruptE ),
+.userInterruptF ( userInterruptF ),
+.axiA_awvalid ( gAXIS_m_awvalid[SLB*1 +: 1] ),
+.axiA_awready ( gAXIS_m_awready[SLB*1 +: 1] ),
+.axiA_awaddr ( gAXIS_m_awaddr[SLB*32 +: 32] ),
+.axiA_awlen ( gAXIS_m_awlen[SLB*8 +: 8] ),
+.axiA_awburst ( gAXIS_m_awburst[SLB*2 +: 2] ),
+.axiA_awsize ( gAXIS_m_awsize[SLB*3 +: 3] ),
+.axiA_awcache ( gAXIS_m_awcache[SLB*4 +: 4] ),
+.axiA_awprot ( gAXIS_m_awprot[SLB*3 +: 3] ),
+.axiA_wvalid ( gAXIS_m_wvalid[SLB*1 +: 1] ),
+.axiA_wready ( gAXIS_m_wready[SLB*1 +: 1] ),
+.axiA_wdata ( gAXIS_m_wdata[SLB*32 +: 32] ),
+.axiA_wstrb ( gAXIS_m_wstrb[SLB*4 +: 4] ),
+.axiA_wlast ( gAXIS_m_wlast[SLB*1 +: 1] ),
+.axiA_bvalid ( gAXIS_m_bvalid[SLB*1 +: 1] ),
+.axiA_bready ( gAXIS_m_bready[SLB*1 +: 1] ),
+.axiA_bresp ( gAXIS_m_bresp[SLB*2 +: 2] ),
+.axiA_arvalid ( gAXIS_m_arvalid[SLB*1 +: 1] ),
+.axiA_arready ( gAXIS_m_arready[SLB*1 +: 1] ),
+.axiA_araddr ( gAXIS_m_araddr[SLB*32 +: 32] ),
+.axiA_arlen ( gAXIS_m_arlen[SLB*8 +: 8] ),
+.axiA_arburst ( gAXIS_m_arburst[SLB*2 +: 2]),
+.axiA_arsize ( gAXIS_m_arsize[SLB*3 +: 3] ),
+.axiA_arcache ( gAXIS_m_arcache[SLB*4 +: 4] ),
+.axiA_arprot ( gAXIS_m_arprot[SLB*3 +: 3] ),
+.axiA_rvalid ( gAXIS_m_rvalid[SLB*1 +: 1] ),
+.axiA_rready ( gAXIS_m_rready[SLB*1 +: 1] ),
+.axiA_rdata ( gAXIS_m_rdata[SLB*32 +: 32] ),
+.axiA_rresp ( gAXIS_m_rresp[SLB*2 +: 2] ),
+.axiA_rlast ( gAXIS_m_rlast[SLB*1 +: 1] ),
+.axiAInterrupt ( axiAInterrupt ),
+.cfg_done ( cfg_done ),
+.cfg_start ( cfg_start ),
+.cfg_sel ( cfg_sel ),
+.cfg_reset ( cfg_reset ),
+.io_peripheralClk ( io_peripheralClk ),
+.io_peripheralReset ( io_peripheralReset ),
+.io_asyncReset ( io_asyncReset_soc ),
+.io_gpio_sw_n ( io_gpio_sw_n ),
+.pll_peripheral_locked ( pll_peripheral_locked ),
+.pll_system_locked ( pll_system_locked )
+);
+
+endmodule
diff --git a/Ti375C529_devkit/source/tseCore.v b/Ti375C529_devkit/source/tseCore.v
new file mode 100644
index 0000000..dd66f48
--- /dev/null
+++ b/Ti375C529_devkit/source/tseCore.v
@@ -0,0 +1,996 @@
+
+`timescale 1 ns / 1 ns
+
+module tseCore #(
+ parameter ADDR_WIDTH = 10
+) (
+ input io_peripheralClk,
+ input io_peripheralReset,
+ input io_tseClk,
+ input pll_locked,
+ output phy_sw_rst,
+ output mac_ext_rst,
+ output dma_rx_rst,
+ output dma_tx_rst,
+ input dma_tx_descriptorUpdate,
+ output [1:0] dma_interrupts,
+ output [2:0] eth_speed,
+
+ // MAC RGMII Interface
+ output [3:0] rgmii_txd_HI,
+ output [3:0] rgmii_txd_LO,
+ output rgmii_tx_ctl_HI,
+ output rgmii_tx_ctl_LO,
+ output rgmii_txc_HI,
+ output rgmii_txc_LO,
+ input [3:0] rgmii_rxd_HI,
+ input [3:0] rgmii_rxd_LO,
+ input rgmii_rx_ctl_HI,
+ input rgmii_rx_ctl_LO,
+ input rgmii_rxc,
+ // PHY MDIO Interface
+ input phy_mdi,
+ output phy_mdo,
+ output phy_mdo_en,
+ output phy_mdc,
+ // AXI CSR
+ input [31:0] s_axi_awaddr,
+ input s_axi_awvalid,
+ output s_axi_awready,
+ input [31:0] s_axi_wdata,
+ input [3:0] s_axi_wstrb,
+ output s_axi_wlast,
+ input s_axi_wvalid,
+ output s_axi_wready,
+ output [1:0] s_axi_bresp,
+ output s_axi_bvalid,
+ input s_axi_bready,
+ input [31:0] s_axi_araddr,
+ input s_axi_arvalid,
+ output s_axi_arready,
+ output [1:0] s_axi_rresp,
+ output [31:0] s_axi_rdata,
+ output s_axi_rlast,
+ output s_axi_rvalid,
+ input s_axi_rready,
+ // MAC Stream
+ input s_eth_tx_tvalid,
+ output s_eth_tx_tready,
+ input [7:0] s_eth_tx_tdata,
+ input [0:0] s_eth_tx_tkeep,
+ input [3:0] s_eth_tx_tdest,
+ input s_eth_tx_tlast,
+ output m_eth_rx_tvalid,
+ input m_eth_rx_tready,
+ output [7:0] m_eth_rx_tdata,
+ output [0:0] m_eth_rx_tstrb,
+ output m_eth_rx_tlast
+);
+////////////////////////////////////////////////////////////////////////////////////////////
+localparam TSE_DEV = 2;
+localparam MAC = 0;
+localparam CMN = 1;
+
+// Switch between MAC and CMN
+wire [(TSE_DEV*32)-1:0] gTSE_m_awaddr;
+wire [(TSE_DEV*8)-1:0] gTSE_m_awlen;
+wire [(TSE_DEV*3)-1:0] gTSE_m_awsize;
+wire [(TSE_DEV*2)-1:0] gTSE_m_awburst;
+wire [(TSE_DEV*2)-1:0] gTSE_m_awlock;
+wire [TSE_DEV-1:0] gTSE_m_awvalid;
+wire [TSE_DEV-1:0] gTSE_m_awready;
+wire [(TSE_DEV*32)-1:0] gTSE_m_wdata;
+wire [(TSE_DEV*4)-1:0] gTSE_m_wstrb;
+wire [TSE_DEV-1:0] gTSE_m_wvalid;
+wire [TSE_DEV-1:0] gTSE_m_wlast;
+wire [TSE_DEV-1:0] gTSE_m_wready;
+wire [(TSE_DEV*2)-1:0] gTSE_m_bresp;
+wire [TSE_DEV-1:0] gTSE_m_bvalid;
+wire [TSE_DEV-1:0] gTSE_m_bready;
+wire [(TSE_DEV*32)-1:0] gTSE_m_araddr;
+wire [(TSE_DEV*8)-1:0] gTSE_m_arlen;
+wire [(TSE_DEV*3)-1:0] gTSE_m_arsize;
+wire [(TSE_DEV*2)-1:0] gTSE_m_arburst;
+wire [(TSE_DEV*2)-1:0] gTSE_m_arlock;
+wire [TSE_DEV-1:0] gTSE_m_arvalid;
+wire [TSE_DEV-1:0] gTSE_m_arready;
+wire [(TSE_DEV*32)-1:0] gTSE_m_rdata;
+wire [(TSE_DEV*2)-1:0] gTSE_m_rresp;
+wire [TSE_DEV-1:0] gTSE_m_rlast;
+wire [TSE_DEV-1:0] gTSE_m_rvalid;
+wire [TSE_DEV-1:0] gTSE_m_rready;
+
+// clock reset
+wire mac_sw_rst;
+wire proto_reset;
+wire mac_ext_srst;
+wire rx_axis_clk;
+wire tx_axis_clk;
+
+// Stream control
+wire m_eth_tx_tvalid;
+wire m_eth_tx_tready;
+wire [7:0] m_eth_tx_tdata;
+wire [3:0] m_eth_tx_tdest;
+wire m_eth_tx_tlast;
+wire s_eth_rx_tvalid;
+wire s_eth_rx_tready;
+wire [7:0] s_eth_rx_tdata;
+wire [0:0] s_eth_rx_tkeep;
+wire [3:0] s_eth_rx_tdest;
+wire s_eth_rx_tlast;
+
+////////////////////////////////////////////////////////////////////////////////////////////
+assign mac_ext_rst = ~pll_locked;
+assign rx_axis_clk = io_tseClk;
+assign tx_axis_clk = io_tseClk;
+
+reset_ctrl #(
+ .NUM_RST (2),
+ .CYCLE (2),
+ .IN_RST_ACTIVE (2'b11),
+ .OUT_RST_ACTIVE (2'b11)
+) inst_reset_ctrl (
+ .i_arst ({mac_sw_rst, mac_ext_rst}),
+ .i_clk ({2{io_tseClk}}),
+ .o_srst ({proto_reset, mac_ext_srst})
+);
+
+gTSE_1to2_switch u_gTSE_1to2_switch
+(
+ .rst_n ( ~io_peripheralReset ),
+ .clk ( io_peripheralClk ),
+ .s_axi_awvalid ( s_axi_awvalid ),
+ .s_axi_awready ( s_axi_awready ),
+ .s_axi_awaddr ( {16'd0, s_axi_awaddr[15:0]} ),
+ .s_axi_awlock ( 2'b00 ),
+ .s_axi_wready ( s_axi_wready ),
+ .s_axi_wvalid ( s_axi_wvalid ),
+ .s_axi_wstrb ( s_axi_wstrb ),
+ .s_axi_wdata ( s_axi_wdata ),
+ .s_axi_wlast ( s_axi_wlast ),
+ .s_axi_wid ( 8'h00 ),
+ .s_axi_bvalid ( s_axi_bvalid ),
+ .s_axi_bready ( s_axi_bready ),
+ .s_axi_bid ( ),
+ .s_axi_bresp ( s_axi_bresp ),
+ .s_axi_arvalid ( s_axi_arvalid ),
+ .s_axi_arready ( s_axi_arready ),
+ .s_axi_araddr ( {16'd0, s_axi_araddr[15:0]} ),
+ .s_axi_arlock ( 2'b00 ),
+ .s_axi_rvalid ( s_axi_rvalid ),
+ .s_axi_rready ( s_axi_rready ),
+ .s_axi_rid ( ),
+ .s_axi_rdata ( s_axi_rdata ),
+ .s_axi_rlast ( ),
+ .s_axi_rresp ( s_axi_rresp ),
+ .m_axi_awvalid ( gTSE_m_awvalid ),
+ .m_axi_awready ( gTSE_m_awready ),
+ .m_axi_awaddr ( gTSE_m_awaddr ),
+ .m_axi_awlock ( ),
+ .m_axi_wvalid ( gTSE_m_wvalid ),
+ .m_axi_wready ( gTSE_m_wready ),
+ .m_axi_wlast ( gTSE_m_wlast ),
+ .m_axi_wstrb ( gTSE_m_wstrb ),
+ .m_axi_wdata ( gTSE_m_wdata ),
+ .m_axi_bvalid ( gTSE_m_bvalid ),
+ .m_axi_bready ( gTSE_m_bready ),
+ .m_axi_bresp ( gTSE_m_bresp ),
+ .m_axi_bid ( {TSE_DEV{8'h00}} ),
+ .m_axi_arvalid ( gTSE_m_arvalid ),
+ .m_axi_araddr ( gTSE_m_araddr ),
+ .m_axi_arlock ( ),
+ .m_axi_arready ( gTSE_m_arready ),
+ .m_axi_rvalid ( gTSE_m_rvalid ),
+ .m_axi_rready ( gTSE_m_rready ),
+ .m_axi_rid ( {TSE_DEV{8'h00}} ),
+ .m_axi_rdata ( gTSE_m_rdata ),
+ .m_axi_rlast ( gTSE_m_rlast ),
+ .m_axi_rresp ( gTSE_m_rresp )
+);
+assign s_axi_rlast = 1'b1;
+assign gTSE_m_wlast = 2'b11;
+assign gTSE_m_rlast = 2'b11;
+
+gTSE_streamControl #(
+ .ADDR_WIDTH (ADDR_WIDTH)
+) u_gTSE_streamControl (
+ .s_axi_aclk ( io_peripheralClk ),
+ .s_axi_aresetn ( ~io_peripheralReset ),
+ .s_axi_awaddr ( gTSE_m_awaddr[CMN*32 +: ADDR_WIDTH] ),
+ .s_axi_awvalid ( gTSE_m_awvalid[CMN*1 +: 1] ),
+ .s_axi_awready ( gTSE_m_awready[CMN*1 +: 1] ),
+ .s_axi_wdata ( gTSE_m_wdata[CMN*32 +: 32] ),
+ .s_axi_wvalid ( gTSE_m_wvalid[CMN*1 +: 1] ),
+ .s_axi_wready ( gTSE_m_wready[CMN*1 +: 1] ),
+ .s_axi_bvalid ( gTSE_m_bvalid[CMN*1 +: 1] ),
+ .s_axi_bready ( gTSE_m_bready[CMN*1 +: 1 ]),
+ .s_axi_bresp ( gTSE_m_bresp[CMN*2 +: 2] ),
+ .s_axi_araddr ( gTSE_m_araddr[CMN*32 +: ADDR_WIDTH] ),
+ .s_axi_arvalid ( gTSE_m_arvalid[CMN*1 +: 1] ),
+ .s_axi_arready ( gTSE_m_arready[CMN*1 +: 1] ),
+ .s_axi_rdata ( gTSE_m_rdata[CMN*32 +: 32] ),
+ .s_axi_rvalid ( gTSE_m_rvalid[CMN*1 +: 1] ),
+ .s_axi_rready ( gTSE_m_rready[CMN*1 +: 1] ),
+ .s_axi_rresp ( gTSE_m_rresp[CMN*2 +: 2] ),
+ .mac_ext_rst ( mac_ext_rst || mac_sw_rst ),
+ .s_eth_tx_clk ( tx_axis_clk ),
+ .s_eth_tx_tvalid ( s_eth_tx_tvalid ),
+ .s_eth_tx_tready ( s_eth_tx_tready ),
+ .s_eth_tx_tdata ( s_eth_tx_tdata ),
+ .s_eth_tx_tkeep ( s_eth_tx_tkeep ),
+ .s_eth_tx_tdest ( s_eth_tx_tdest ),
+ .s_eth_tx_tlast ( s_eth_tx_tlast ),
+ .m_eth_tx_tvalid ( m_eth_tx_tvalid ),
+ .m_eth_tx_tready ( m_eth_tx_tready ),
+ .m_eth_tx_tdata ( m_eth_tx_tdata ),
+ .m_eth_tx_tdest ( m_eth_tx_tdest ),
+ .m_eth_tx_tlast ( m_eth_tx_tlast ),
+ .mac_sw_rst ( mac_sw_rst ),
+ .phy_sw_rst ( phy_sw_rst ),
+ .dma_rx_rst ( dma_rx_rst ),
+ .dma_tx_rst ( dma_tx_rst ),
+ .error ( ),
+ .dma_descriptor_update (dma_tx_descriptorUpdate)
+);
+
+wire lso_eth_tx_tvalid;
+wire lso_eth_tx_tready;
+wire [7:0] lso_eth_tx_tdata;
+wire lso_eth_tx_tlast;
+
+MacTxLso lso0
+(
+ .io_input_valid(m_eth_tx_tvalid),
+ .io_input_ready(m_eth_tx_tready),
+ .io_input_payload_last(m_eth_tx_tlast),
+ .io_input_payload_fragment_data(m_eth_tx_tdata),
+
+ .io_output_valid(lso_eth_tx_tvalid),
+ .io_output_ready(lso_eth_tx_tready),
+ .io_output_payload_last(lso_eth_tx_tlast),
+ .io_output_payload_fragment_data(lso_eth_tx_tdata),
+ .clk(tx_axis_clk),
+ .reset(mac_ext_srst)
+);
+
+wire rx0_eth_rx_tvalid;
+wire rx0_eth_rx_tready;
+wire [7:0] rx0_eth_rx_tdata;
+wire rx0_eth_rx_tlast;
+
+MacRxCheckSumChecker rx0
+(
+
+ .io_input_valid(rx0_eth_rx_tvalid),
+ .io_input_ready(rx0_eth_rx_tready),
+ .io_input_payload_last(rx0_eth_rx_tlast),
+ .io_input_payload_fragment_error(1'b0),
+ .io_input_payload_fragment_data(rx0_eth_rx_tdata),
+
+ .io_output_valid(s_eth_rx_tvalid),
+ .io_output_ready(s_eth_rx_tready),
+ .io_output_payload_last(s_eth_rx_tlast),
+ .io_output_payload_fragment_error(),
+ .io_output_payload_fragment_data(s_eth_rx_tdata),
+ .clk(rgmii_rxc),
+ .reset(mac_ext_srst)
+
+);
+
+gTSE u_gTSE (
+ .mac_reset ( mac_ext_srst ),
+ .proto_reset ( mac_ext_srst || proto_reset ),
+ .tx_mac_aclk ( io_tseClk ),
+ .rx_mac_aclk (),
+ .eth_speed ( eth_speed ),
+ // MAC RX
+ .rx_axis_clk ( rgmii_rxc ),
+ .rx_axis_mac_tdata ( rx0_eth_rx_tdata ),
+ .rx_axis_mac_tvalid ( rx0_eth_rx_tvalid ),
+ .rx_axis_mac_tstrb ( s_eth_rx_tstrb ),
+ .rx_axis_mac_tlast ( rx0_eth_rx_tlast ),
+ .rx_axis_mac_tuser ( ),
+ .rx_axis_mac_tready ( rx0_eth_rx_tready ),
+ // MAC TX
+ .tx_axis_clk ( tx_axis_clk ),
+ .tx_axis_mac_tdata ( lso_eth_tx_tdata ),
+ .tx_axis_mac_tvalid ( lso_eth_tx_tvalid ),
+ .tx_axis_mac_tstrb ( 1'b1 ),
+ .tx_axis_mac_tlast ( lso_eth_tx_tlast ),
+ .tx_axis_mac_tuser ( 1'b0 ),
+ .tx_axis_mac_tready ( lso_eth_tx_tready ),
+ // AXI CSR
+ .s_axi_aclk ( io_peripheralClk ),
+ .s_axi_awaddr ( gTSE_m_awaddr[MAC*32 +: ADDR_WIDTH] ),
+ .s_axi_awvalid ( gTSE_m_awvalid[MAC*1 +:1 ] ),
+ .s_axi_awready ( gTSE_m_awready[MAC*1 +: 1] ),
+ .s_axi_wdata ( gTSE_m_wdata[MAC*32 +: 32] ),
+ .s_axi_wvalid ( gTSE_m_wvalid[MAC*1 +: 1] ),
+ .s_axi_wready ( gTSE_m_wready[MAC*1 +: 1] ),
+ .s_axi_bresp ( gTSE_m_bresp[MAC*2 +: 2] ),
+ .s_axi_bvalid ( gTSE_m_bvalid[MAC*1 +: 1] ),
+ .s_axi_bready ( gTSE_m_bready[MAC*1 +: 1] ),
+ .s_axi_araddr ( gTSE_m_araddr[MAC*32 +: ADDR_WIDTH] ),
+ .s_axi_arvalid ( gTSE_m_arvalid[MAC*1 +: 1] ),
+ .s_axi_arready ( gTSE_m_arready[MAC*1 +: 1] ),
+ .s_axi_rresp ( gTSE_m_rresp[MAC*2 +: 2] ),
+ .s_axi_rdata ( gTSE_m_rdata[MAC*32 +: 32] ),
+ .s_axi_rvalid ( gTSE_m_rvalid[MAC*1 +: 1] ),
+ .s_axi_rready ( gTSE_m_rready[MAC*1 +: 1] ),
+ // RGMII
+ .rgmii_txd_HI ( rgmii_txd_HI ),
+ .rgmii_txd_LO ( rgmii_txd_LO ),
+ .rgmii_tx_ctl_HI ( rgmii_tx_ctl_HI ),
+ .rgmii_tx_ctl_LO ( rgmii_tx_ctl_LO ),
+ .rgmii_txc_HI ( rgmii_txc_HI ),
+ .rgmii_txc_LO ( rgmii_txc_LO ),
+ .rgmii_rxd_HI ( rgmii_rxd_HI ),
+ .rgmii_rxd_LO ( rgmii_rxd_LO ),
+ .rgmii_rx_ctl_HI ( rgmii_rx_ctl_HI ),
+ .rgmii_rx_ctl_LO ( rgmii_rx_ctl_LO ),
+ .rgmii_rxc ( rgmii_rxc ),
+ // MDIO
+ .Mdo ( phy_mdo ),
+ .MdoEn ( phy_mdo_en ),
+ .Mdi ( phy_mdi ),
+ .Mdc ( phy_mdc )
+);
+
+assign m_eth_rx_tvalid = s_eth_rx_tvalid;
+assign m_eth_rx_tdata = s_eth_rx_tdata;
+assign m_eth_rx_tkeep = 1'b1;
+assign m_eth_rx_tlast = s_eth_rx_tlast;
+assign s_eth_rx_tready = m_eth_rx_tready;
+
+endmodule
+
+module gTSE_streamControl#(
+ parameter ADDR_WIDTH = 10,
+ parameter NUM_REG = 5,
+ parameter NUM_FRAME = 10,
+ parameter MAC_RX_CLK_FREQ = 100,
+ parameter COALESCE_US = 4000
+)
+(
+
+input s_axi_aclk, //AXI Bus Clock.
+input s_axi_aresetn, //AXI Reset. Active-Low.
+input [ADDR_WIDTH-1:0] s_axi_awaddr, //Write Address. byte address.
+input s_axi_awvalid, //Write address valid.
+output reg s_axi_awready, //Write address ready.
+input [31:0] s_axi_wdata, //Write data bus.
+input s_axi_wvalid, //Write valid.
+output reg s_axi_wready, //Write ready.
+output wire [1:0] s_axi_bresp, //Write response.
+output reg s_axi_bvalid, //Write response valid.
+input s_axi_bready, //Response ready.
+input [ADDR_WIDTH-1:0] s_axi_araddr, //Read address. byte address.
+input s_axi_arvalid, //Read address valid.
+output reg s_axi_arready, //Read address ready.
+output wire [1:0] s_axi_rresp, //Read response.
+output reg [31:0] s_axi_rdata, //Read data.
+output reg s_axi_rvalid, //Read valid.
+input s_axi_rready, //Read ready.
+input s_eth_tx_clk,
+input s_eth_tx_tvalid,
+output s_eth_tx_tready,
+input [7:0] s_eth_tx_tdata,
+input [0:0] s_eth_tx_tkeep,
+input [3:0] s_eth_tx_tdest,
+input s_eth_tx_tlast,
+output m_eth_tx_tvalid,
+input m_eth_tx_tready,
+output [7:0] m_eth_tx_tdata,
+output [3:0] m_eth_tx_tdest,
+output m_eth_tx_tlast,
+input mac_ext_rst,
+output reg mac_sw_rst,
+output reg phy_sw_rst,
+output reg dma_rx_rst,
+output reg dma_tx_rst,
+output reg error,
+input dma_descriptor_update
+
+);
+// Parameter Define
+localparam DATA_DEPTH = NUM_FRAME*1540;
+localparam SIZE_DEPTH = NUM_FRAME*5;
+localparam DATA_DEPTH_WID = $clog2(DATA_DEPTH);
+localparam SIZE_DEPTH_WID = $clog2(SIZE_DEPTH);
+localparam COALESCE_CNT = (COALESCE_US * MAC_RX_CLK_FREQ);
+// Register Define
+// Cfg Space Registers
+
+// Other Registers
+reg [ADDR_WIDTH-3:0] loc_waddr;
+reg loc_waddr_vld;
+reg [31:0] loc_wdata;
+reg loc_wdata_vld;
+reg [ADDR_WIDTH-3:0] loc_raddr;
+reg loc_raddr_vld;
+// Wire Define
+wire loc_wrdy;
+wire loc_rrdy;
+wire w_eth_mac_rst;
+wire [9:0] w_trans_rdcnt;
+wire w_trans_rst_busy;
+wire w_trans_full;
+wire w_trans_empty;
+wire [12:0] w_txdata_rd_datacount;
+wire w_tx_full;
+wire w_tx_empty;
+wire w_eth_tx_tlast;
+wire w_eth_tx_tkeep;
+wire [3:0] w_eth_tx_tdest;
+wire [7:0] w_eth_tx_tdata;
+reg r_eth_tx_tlast;
+reg [3:0] r_eth_tx_tdest;
+reg [7:0] r_eth_tx_tdata;
+reg r_eth_tx_tvalid;
+wire w_rd_en;
+reg [15:0] write_cnt;
+wire [15:0] write_cnt_rd;
+wire [15:0] write_cnt_next;
+reg [15:0] read_cnt;
+reg [1:0] rd_state;
+reg [1:0] next_rd_state;
+
+/*----------------------------------------------------------------------------------*\
+ The main code
+\*----------------------------------------------------------------------------------*/
+//axi4-lite interface
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ loc_waddr <= {ADDR_WIDTH-2{1'b0}};
+ else if((s_axi_awvalid == 1'b1) && (s_axi_awready == 1'b1))
+ loc_waddr <= s_axi_awaddr[2+:ADDR_WIDTH-2];
+end
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ loc_waddr_vld <= 1'b0;
+ else if((s_axi_awvalid == 1'b1) && (s_axi_awready == 1'b1))
+ loc_waddr_vld <= 1'b1;
+ else if((loc_waddr_vld == 1'b1) && (loc_wdata_vld == 1'b1) && (loc_wrdy == 1'b1))
+ loc_waddr_vld <= 1'b0;
+end
+
+assign loc_wrdy = 1'b1;
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ s_axi_awready <= 1'b0;
+ else if((s_axi_awvalid == 1'b1) && (s_axi_awready == 1'b1))
+ s_axi_awready <= 1'b0;
+ else if(loc_waddr_vld == 1'b0)
+ s_axi_awready <= 1'b1;
+end
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ loc_wdata <= 32'h0;
+ else if((s_axi_wvalid == 1'b1) && (s_axi_wready == 1'b1))
+ loc_wdata <= s_axi_wdata;
+end
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ loc_wdata_vld <= 1'b0;
+ else if((s_axi_wvalid == 1'b1) && (s_axi_wready == 1'b1))
+ loc_wdata_vld <= 1'b1;
+ else if((loc_waddr_vld == 1'b1) && (loc_wdata_vld == 1'b1) && (loc_wrdy == 1'b1))
+ loc_wdata_vld <= 1'b0;
+end
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ s_axi_wready <= 1'b0;
+ else if((s_axi_wvalid == 1'b1) && (s_axi_wready == 1'b1))
+ s_axi_wready <= 1'b0;
+ else if(loc_wdata_vld == 1'b0)
+ s_axi_wready <= 1'b1;
+end
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ s_axi_bvalid <= 1'b0;
+ else if((loc_waddr_vld == 1'b1) && (loc_wdata_vld == 1'b1) && (loc_wrdy == 1'b1))
+ s_axi_bvalid <= 1'b1;
+ else if(s_axi_bready == 1'b1)
+ s_axi_bvalid <= 1'b0;
+end
+
+assign s_axi_bresp = 2'h0;
+
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ loc_raddr <= {ADDR_WIDTH-2{1'b0}};
+ else if((s_axi_arvalid == 1'b1) && (s_axi_arready == 1'b1))
+ loc_raddr <= s_axi_araddr[2+:ADDR_WIDTH-2];
+end
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ loc_raddr_vld <= 1'b0;
+ else if((s_axi_arvalid == 1'b1) && (s_axi_arready == 1'b1))
+ loc_raddr_vld <= 1'b1;
+ else if((loc_raddr_vld == 1'b1) && (loc_rrdy == 1'b1))
+ loc_raddr_vld <= 1'b0;
+end
+
+assign loc_rrdy = 1'b1;
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ s_axi_arready <= 1'b0;
+ else if((s_axi_arvalid == 1'b1) && (s_axi_arready == 1'b1))
+ s_axi_arready <= 1'b0;
+ else if(loc_raddr_vld == 1'b0)
+ s_axi_arready <= 1'b1;
+end
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ s_axi_rdata <= 32'h0;
+ else if((loc_raddr_vld == 1'b1) && (loc_rrdy == 1'b1))
+ begin
+ case(loc_raddr)
+ //Base Configuration Registers Field
+ 'h080:s_axi_rdata <= {31'd0, mac_sw_rst};
+ 'h081:s_axi_rdata <= {31'd0, phy_sw_rst};
+ 'h082:s_axi_rdata <= {31'd0, dma_rx_rst};
+ 'h083:s_axi_rdata <= {31'd0, dma_tx_rst};
+ default:s_axi_rdata <= 32'hEEEE_1111;
+ endcase
+ end
+end
+
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ s_axi_rvalid <= 1'b0;
+ else if((loc_raddr_vld == 1'b1) && (loc_rrdy == 1'b1))
+ s_axi_rvalid <= 1'b1;
+ else if(s_axi_rready == 1'b1)
+ s_axi_rvalid <= 1'b0;
+end
+
+assign s_axi_rresp = 2'h0;
+
+/*----------------------------------------------------------------------------------*\
+ Register Space -- Base Configuration Registers Field
+\*----------------------------------------------------------------------------------*/
+
+//loc_addr = 0x000; axi_addr = 0x000; RW;
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ begin
+ mac_sw_rst <= 1'b0;
+ end
+ else if((s_axi_bvalid == 1'b1) && (loc_waddr == 'h080))
+ begin
+ mac_sw_rst <= loc_wdata[0];
+ end
+end
+
+//loc_addr = 0x001; axi_addr = 0x004; RW;
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ begin
+ phy_sw_rst <= 1'b0;
+ end
+ else if((s_axi_bvalid == 1'b1) && (loc_waddr == 'h081))
+ begin
+ phy_sw_rst <= loc_wdata[0];
+ end
+end
+
+//loc_addr = 0x002; axi_addr = 0x008; RW;
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ begin
+ dma_rx_rst <= 1'b0;
+ end
+ else if((s_axi_bvalid == 1'b1) && (loc_waddr == 'h082))
+ begin
+ dma_rx_rst <= loc_wdata[0];
+ end
+end
+
+
+//loc_addr = 0x003; axi_addr = 0x00C; RW;
+always @(posedge s_axi_aclk or negedge s_axi_aresetn)
+begin
+ if(s_axi_aresetn == 1'b0)
+ begin
+ dma_tx_rst <= 1'b0;
+ end
+ else if((s_axi_bvalid == 1'b1) && (loc_waddr == 'h083))
+ begin
+ dma_tx_rst <= loc_wdata[0];
+ end
+end
+
+
+/*----------------------------------------------------------------------------------*\
+ Register Space -- The End
+\*----------------------------------------------------------------------------------*/
+reset #(
+ .IN_RST_ACTIVE ("HIGH"),
+ .OUT_RST_ACTIVE ("HIGH"),
+ .CYCLE (2)
+) inst_reset (
+ .i_arst (mac_ext_rst),
+ .i_clk (s_eth_tx_clk),
+ .o_srst (w_eth_mac_rst)
+
+);
+
+assign w_rd_en = (next_rd_state == 1);
+assign write_cnt_next = (s_eth_tx_tkeep ? write_cnt + 1 : write_cnt);
+assign s_eth_tx_tready = !w_tx_full;
+assign m_eth_tx_tvalid = rd_state != 0;
+assign m_eth_tx_tdata = w_eth_tx_tdata;
+assign m_eth_tx_tdest = w_eth_tx_tdest;
+assign m_eth_tx_tlast = r_eth_tx_tlast;
+
+always @(posedge s_eth_tx_clk or posedge w_eth_mac_rst)
+begin
+ if (w_eth_mac_rst)
+ begin
+ write_cnt <= 16'd0;
+ end
+ else begin
+ if (s_eth_tx_tvalid && s_eth_tx_tready)
+ begin
+ if (s_eth_tx_tlast)
+ begin
+ write_cnt <= 16'd0;
+ end
+ else if (s_eth_tx_tkeep)
+ begin
+ write_cnt <= write_cnt + 1'b1;
+ end
+ end
+ end
+end
+
+always @(*)
+begin
+ case (rd_state)
+ 2'b00:
+ begin
+ if (!w_trans_empty)
+ begin
+ next_rd_state = 2'b01;
+ end else
+ begin
+ next_rd_state = 2'b00;
+ end
+ end
+ 2'b01:
+ begin
+ if (!m_eth_tx_tready)
+ begin
+ next_rd_state = 2'b10;
+ end else if (m_eth_tx_tlast)
+ begin
+ next_rd_state = 2'b00;
+ end else
+ begin
+ next_rd_state = 2'b01;
+ end
+ end
+ 2'b10:
+ begin
+ if (m_eth_tx_tvalid && m_eth_tx_tready)
+ begin
+ if (m_eth_tx_tlast)
+ next_rd_state = 2'b00;
+ else
+ next_rd_state = 2'b01;
+ end else
+ begin
+ next_rd_state = 2'b10;
+ end
+ end
+ default:
+ begin
+ next_rd_state = 2'b00;
+ end
+ endcase
+end
+
+always @(posedge s_eth_tx_clk or posedge w_eth_mac_rst)
+begin
+ if (w_eth_mac_rst)
+ begin
+ rd_state = 2'b00;
+ read_cnt = 16'd0;
+ r_eth_tx_tlast <= 1'b0;
+ end
+ else
+ begin
+ rd_state <= next_rd_state;
+ if (next_rd_state == 2'b00)
+ begin
+ read_cnt <= 16'd0;
+ r_eth_tx_tlast <= 1'b0;
+ end
+ else
+ begin
+ if (w_rd_en)
+ begin
+ read_cnt <= read_cnt + 1'b1;
+ if ((read_cnt + 1'b1) == write_cnt_rd)
+ begin
+ r_eth_tx_tlast <= 1'b1;
+ end
+ end
+ end
+ end
+end
+
+gTSE_core_fifo_data u_standard_tx_fifo_trans (
+ .a_rst_i (w_eth_mac_rst),
+ .wr_clk_i (s_eth_tx_clk),
+ .wr_en_i (s_eth_tx_tvalid && s_eth_tx_tready && s_eth_tx_tkeep),
+ .wdata ({s_eth_tx_tkeep,s_eth_tx_tdest, s_eth_tx_tdata}),
+ .rd_clk_i (s_eth_tx_clk),
+ .rd_en_i (w_rd_en),
+ .rdata ({w_eth_tx_tkeep, w_eth_tx_tdest, w_eth_tx_tdata}),
+ .full_o (w_tx_full),
+ .empty_o (w_tx_empty),
+ .wr_datacount_o (),
+ .rd_datacount_o (w_txdata_rd_datacount),
+ .rst_busy (w_tx_size_busy)
+);
+
+gTSE_core_fifo_ctrl u_fwft_tx_fifo_data (
+ .a_rst_i (w_eth_mac_rst),
+ .wr_clk_i (s_eth_tx_clk),
+ .wr_en_i (s_eth_tx_tvalid && s_eth_tx_tready && s_eth_tx_tlast),
+ .wdata (write_cnt_next),
+ .rd_clk_i (s_eth_tx_clk),
+ .rd_en_i (m_eth_tx_tvalid && m_eth_tx_tready && m_eth_tx_tlast),
+ .rdata (write_cnt_rd),
+ .full_o (w_trans_full),
+ .empty_o (w_trans_empty),
+ .wr_datacount_o (),
+ .rd_datacount_o (w_trans_rdcnt),
+ .rst_busy (w_trans_rst_busy)
+);
+
+always @(posedge s_eth_tx_clk or posedge w_eth_mac_rst)
+begin
+ if (w_eth_mac_rst)
+ begin
+ error <= 1'b0;
+ end else
+ begin
+ if ((w_trans_full && s_eth_tx_tvalid && s_eth_tx_tready && s_eth_tx_tlast ) || w_trans_rst_busy || (w_trans_empty && w_rd_en))
+ error <= 1'b1;
+ end
+end
+
+endmodule
+
+////////////////////////////////////////////////////////////////////////////////////////////
+module reset
+#(
+ parameter IN_RST_ACTIVE = "LOW",
+ parameter OUT_RST_ACTIVE = "HIGH",
+ parameter CYCLE = 1
+)
+(
+ input i_arst,
+ input i_clk,
+
+ output o_srst
+);
+
+(* async_reg = "true" *) reg [CYCLE-1:0]r_srst_1P;
+
+genvar i;
+generate
+ if (IN_RST_ACTIVE == "LOW")
+ begin
+ if (OUT_RST_ACTIVE == "LOW")
+ begin
+ always@(negedge i_arst or posedge i_clk)
+ begin
+ if (~i_arst)
+ r_srst_1P[0] <= 1'b0;
+ else
+ r_srst_1P[0] <= 1'b1;
+ end
+
+ for (i=0; i 7.5 cycles in (split over 2 cycles)
-// for 128 bit data, this is at 30/16 -> 1.875 cycles (also split over 2 cycles)
-
-localparam WAIT_CYCLES = DATA_W == 32 ? 10 : 3;
-
-// Dest IP scanner
-
-enum logic {SCAN, DRAIN} state, state_next;
-logic [4:0] counter, counter_next;
-
-logic [31:0] temp_dest_ip, temp_dest_ip_next;
-
-logic [31:0] dest_ip, dest_ip_next;
-
-assign int_axis_data.tready = '1;
-
-always_ff @(posedge clk) begin
- if (rst) begin
- counter <= '0;
- state <= SCAN;
- temp_dest_ip <= '0;
- dest_ip <= '0;
- end else begin
- counter <= counter_next;
- state <= state_next;
- temp_dest_ip <= temp_dest_ip_next;
- dest_ip <= dest_ip_next;
- end
-end
-
-always_comb begin
- counter_next = counter;
- state_next = state;
- temp_dest_ip_next = temp_dest_ip;
- dest_ip_next = dest_ip;
-
- if (s_axis_data.tvalid && s_axis_data.tready) begin
- if (state == SCAN) begin
- counter_next = counter + 1;
- if (DATA_W == 32) begin
- if (counter == 7) begin
- temp_dest_ip_next[31:16] = {s_axis_data.tdata[23:16], s_axis_data.tdata[31:24]};
- end else if (counter == 8) begin
- dest_ip_next = {temp_dest_ip[31:16], s_axis_data.tdata[7:0], s_axis_data.tdata[15:8]};
- state_next = DRAIN;
- counter_next = '0;
- end
- end else if (DATA_W == 128) begin
-
- end
-
- end else if (state == DRAIN) begin
- if (s_axis_data.tlast) begin
- state_next = SCAN;
- end
- end
- end
-end
-
-
-// Shift register
-
-assign s_axis_data.tready = int_axis_data.tready;
-
-logic [1+1+s_axis_data.KEEP_W+s_axis_data.DATA_W-1:0] data_sr [WAIT_CYCLES];
-
-always_ff @(posedge clk) begin
- if (s_axis_data.tready) begin
- for (int idx = 0; idx < WAIT_CYCLES-1; idx++) begin
- data_sr[idx+1] <= data_sr[idx];
- end
- data_sr[0] <= {s_axis_data.tvalid, s_axis_data.tlast, s_axis_data.tkeep, s_axis_data.tdata};
- end
-end
-
-assign {int_axis_data.tvalid, int_axis_data.tlast, int_axis_data.tkeep, int_axis_data.tdata} = data_sr[WAIT_CYCLES-1];
-
-
-// Demux
-
-logic dest_ip_matches;
-
-taxi_axis_if #(.DATA_W(DATA_W)) int_axis_demux[2]();
-
-taxi_axis_tie u_data_tie (
- .s_axis(int_axis_demux[1]),
- .m_axis(m_axis_data)
-);
-
-taxi_axis_tie u_dma_tie (
- .s_axis(int_axis_demux[0]),
- .m_axis(m_axis_dma)
-);
-
-always_ff @(posedge clk) begin
- dest_ip_matches <= dest_ip == i_dest_ip;
-end
-
-taxi_axis_demux #(
- .M_COUNT(2)
-) u_demux (
- .clk (clk),
- .rst (rst),
-
- .s_axis (int_axis_data),
-
- .m_axis (int_axis_demux),
-
- .enable ('1),
- .drop ('0), // we could drop here if a bit is set.
- .select (dest_ip_matches)
-);
-
-endmodule
\ No newline at end of file
diff --git a/src/sub/upstream_path/src/upstream_path.sv b/src/sub/upstream_path/src/upstream_path.sv
deleted file mode 100644
index 82dc141..0000000
--- a/src/sub/upstream_path/src/upstream_path.sv
+++ /dev/null
@@ -1,17 +0,0 @@
-module upstream_path (
- input clk,
- input rst,
-
- taxi_axis_if.snk s_axis_data,
- taxi_axis_if.src m_axis_data,
-
- taxi_axi_if.rd_mst m_axi_rd,
- taxi_axi_if.wr_mst m_axi_wr,
-
- taxi_apb_if.slv s_apb_cfg,
-
- output logic o_irq_m2s,
- output logic o_irq_s2m
-);
-
-endmodule
\ No newline at end of file