From 82c05ac4dc40ada579a31a16a4321a3544828727 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Sat, 8 Aug 2026 21:41:43 -0700 Subject: [PATCH] commit --- .gitignore | 5 +- .gitmodules | 9 +- Ti375C529_devkit/.lock | 1 + .../default_bootloader.hex | 50 + Ti375C529_devkit/Ti375C529_devkit.isf | 285 + Ti375C529_devkit/Ti375C529_devkit.peri.xml | 853 ++ Ti375C529_devkit/Ti375C529_devkit.xml | 156 + Ti375C529_devkit/constraints.sdc | 369 + .../EfxSapphireHpSoc_slb.v | 8650 +++++++++++ .../EfxSapphireHpSoc_slb_define.vh | 46 + .../EfxSapphireHpSoc_slb_tmpl.v | 148 + .../EfxSapphireHpSoc_slb_tmpl.vhd | 251 + .../EfxSapphireHpSoc_wrapper.v | 402 + .../ip/EfxSapphireHpSoc_slb/hard_ip_args.ini | 224 + .../EfxSapphireHpSoc_slb/ipm/component.pickle | Bin 0 -> 153275 bytes .../ip/EfxSapphireHpSoc_slb/ipm/graph.pickle | Bin 0 -> 346346 bytes .../ip/EfxSapphireHpSoc_slb/ipm_pt_map.json | 20 + .../ip/EfxSapphireHpSoc_slb/settings.json | 134 + .../source/Axi4PeripheralTop.v | 8069 ++++++++++ .../EfxSapphireHpSoc_slb/source/peri_config | 8 + .../ip/gAXIM_2to1_switch/axi_interconnect.vh | 2 + .../ip/gAXIM_2to1_switch/gAXIM_2to1_switch.v | 1361 ++ .../gAXIM_2to1_switch_define.vh | 53 + .../gAXIM_2to1_switch_tmpl.v | 137 + .../gAXIM_2to1_switch_tmpl.vhd | 229 + .../ip/gAXIM_2to1_switch/ipm/component.pickle | Bin 0 -> 66827 bytes .../ip/gAXIM_2to1_switch/ipm/graph.pickle | Bin 0 -> 141419 bytes .../ip/gAXIM_2to1_switch/settings.json | 54 + .../ip/gAXIS_1to3_switch/axi_interconnect.vh | 2 + .../ip/gAXIS_1to3_switch/gAXIS_1to3_switch.v | 1361 ++ .../gAXIS_1to3_switch_define.vh | 53 + .../gAXIS_1to3_switch_tmpl.v | 137 + .../gAXIS_1to3_switch_tmpl.vhd | 229 + .../ip/gAXIS_1to3_switch/ipm/component.pickle | Bin 0 -> 66824 bytes .../ip/gAXIS_1to3_switch/ipm/graph.pickle | Bin 0 -> 141416 bytes .../ip/gAXIS_1to3_switch/settings.json | 54 + Ti375C529_devkit/ip/gDMA/gDMA.v | 11641 ++++++++++++++ Ti375C529_devkit/ip/gDMA/gDMA_define.vh | 45 + Ti375C529_devkit/ip/gDMA/gDMA_tmpl.v | 114 + Ti375C529_devkit/ip/gDMA/gDMA_tmpl.vhd | 183 + Ti375C529_devkit/ip/gDMA/ipm/component.pickle | Bin 0 -> 156601 bytes Ti375C529_devkit/ip/gDMA/ipm/graph.pickle | Bin 0 -> 360974 bytes Ti375C529_devkit/ip/gDMA/settings.json | 126 + Ti375C529_devkit/ip/gDMA/source/EfxDMA.v | 11449 ++++++++++++++ .../ip/gDMA/source/dma_config.json | 71 + Ti375C529_devkit/ip/gSDHC/gSDHC.v | 12571 ++++++++++++++++ Ti375C529_devkit/ip/gSDHC/gSDHC_define.vh | 47 + Ti375C529_devkit/ip/gSDHC/gSDHC_tmpl.v | 111 + Ti375C529_devkit/ip/gSDHC/gSDHC_tmpl.vhd | 177 + .../ip/gSDHC/ipm/component.pickle | Bin 0 -> 53757 bytes Ti375C529_devkit/ip/gSDHC/ipm/graph.pickle | Bin 0 -> 111412 bytes Ti375C529_devkit/ip/gSDHC/settings.json | 31 + Ti375C529_devkit/ip/gTSE/gTSE.sv | 9374 ++++++++++++ Ti375C529_devkit/ip/gTSE/gTSE_define.svh | 61 + Ti375C529_devkit/ip/gTSE/gTSE_tmpl.sv | 99 + Ti375C529_devkit/ip/gTSE/gTSE_tmpl.vhd | 153 + Ti375C529_devkit/ip/gTSE/ipm/component.pickle | Bin 0 -> 87682 bytes Ti375C529_devkit/ip/gTSE/ipm/graph.pickle | Bin 0 -> 189579 bytes Ti375C529_devkit/ip/gTSE/settings.json | 46 + .../ip/gTSE_1to2_switch/axi_interconnect.vh | 2 + .../ip/gTSE_1to2_switch/gTSE_1to2_switch.v | 1281 ++ .../gTSE_1to2_switch_define.vh | 53 + .../gTSE_1to2_switch/gTSE_1to2_switch_tmpl.v | 97 + .../gTSE_1to2_switch_tmpl.vhd | 149 + .../ip/gTSE_1to2_switch/ipm/component.pickle | Bin 0 -> 66826 bytes .../ip/gTSE_1to2_switch/ipm/graph.pickle | Bin 0 -> 141418 bytes .../ip/gTSE_1to2_switch/settings.json | 54 + .../gTSE_core_fifo_ctrl.sv | 1587 ++ .../gTSE_core_fifo_ctrl_define.svh | 66 + .../gTSE_core_fifo_ctrl_tmpl.sv | 60 + .../gTSE_core_fifo_ctrl_tmpl.vhd | 75 + .../gTSE_core_fifo_ctrl/ipm/component.pickle | Bin 0 -> 47078 bytes .../ip/gTSE_core_fifo_ctrl/ipm/graph.pickle | Bin 0 -> 99769 bytes .../ip/gTSE_core_fifo_ctrl/settings.json | 75 + .../gTSE_core_fifo_data.sv | 1587 ++ .../gTSE_core_fifo_data_define.svh | 66 + .../gTSE_core_fifo_data_tmpl.sv | 60 + .../gTSE_core_fifo_data_tmpl.vhd | 75 + .../gTSE_core_fifo_data/ipm/component.pickle | Bin 0 -> 47086 bytes .../ip/gTSE_core_fifo_data/ipm/graph.pickle | Bin 0 -> 99780 bytes .../ip/gTSE_core_fifo_data/settings.json | 75 + .../source/MacRxCheckSumChecker.v | 460 + Ti375C529_devkit/source/MacTxLso.v | 1744 +++ Ti375C529_devkit/source/design_modules.v | 1494 ++ Ti375C529_devkit/source/top_soc.v | 888 ++ Ti375C529_devkit/source/tseCore.v | 996 ++ init_env.sh | 2 +- sim/sim.yaml | 2 - sim/verilator.vlt | 3 - src/common/crypto | 2 +- src/common/fifo | 1 + src/common/taxi | 1 - src/common/taxi-bsl | 1 + src/common/taxi_sources.list | 684 +- src/sub/downstream_path/downstream_path.sv | 17 - src/sub/upstream_path/sim/sources.list | 7 - .../upstream_path/sim/upstream_ip_check.py | 65 - .../sim/upstream_ip_check_harness.sv | 21 - src/sub/upstream_path/sim/upstream_path.yaml | 7 - src/sub/upstream_path/src/sources.list | 1 - .../upstream_path/src/upstream_ip_check.sv | 144 - src/sub/upstream_path/src/upstream_path.sv | 17 - 102 files changed, 80937 insertions(+), 633 deletions(-) create mode 100644 Ti375C529_devkit/.lock create mode 100644 Ti375C529_devkit/EfxSapphireHpSoc_bootloader/default_bootloader.hex create mode 100644 Ti375C529_devkit/Ti375C529_devkit.isf create mode 100644 Ti375C529_devkit/Ti375C529_devkit.peri.xml create mode 100644 Ti375C529_devkit/Ti375C529_devkit.xml create mode 100644 Ti375C529_devkit/constraints.sdc create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb.v create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_define.vh create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_tmpl.v create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_slb_tmpl.vhd create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/EfxSapphireHpSoc_wrapper.v create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/hard_ip_args.ini create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm/component.pickle create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm/graph.pickle create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/ipm_pt_map.json create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/settings.json create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/source/Axi4PeripheralTop.v create mode 100644 Ti375C529_devkit/ip/EfxSapphireHpSoc_slb/source/peri_config create mode 100644 Ti375C529_devkit/ip/gAXIM_2to1_switch/axi_interconnect.vh create mode 100644 Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch.v create mode 100644 Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_define.vh create mode 100644 Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_tmpl.v create mode 100644 Ti375C529_devkit/ip/gAXIM_2to1_switch/gAXIM_2to1_switch_tmpl.vhd create mode 100644 Ti375C529_devkit/ip/gAXIM_2to1_switch/ipm/component.pickle create mode 100644 Ti375C529_devkit/ip/gAXIM_2to1_switch/ipm/graph.pickle create mode 100644 Ti375C529_devkit/ip/gAXIM_2to1_switch/settings.json create mode 100644 Ti375C529_devkit/ip/gAXIS_1to3_switch/axi_interconnect.vh create mode 100644 Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch.v create mode 100644 Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_define.vh create mode 100644 Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_tmpl.v create mode 100644 Ti375C529_devkit/ip/gAXIS_1to3_switch/gAXIS_1to3_switch_tmpl.vhd create mode 100644 Ti375C529_devkit/ip/gAXIS_1to3_switch/ipm/component.pickle create mode 100644 Ti375C529_devkit/ip/gAXIS_1to3_switch/ipm/graph.pickle create mode 100644 Ti375C529_devkit/ip/gAXIS_1to3_switch/settings.json create mode 100644 Ti375C529_devkit/ip/gDMA/gDMA.v create mode 100644 Ti375C529_devkit/ip/gDMA/gDMA_define.vh create mode 100644 Ti375C529_devkit/ip/gDMA/gDMA_tmpl.v create mode 100644 Ti375C529_devkit/ip/gDMA/gDMA_tmpl.vhd create mode 100644 Ti375C529_devkit/ip/gDMA/ipm/component.pickle create mode 100644 Ti375C529_devkit/ip/gDMA/ipm/graph.pickle create mode 100644 Ti375C529_devkit/ip/gDMA/settings.json create mode 100644 Ti375C529_devkit/ip/gDMA/source/EfxDMA.v create mode 100644 Ti375C529_devkit/ip/gDMA/source/dma_config.json create mode 100644 Ti375C529_devkit/ip/gSDHC/gSDHC.v create mode 100644 Ti375C529_devkit/ip/gSDHC/gSDHC_define.vh create mode 100644 Ti375C529_devkit/ip/gSDHC/gSDHC_tmpl.v create mode 100644 Ti375C529_devkit/ip/gSDHC/gSDHC_tmpl.vhd create mode 100644 Ti375C529_devkit/ip/gSDHC/ipm/component.pickle create mode 100644 Ti375C529_devkit/ip/gSDHC/ipm/graph.pickle create mode 100644 Ti375C529_devkit/ip/gSDHC/settings.json create mode 100644 Ti375C529_devkit/ip/gTSE/gTSE.sv create mode 100644 Ti375C529_devkit/ip/gTSE/gTSE_define.svh create mode 100644 Ti375C529_devkit/ip/gTSE/gTSE_tmpl.sv create mode 100644 Ti375C529_devkit/ip/gTSE/gTSE_tmpl.vhd create mode 100644 Ti375C529_devkit/ip/gTSE/ipm/component.pickle create mode 100644 Ti375C529_devkit/ip/gTSE/ipm/graph.pickle create mode 100644 Ti375C529_devkit/ip/gTSE/settings.json create mode 100644 Ti375C529_devkit/ip/gTSE_1to2_switch/axi_interconnect.vh create mode 100644 Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch.v create mode 100644 Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_define.vh create mode 100644 Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_tmpl.v create mode 100644 Ti375C529_devkit/ip/gTSE_1to2_switch/gTSE_1to2_switch_tmpl.vhd create mode 100644 Ti375C529_devkit/ip/gTSE_1to2_switch/ipm/component.pickle create mode 100644 Ti375C529_devkit/ip/gTSE_1to2_switch/ipm/graph.pickle create mode 100644 Ti375C529_devkit/ip/gTSE_1to2_switch/settings.json create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl.sv create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_define.svh create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_tmpl.sv create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/gTSE_core_fifo_ctrl_tmpl.vhd create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/ipm/component.pickle create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/ipm/graph.pickle create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_ctrl/settings.json create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data.sv create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_define.svh create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_tmpl.sv create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_data/gTSE_core_fifo_data_tmpl.vhd create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_data/ipm/component.pickle create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_data/ipm/graph.pickle create mode 100644 Ti375C529_devkit/ip/gTSE_core_fifo_data/settings.json create mode 100644 Ti375C529_devkit/source/MacRxCheckSumChecker.v create mode 100644 Ti375C529_devkit/source/MacTxLso.v create mode 100644 Ti375C529_devkit/source/design_modules.v create mode 100644 Ti375C529_devkit/source/top_soc.v create mode 100644 Ti375C529_devkit/source/tseCore.v delete mode 100644 sim/sim.yaml delete mode 100644 sim/verilator.vlt create mode 160000 src/common/fifo delete mode 160000 src/common/taxi create mode 160000 src/common/taxi-bsl delete mode 100644 src/sub/downstream_path/downstream_path.sv delete mode 100644 src/sub/upstream_path/sim/sources.list delete mode 100644 src/sub/upstream_path/sim/upstream_ip_check.py delete mode 100644 src/sub/upstream_path/sim/upstream_ip_check_harness.sv delete mode 100644 src/sub/upstream_path/sim/upstream_path.yaml delete mode 100644 src/sub/upstream_path/src/sources.list delete mode 100644 src/sub/upstream_path/src/upstream_ip_check.sv delete mode 100644 src/sub/upstream_path/src/upstream_path.sv 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 0000000000000000000000000000000000000000..608aebf94962579e81fea67aaa09e92c5e8139b7 GIT binary patch literal 153275 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 k!^5HANc#LpXgR#RGt<8 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..4f76955d0ef69144e1296793f9bb4bff9d1e5d9c GIT binary patch literal 346346 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�Nf*v<4x2WgFeVLRvCq8}+Gzn@9 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 Y+OGy%W3t$0B~AJGXMYp literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..4f29ee4c7b3fa28f2bf9833f9cfe422faf6785fc GIT binary patch literal 66827 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 Z(Y>#-Wz*J8`?|(@F5fz_Wpich{{u9x;*J0S literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3730a24f148fc171806537676e575850e7e1cd0b GIT binary patch literal 66824 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 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 0000000000000000000000000000000000000000..d3113f81e63c70060e10cdf846efec1c10b7380c GIT binary patch literal 156601 zcmeHw3y@q_nci3rYcwOtviuM>Hng#9k8CvR?wRS4Y|GYYX7sQ$dd!S08Sr*`y6>oO ztEao^hb&p1wOvb=rS|f4<2CF;NWckDyEqkIfz6UFD3*}y60#L2QoFFJR9HeKkfgRk zxkzAh9{1dP&+FcEA1!tFTvvfTea|`fp8xwF-}%q$g$*BGH*muM{Kwd%Enm*+wUrC? z(OSJ)Xyu!FwUW)%^wFB0zgX5r8(Lk@mGx(H@Il+SdAhn%t5&p1b5UEVm2*w4{Zf1P zi|y6+h_RuPThZFaCfHuqDJwyan5%X%e0ny;>a zI%R#So~vJJ8@Ddi^}+?MkK*<2x4YgX$GP~ehQZ=f&Om>C@(O}CA~a;|crmAe4n z_$2tqa`ggew^^;tfo_zwljvJ+oL#;=GdBgkyHL%yR={VYew@%N7u&|sWxcFDym#-e ztH(}fPaHcmKQ;eUcK+0<#nruL7xn_l>;*OVf@bx6V{frs+XH&GCts~J>(z2utB)3& zE9JIv(}k8!1cDoXOs#QHZ!c(VS-+5NngSgyHK3%o)N=WYpnHWGC}iW#bTU1@Czafj znpjL_9v)9VJh5+dJUuoxIR?5-$}T(uMB!3+-z1WCUaK^;c5%?SG1qDq0U+Q%hYNZG z0D1)r?$#N-uH~DFIc=p{zmk~B=d}iaVVha#gay|j3|9icm6)>N+G>`2(!?9!0PzN> z>5Zegdg0jVwy`1gz)}+EL_xcx=RprQFY05H6Vnsv{ou#t+=^ZX>M*#dH**!e1$1O% zty*t3kfyEAmoK)91ICuq;3pz?OA(73iw_xtg&e^8N)2>#z_{fsP~)RBClX6>#3pSRF%>^VAsD+@-o3VtzUu=uT{qU9C<6{;4g|H>Pak{QGfI6aH%wDe5 z*+xc;O$BW^*D5!Gq!#NfAfOu?)$%2+0IS?2=}d6~Jlp{u3j44Mgm@`e25lX`p|R9h zYAqStf%4^Z%|%^1wY)rCt$^02u{jqH8@I#v-hcl+Bk-I>mRm$}v}j_-y1P@Pcm%VD%BcOw`%1s4Mkr5W$Pg*ar7wzPr}j z;9?y=JvB2k@6_?HI>j(x?6Td`LbI+{E}X42^a~ZOz&j}vh0EG9b}J{V1NY^>`Sir_=PiEI~s*SE11Ll?Hw{)G8sM~+Irq4-@|+rEdJu)I+Ve5Z$hxUSYQ zU?i}!Rzdd0vR1j!EVhqtD}oNfuCdgJ2mr^Q*4J1jLBXHbtG?|^PO=6a6!lk{`fH5(Yn=LPg8C~%{WVGc z+P#Mv9$9XIj2PU#i~armq~Ys053{ANw2C&h!0O-h*C4beTZRLATyGx&&Orj>TLF(2eGCxNq}KMQ6* zY(xKbAkbkg0(x2u`Z^`h?S^8|!y5W}4s;SXms<6PbH=2UT2C`kHTMo{5!5Al2DOoZ z-B65rSk(FP2Ql?>H4i34ZBs8WpmSs?cBPgpl?>{MLFIG#BIQP3WMr#mP_Py@sM4#@ z4?Ct%t*EC)nCzBfi*kyQ!!Z`LyV`muTZ8 z&T3nv(2$ z?8be0t{8p{l%J{1UgSj$BIFd_b|Z6fz)kSDhZ@Sx?FzmpL$6*&hNp~GvsqVW}te8 zo%HzzBUm+p0&8J^Wkf&eV>ceVu<$O7pZX!H&}i0|ob!Lb2&4+ImZ=JNn0t(z6M%d7 z$u|Mr1nYUu0opH!)gin(@Yx`u4(wFm?oBj>jRRWnfVRZV2Ojp4ZXD3u1DZ({mN=@A z_mXU!(eTb_m`(vmw^4J(h!+^)s?h~l%N*W>%oExz`3eTHF`33>&jbo`gt^N)*o4Xt zZT0nXEs?w2n|NbT;_3WF`C3^=dy@4aLoQn7FXxKFxfpmY5n zHv7-60{9W!^=#Rw5X2?Ie+0p;abY5*(4QpZl)PdPiyYaQ-viLbn z3>Q0txoap06N9x(xH>a~X}@6YK*o>1F=Xs4<2eSheh)GHOkmSX0{!7&QGn%V>ptk! z`yNc;a?=`k+ch!(Zbt2Mi~!U^46J2R;E?$ZyCq-FsmGMk&Z_gd4Wya;Ap`%J0fzHT zJthK)R^r}swC`75z3(%-fVDbC{p`lqhN((uA2@1-UX(Bw2r5`B8W(D} zv^H?zT__4|b(Y&b&*0Lh9&{^MQ#+ZhW}Dn1uRrh-fW(PD2o_FEAGMBA$7gb*^Sj}% z;A)jxtLb|C6jE%kT+O+j;(&8Kg<|WST4rI1jEg&8@e-LR>UKn4k2;oLTxW4@AsWW6 z-u^x#Ej988Ynegn7JOt6?4QShJ!vkZr^3wj5jS+(^6m7-8pOayG*J+?0hdxXF|{8Sv3S2*X+?a|yX@$8ISG(>Itb z-Kj8Oa&)Kfy_{r-38Q^RNRWOvl*p`GXDEV{iHIO6wcbgBgha*>q)&T^OiqxLdPJSg z&H?Hqlr%w7YP?h8f({mmizP_kWTd4=kYFvAAZ4Nm&oJF7MJlIYcOWeAc|>!E@5B1i~bmLPpU5W27yN011- z;R%x6e2lQ4n2PO}AxN8V3PO-zt!N06-BJvuZ!lSc^aul{KZ2y>hq~O$xkURhAwfDH zN@Qc%*-CDyteLBg%r!`35fLP%)%c!^9-kd%6)u3|JnQfjt|~qj%m*067LHrx?9n9 z|73RI$XvBRrrOj)!2|Thex{vHMRT}jJt^dihXRTL@8VAi`C?LqFA~@9!WWfV@3_b~ zzL@nAnVc^w^+>EtB6-n#QK|7xi3{>Yq+u*ye2$Tp8efF9SiYEyhA-MpM;CyUM6Zr3 z!xxoW4-KprUqtA#eDSqF=)zhYUnKB`=ZkjpF~WW*2DV>@FaDQ62*X;@@I||&7);+_ zvV8H@Tf*=~B|p^VUQWUnhd|hZ$3o@H7o8+A>PVH7v3y0h0G}yN?}m54jT8^lPER6Vti3v`y%&Q>_fRnH zJyr>F%-Lc%<#oQav%0JEy8An^bc>um2GLx2mH^{-UkxH#?0025&m|r(@BuWm-wpTH zPUznjT&e)n&JNEiEE-+JV9f$G$Y_Pe28+F9Kd_}%{(OE((73%4jU ze)o=BJ;n!ezAM|%D)GC4&$XcaZn(F0Qg@+rIlr5UKHoZ#{~_?}mD5XLVQLchAStjmGc7eHx74Z3U4n z=DV_0{Sv<$cyk}^cf-B4le!C~%lX|8#qy2H@1}Xb`&tm`V!!KKkD~CqpIM12^$aQA@7^0ky4dgfmM-?YyU|gTV&RGw*_}!<2$QJuu*`hm%-wnL>p7smj-r6bYl11j6-+eZgZ&Z9Y$@|^k3nE?Y zcYW)TH{TTnHQMindTD2MSKxQQ5KA{a-^F*7>Vj)s|3eV*?si=S>8+z8Zt#fGT1RKw zol-?hSlrg8pL+>Qaw}dZyA$XjxAuFue{o;I*x362!YEyRGT5K)AwM z+_okHtlPFGwaZ-X=3{KZ;&?!KY;0xMxI&v{HZ;965Vo*ZG#i@imSPxvz{qZ8`XmD* zcX(nS`!sIZy?rwoT#n4&ZU3jig(X`Y?2NnWLwGs>sI=Wl5`=`sk)R)X3CooPsq{%* zUJMCRX}nVcgCqzEj3q(8WaOnrf?zF{1d)3^_oQ}HBC^0$~elMMHw@mSPxvz{rxI7a16R zkRTPm)73uBg#^KkIy?#bI1tu{2L^5!fd3Se#WbD)m?-*?nr#0}6l_SP?a-0HOKKb& z`eQE@b7ey+eNxvlh7GAS-YJ1WHiXoSWkWw;;zdLpE?JSJn&8HB3Kbfc4=pRC?9b5|bE#B`j_r z@JlaYxef%Pl@~J*P-#50ib(`!c@35@?tEhq!U$_|gps(7@PyHBKK2}HOaplib|KXh zfv|Ds6{`)QvV; zxUzx$r-5*VwYb1efDIqm?dD@_y(5B!EgRVHx+@52gSDaw>~>2rj6Pswvl}NF7~{BZ zz_<=Kmh&X&VsK%}ws}WEf>hcL9RMVQI!jm_3Hlu`VY!kZl|HElOojxhG~OwJL5GU8 zizPv?GV)R*L9iA}g2<(sQWB(gXR6(FL>^W}?CO}(BuJ(0(2#nOAcQMRf_@MPS6GW9 zK?GPg5`=1b-j-@NA7iT)J+aL)(_zDR2O&YQRx~8YZYhS*2aGHUI>5l_g9NGgov!w2 zE^!^6^1zdzw*?oL?92sk5+pj$fervFZHEp3Uc%x?&@*1bawS13eG)5|NL~yHQfa(X z0)r$7X%|a^+Kjx^ND!>Wk|1(ZWJnTZHyx3ORS~;7rq{s+yhsqjl_f#n3WO`H#gQNa zYlG7Co`eG9>7ifv|dU#jMqlQx9;wba zPBsej#?X|+j$iBGQ8)0A8!%kP`vPy%tJzc*q`LEUz1FPO&(;7z(VW;{Ww7V0L_+8u zK!-)8vI|EX*SbDv{y1C7EtR#^0|%Hb?Uq^+y>RXjf0#b{$h+y#lCwSs=`kg=w5!lw z2_>|&NNCoimt1J%D_w-<-E=2~Hs&g{FNPA@m`G^W>Yq?T^KQD6LK}A#+Fyne+PFw) z)Cx~| zA{YtkF%y9OuQzIZjDEnY|NRl8VBhn_T&1Fwk5T$R!}MP*M!{NUjCy$2)swB2Y25Z| z;?c3klk86ukEht5_CKC}I4O>8gw?ob(Cjbp72A3UO*^jLz{RzjO?7V6^HYTa$Zj^A zKJA%6n8I3wcZ|`D)8ZX!2Q%6&^*=WJL5l>NLZd0b=CgsYfwiK+#%^gXVnf0JqU%nR z`C%YfU@ZbmdP3~Z?tle6sk+@#|HE=8=guHGgAt0I(As{F2RZ2>cP`=PL?au`T)FJj z$UXhvcWYcCA|_8T{Z}IB^%w~@m z+fLW@Dj0ZNnXTlj1&|^cFm66giY#hiPztB$UTTvG)6(-0`@4+?NWDGhH2p#m3|tfQ z)m8=m|B_xwEaZz?p;gxE?cyfmfyJVhsG09cXy`@tgx*Nx%FpDkG{7%#g03*y7956k zrZ{cB`mnJf^}rHMOj*MEnh zQt@WJ0cJme&@KG@wlI{hRvOKEPOpGe%z&|D+WM1|;lBhjJPG7<3#bD6s#hzy@^n!H zSsb8PpzfWZF7rFvhOq_KwJL$uK<{s!%Uy;8mP4)OWv#xTKdZG%FM@Yj`u7c_f5pM# zCh$MU;b{ZL?GVqSGbg}g`r?(EM!yc+wc=EzUAwL>R)Jf$U$dIno1lkF2?{5|v*!l3 zW7dGwsPrN7ZA7cyi01NFw1N%{N1|P&S70Y>bT@eFROu7GYkZonp`byfe@;~?eIEYl zSV&=>;11cNQ3lmtfHK9qIaEvE#;q{u z{U*pEAGMdoJOqH7K5DNO#(!IL*a`f%H9c$oZOuHIe_NAk=HJ$Qk@>eZ6(ZJ)RqR{ORqKVuDqM?W{;e09 z#Z|Dp^g;5=G~f+QaG8+9)7Z{75nGkqpWZaRIDaBLweZx*>FnI8nOO$Ue~9sX!}P*@ z!dhXLmam)5>;NG4;FsCUSYcN8j#DgwjYPTDQVtCwhaFUd(XzK=ExTEy zU&a#m>t*LJh^UODcPCcB3ZTT2mT0Vi#GqDBRO<=tovmCs(X1vozYe}$tAo)oQDb|| zDxps6GITcy89IK@MNiiPw*}g`ZMs<1^UT;DC}MG=vGLronZ=`RV^g&T(-9yGVQbdl zy;spwnq>mz2I+zsJuk=?fRbmRg0D|cfOS6HUV^y+#D0wRsq{Xz>tq#m>%CX)r>@%S?#p02{yuocHF$39T=}iz(lV zwgD0Z&0Uxje_>6LH*L705-5RrlEyt?AE#>r)<9&lRg2M_zr~vKMox3kD|{)A2T*Xb zlbNN86X5`taf~K|%kB3e?$P_WAcMB2xa0;sfTLuos|*@X7b28IsiMOerQ12{@xu@i zXAu!ZGy-cabvldMBM8w$nyu4EvohBn*p1%A>|fTBF?5a$Nb7~?n|Vz`ZeJx0zw z$Toee0>?ey1OpVg&nfY!nK<*$JjcaE=S$e&A|X20H(vP`byxXC*D(t|?|}CCa9<%- z4NOU0=?@77oOU7lV+PFCggX5JLm9F&n~AfpV}%Mcl#x&{(uof9p5E3Y9A9rl@XRyN zjNFeX(5=&YJ>M$l>IpLi?q`@8V}p`_a51$>ulz2R0)ciSd#F`!GzDwm&SQvnfVFb^ zN^1om1j;2)LA4a_^`2rt)?+WY>Q;72bDyC@XXh6dvkS-G1{PW{IbDz{v!A-Mp21Wm z0TT}ojo4ed+qcl$0ZsNqy*Y@geQAz^u>3bDJ~hD}nk zF7@AHo7|4_Kc>s{VUcD|UN9b+8$hz_{D5R9VhXfXKCmP^G-=?vjvHyq96ogR@Zs5c zv1x9DrfEHPwawUMpyN<88Dn@XJ(+PcX5?Z#EX$S922)6my}n`B)p>0NENaJA35^o1 zEs&5Db6J~}!*iHD+%w3qrI`mHTT)%P{1nb3IzHqf_)7{zdg4}A(JyK4moe^_apx~o zK9Z~$m>YPjX{91Iyyh1r1O5xnKw|lC10ibkI{&5pIHev|zWe(6a1d4H>leV#F(b}J zd=lf+FS!VNn?bj-U{#E+XT9Dh4T(a9Z`pSfP467eULq=jx*w2>5E)Mk7EN&XHx8oXE8qg;*0GqUj65b>An$POmGe1izfs5Vsa!PL#N-3 z6{^R5F)iy}^u+)k))#-dKYVeIV*}>IO@m`B=O-ARK3TcY4=9ONF6`Wm2u&ZXTrK6n5HScPyFy8diav~Axg59UJ*Vt6ZoZ% zNuHw2eV7Ctn#S>?2wZLsty`GPB2xhe)CF6&0HB=&xiIlu*$dd>dVH?TkC3m=iUr!* zBAF{IeGty6@OFkx>1FXlY)Zc`euz!!6XJ*1lwK7+B&PIP$x~!XrPm}+(F9KE3zDbU zZG1)Y6nFM(lBc-0-;g{--SseVYiDOUQsBu}x@-y?a7mHvLoQ>65zha^u?e?3gXHM5B)rTl6V z7x=ywm=A3(wi!{B7hkP9x^7&B&&ZnXwpJ^(AhkRhg(}Z}%(+9A* z^~;JUKceocL7!`Q#;Z^1zL6DA1lJHNo+bjVcp}&BGPL?Hu|oCuiYHpuRDkb=)#f0@ zV}i<{vu+QHu6>f?>2Z`mz=eBW#3`OMMykhCJoN7UZnPts1H~zxo=fpKw~aC0?jzWS zL@6F)-R8~C`*|d1*LKY|R@#u_EKi)}5pFhfrIC25->)WdBa-l09%8bBEYI+$pQ-*M z5oLL(z+|VmN8${QJc9#vIF0eE>K{h<_55yA`*Nio+c|?L55agJU~>c=aYNrwRKoc5 z`0%VB;1Qm{`cVu|zocV&7AMy@iqkQ4-$*)U%uKU|NXLx%Psf1q{+KYE{?}Na`XHN5 zi<=7AU6PTZN0M(Fw(7b?OP2zlO_`CqIS3zFjZ;`#KuKt(^loy~# zg`EZ16=wnDSpYzDAZp?{jN6hZ9`^Vg25lIWl5{2WjOQ?VYYqb>Ye-I(At}#c``HXH zkgsUv1h{vIzN}bu!)*roK1*jGhkudgvn_C={OZHhPX%o`*D5pj6?1y+>%2Xciy@i& z-&Lw~A;&~{w%JNFSJD{_EilGYuoq3HX zx_Oqt?oo^#b(1YF$C#gZs=hS59$+sxZ~8dix7YFeZxpWByFL*NTr<0MK3BQG-7;%z ztizujcm8<_(Z2Sx^q5TE=7Gb%-G<{P`N#n{;H2p<8BJJatQZ_@?CpRzq(JgROwP>@ z>huLj@CzhoFb|kR$m^p3uKNrD3?ytZF#Hh%1CVYnz<>_%A)1AzVLa5LJ3%3vaTrj3 z$bbUwt@Q>44GBm9!x4@&?}%{LPjQ3`5#fM6k;60?=(eV5ax$q59YF>|N1As)XZ;jI z7XrF_;Qf19d`8S6c6OwAicBN3#mOLqE}oVZC&Nv;xHU=5 zwr&w=>f5c$w%Fp9SE7nrI}+I9mL*Wdt>d%V;>0fKZ?{f(#l`)T2I)-$Drt=V$b2Lm zwlc5f3SOqNf=vaPSi&?FSTB&JJm+aCj@#i$oNTx8{C z_981UGZ?yjY%$>Wq5wCbrLt3vE0w%pS>DI6dF({bi}h-y+G-@G%hmkF9=Z-4F>g8; zxob)nGH)=Sm64+K7tx^PF-R2U+Fu46`oR@^U_AW__%C}DZYX3On1F*&qWyvxr7j+{ z0+c4CDE+E$P@=tkFQPOlMQP6%8V!Z@cwJyibj<8Ul#)`Eo{k13j|@zQJ)VM(?9NCu zCdK8w(csbr)L0E*oBwyQX;We_@U#OJAWZ<*Tx}w=R!oc&&DTogS&ap%ngJ-p<6+1IDz3#XzC$=EPX?DF>L*RFDoBDE>?+jgPU;86FJ4spudp8szNoef_AYcSEVL(# zSJL*@N?NcbJ;`rLzjp!=haSEFxogeEb!7?ICYKa$N?pK!gxZvf@2nCn_d+*ube_!h z$TAb!p~ah0JG3d)&w3+{tf5V*rm2M4lxoiSGvlT|#?}_ak#Aj)F6!~=CEycNLZA5G z`^G1BKSHrj96(EAJ8_ZXhwsb}pnq1|BgMmp?t?tY&RQvV&w+${h|9H>a*d_dl7SRT zc)-$!u|kD8VCnkKmiac>E=-_+fnbUs2!0bo)58P7e!vD~`P1?&|Np@liL(5?c4Q|# zXBHpL0aj+CTzDzIof9qQT5XrU4iHIf%&$rUNcaLJFlg9bnuG zBQBX-SkRx<@Ew{dhf4tSCW6Gy+(05eh(o@e4y1Myve8jOItY*C$j-@-X0MoZbM~h|Z6G8RHWsz2Tl>>GUrB zzJW)W&ipeBPrsxyd)ACx2X*-TXu5ACotX}QezdidSDwx^PsFg&nTYv_PP84|kKAz- zlZRc9)ucsEv9T^0K)8BkkU4V>lbM-}eHbcH=1l2C+v~qR7AHICG`~D;Mox9PKH-xd z>BUQCIhu+_HKqF>0RH0%uyYaQbex01gXnCaha^v5K#3ll?P*C45pwmg!8D2Exp#uo z80NK=oL)K9T3*)bC|#9!49pTq=9yT(3WhJxV#P_B&tQY?>4ls2Y^Z28UFj>5r)c9u>1&dw*adt;@)Ws%mb;PT(TF4N3DVEoABGe~HT{exe5v#^ zMFZ6Kgsk}m>bJ~IozEURd-!nn(A3G}*>lHc7LPJ?a~l^U7dSJm+1v1Ov5dGidxtSDHfa`nnhrxmd5^m-fnD>udlSq%VFg1cXfb+Q zL3(RgM~Et&{;F{FpJ=0tG`qVUFH14a;J^Wou~T1cdfDN?#XQE0f#&1g2#rTJi-AVv zfT-&;pm7~}0&IwX%!;x34ug%-dDl^!4GQkWxK|GxNDfiK-5TSQp<{o5100$K4m{wU zv6^3ZBQhxoG6R?omKbDua{~;p8bTK&Rx|ntO0QYLM(Ke6j#v%RptWQ*7B~W{`HgNw zW=&WPaA$-)i}>057+{o+c#qm-5I-a8158H3&-%@qS-6Nfz}LDF8VNt^I|@LCk|LY= zIRlK+q0t?&8KOaJ$7U>C#5VJ$M`;Go70|2|n<04>k+7MO&%XuOybM^+evh#cT=9r6qD@aJ+4< zsaGqBkwaIS8pvhRHyMcUc{%?CNEPq8x>#-I%8psNJtKOhNgtlR`$2B0`EI+Il|9DA zoD=J-j$&3e0T(07;L%K=qnI^(!o|o%mTWPLGU8(6&PDHz)~qOri%m$1S&ji0%Seh5 zYg)y{CaGdng2YN76XGgLT1J>a?$K=6@N}!utgb8^In-(}2Jjh6KUsJN*Td#dUiWrU{8P{kp$kvc?)c3R6Y`)97RU zLiG@Zu*P~l3e%(nrr+o@y!7YB`v=vAOk1~8>#r?W?9PiE&%&73_k z3s$8M7+c_*>9%0^H`H>?V!QOuz^k!f$d_(M$9BS$1!a^Pl{MlxWElcp( zbaiDVS1GiOw`$9mvwCgiLVdJWuNGQ)m=DY5YWipsykIn6U8z+oTBVtVf3}S+sAW?7 zrM5A(>+0;`V<(R-K9xQF)Z)=oCs)DJNYKR-#}3U;%|Df$KXqzxbuWBLVI{ZM0(39< zD+~S_tzBswm-p-r42LGjmg;m)fPzkav%i{t*0U=|92$ zgSuFHjXXhr0$soDNv*Dzs}~l;ALX;>e+HTd-~KK9uYZI7MWl-?l#%X#gC%^v1DZY~ z-O@h+zoFZ(h{ZEfoDTBErH{3&pVl)Vf-9tomAGw&e2eUZG1HyLBI^$;ac zY1l`MqobpHtuKWJvXHCQih5mJsOCp6Wt-JnS-Yf_vyCf_rnZs=u4^g_j6u)C{{+9T zELF?NQGgO}Q+I%liu471`7LKF7c13gDts96?ZzY!MAEU8xML%dj+NdF9$+K$X|ZB8 zilh%|aUUjnsSjh~J{-DMeYlk}lDXNr(Z%zNyuzQlR^Rgm>U&nI1+CoBS4Im}{+r%$ zt-fgo^-Z;UX>^(Y8vR;*&7IWO0O4eTlv;qPi-P|p*;oAy4s4P6q}!;kYA$6P(8=;* z`mJm9K`lV)Zdy#GlZPiJGhn^#rHgu#iB=x~pArH806u>wiB_|hb6`Bg3?HQQPJx(w zLMAQ|F*)dqm@L;W;hd~wv8OrHW^9_# z8*u4E+c_Qv)!gR`q4sV(cWQoSp2{8%y7zztLV4K|ZtebMU#2cdbvQ_lalq zUoaQf{~c2yJt4aoi_9Lr&eWJliO;f{8(3$)<5zSIl{;tF?V|dzA)Oo-cVupWY;fDe zRPjE;0LvNgSES_p_nvb8DBY#?-eUVlObt(DK1EkpmjN3BL`Q}lG^P9*ro7h?W1nNn zr^LV?H!nnk!Wx>HTAU&~JSmCoK1f-QKr@ff@OYkpc7iGI)%`Pcd2h{slBwVg;oF%S zo|+G3Mjr=332nhsXzSsj2)4)Z?i4ys)ltE_Q(Ku=cy_9^gRY@s&O4bZ3g&zlQ^nhy zOZPBU_NDgATvNg{8gwRwEw7EK%-BA$oy`ppLqjK3IO>e0Co?kVWV%^oJcrKCFDzyk zj=gP`aqA!P)PoPgee?D!*Lm1#>1C$8moNBzro5N2eS$9Ut(UJd6}>QZOD$ib%X_QkD@+A%wfq=U!&5B*EG=V4tI}xIYSnsEE6iw@ z06}fE-`{R6jV|X?WBXDQ%Z2>DTy9(|q|y_~bY@>ZH#xaKvpfd=9v|PI8B3_l@QDEsu{)f?t!#iPXNaeUrJ#WNKeNvp>Iod_14pKb~CH emXevt<@{11Q^;f{Q>p!#d}?`O|I*~X!v6=88xJG^ literal 0 HcmV?d00001 diff --git a/Ti375C529_devkit/ip/gDMA/ipm/graph.pickle b/Ti375C529_devkit/ip/gDMA/ipm/graph.pickle new file mode 100644 index 0000000000000000000000000000000000000000..5031dee23301a57b4a752e5a65aa162743505576 GIT binary patch literal 360974 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�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 literal 0 HcmV?d00001 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 +HUh4J+fK6YFhzi0NBDbJqMMdiOtZRe6d8QSG4h9yRGrUBaipIeawvKRtVUjxzOVk +Jrr8kMcAoGyqVG3ZA5rHQbVbOeS1eTWRktkUtgQJkbXJKY27q+jdqM6STe5Xyk/V +bUCeN7QwspaKVLlT+Z1OpcACekiWFgy7fiw79LHgI/wAeVv3w3YXmHvsC48YOuDq +XBKV7gOooz7/lzeIxEL61rgQfg7uOt/BwmbcqD0nzH6NRBrp6AA8vleKetSB8NMi +gRNcQ9ZHg1PxqCxNVVzBmtgFf0Cxn2FdzcyF0BfmBA78aD2dzze9hZT5orFv+/zV +fEQhjV2iAj84cfyH8tSIlnkWMMsYQX4fqdifZXOUtJ+45+uZQPkJ8idEnVj7k8be +zniyfaOum4sfspPnaa1fdpLwUMZQyOW7ZmKD0Ioistig9GqANK23zV43QKe/bexe +jmqhXDJANp4rJ2T23FciuAPkQGm0zeomzIgpjNFTtemGaDrHo2HYY+cpe92e14QB +0glxi1M35cP0FLbHXW4yFIjQswOFRLlY3/GbPvfn+9yJkzOjm4vhq0w40egknNfQ +2Np7SbqTtdRJDVnPZ2oo3UJkBCA7PM8kce1i3XmeIAFuN8m/TMKYV5WJQJiOTDyk +0XVcz6pahWl6rd2HwMLQgbpSejPudFTe3uLHS5Fi2aG2RTpHTYSCOIkNC+DovvB5 ++UzBIUJz4qx546ybA1OWuIWwmUl9BQnt8cxU6ARH+Sny7uRYL5X8RLR7G5qlVZGJ +gs61Eea2+hHgdnV/PJAx9HLDa0t6Tmwq4P8OD9OGH7PEPbPXY45/MDa9Ch3LX4Hh +HedkWuG3ryOYohdpMcmCr1zkojZ/DGaL7eqMKW7JprJxiXGZdoZ41aXt2eiCl74C +TVxPm+U4SSHQh3f0a78LWV7U4aSHb4SbAWaX4mUZE21RaF23DmqlUxuBYn/6+VLJ +SwZ8aH/eKwtPkXwaZ2gXtkGOMxbIgs/GKLRQ0k6sr/EMWEgYXpgY33LNzudM5u7q +XyWfoJMXciiY5uXUovD88q+1Ni3FUOD/brmf/3W3Hh3Db7zmkDcWvT1FDUDcGXep +5xdkPwBEmRaI8D4IYTVIr5kv+BsOFOQZWjLyShpJXPMRJ5g7qxSyUUhhKEgWkt5a +ZA79/VsXS+UQHfIPcWK38VPmkhnLopUe7Y2IoQiDxJJ8gkVfeNP8CvA8VRU2UMwy +SM+kjbARwKj/dLQ1GSYNOwEsTJ6/4M10Bc6kX6DCBxFjqs8dfN7LatGAvifFjmTt +Kdjb4at2888iGfE1UrrsE5NhETXXXdaCLYTk4n+vSvkH4aO4GaWq5el1NeZHvZ4+ +wFU0e8qENFYoZqM01NVm8ij5qtfSqEhuhtgEDhcYc9SXl7yoTgHQ7K/jG6dvfRx7 +p/LmrJj09+N+2ggcsnWOW7gWem7mLad7sAVHlxmYWWQCqU297iKmaHLaPBiqdw5z +/LXYK5ssju8oJaRyieEQFgD+kj6fZHoskYnyv/GA+PnGOkpyGyFaNZ+ZCoVfQWj/ +jGSosBOeflbi97GX9zcnz1kb6/XGWMZO0TQhRjQmLTECtusDlG1mDs0DVHXybjkF +N1fg1l4KuoOI5+sJkqPKAvq0LoOA+1hNUQ0IEMj51stxOiKdiIJV8P2TjFlZJYLs +YvQyBBeYej67sSKpFHPd2yrOtP44NNQAEpvjPt0mKhJXnzSN2qZvbKSBOgn4Sbk0 +9i4XJ0hXqI0JF23f/zw+aAlSGC6NiAIm554hbB94QmEyU3Ow4dojWO7jzkvqfjBR +ozkcMQfuqsBof3gEjovlJSAoHAvHK2w752D+xoLdSzT9iO+UlFCuzCAXblzpQCUO +Ud8xB1E4fgXx0HBegDqx4CRR6Levsch/Mldrxb0JqkgJ6Bkl+FxzmkjwaoYtwtZP +kCZly6WHPbc9D2tAJapm4P0FWFDsnBbF1ZmEz/aWKKkNVy+1P2RAUjChcjycAfue +3wygkO0ftd8oRoCRh2sfzZqJjip2nd0U3YeMhZMV9795zTA2S3v8nv3x0kScC7fK +fXCSZZtWr1J6P1pmcWOTd4f52+Ym5K30EDmu6aXC7tlnUYhBwP7zP4nhFy7ya+dy +eM3UvUd4oIPed/r5rvmF3uJycmC1ig9F6BCgKN2geT3+vi/bSD7RVlTua01tpcdT +dci8sQENmUG7hZ80aeZrZVmP8tWroI+a11/qAj6//drn9qo2/YnV1L4AWvtTnS71 +nbu8cx6B5LhuRMglPXNQWcPdcnqXG0Zu0WLNL5mbn/xjI6q1ksl9Ket0gyZiF3vv +u+c4jrQw4v+36b+nRby8L5rMDL4OdtLrg6ZJZu+nDIOpW4+XcKNDmS3GjgM1gBmI +Nniqq8O1a4Swei4JOAr6G0AJLDNZ6WZAd/bjUOFFg30a3+h9PwVuC34XI6XH1Y4b +nDDn6id74x0Fo82suxDTVUXcvLmO+YunWR/r6EOUmfFAVbww7vKsu6sGj0IVjifm +9sx7GJjNbunSQzLwcSQDMryZC/E/+uzBK+7Rfkynq5XTDPJlKTWxwsx8PmXB59DH +xR4MTfIS/h0JTnlxZfGAuHRoIccuaf3n3jI/OYEvyczsoV8PJKDSXtWsXeL5Sby8 +2jMXA2rVgYqb60AVjct58Qv2VCJ0FM2G7dxkENdAOwFb4yfKL+pynRvPYg6Q9UsA +1lGiJmNiNjrOEWcgXi92beZF2WZDdfs7ZIw/qwVgYuA= +`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 +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 +`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 +UfeheRgBRxdnaqiFTvEeC0Q/KuH9TVOzWZxM4U24sjhn2RQRPREHerSOK/3qaI+x +rfDb0OaF4D3GaMmC4S41VrXRwQmIRu52ShkWonVwf2z3h4z3BDOk7s17R8tzX7l+ +imJotpd8E+lOr30U0BIWTBbWIT4aZJ2hUMAxkCa6/g0otZNqObQenri5RJhQvnGA +HjVhegbZQdLVWuGH8Y85Vgi/+IJ9k04gvp8SpV+dgp4DF+bTcVVqMbz8CCC31kTD +210mJOvXnxhbyhikFen55GPZzqrg65Lu6Hj6zEidaqJNKcml9lmq3bajxYmcezEz +8yvSkxpytQMgHTgZl1oHypPxovxUd+l1rD5zJShPIXMnY2jybKvXS8l7l0B1EF8U +IKZnzYJPNb6HEQ81PxXaD5CexMQqth1iJXDbUuuA+sujmc93z0Rj1aByZAEf59Ms +9uQhUHBFCMEpHndl26JaBW8z3ApFpWVRfo66UwvQ/PUCvZcNv2GVKEm9wsO2yjPf +ZNuEK+NAAxP2vWruAuu5wW4pqk+Qhp0z68wgv9yI4j+KVwXs5weTTyWJsh5j8XAs +iYNYd5OaR17O2IEfKQ/XDSZlJzGjQt68XkM+VzHnULQ+jz3dxFCqL2uysExdEl+m +nj3uY4mSrPTrSPHVIrPqikhVtWfJ3QG+wGlbKbhKt6Glre3gJl6tw1HA/qY4ZB3w +YtmIrA0hx/zWKWAkJ8hrhegk2BWKj4NKtGfgu52HcOvZ1oENtJjSqI3YMyqZkKd2 +MZC7VtCAPqjuXBfPwJN5WYM8b2586IXgx1GFMQ5HCUzau39L4jxkPKVZkVqbE+IX +yDuzNa+TTlOCKiGnTLYNcsx7UFwc/Yv/jQdRXZmxL1VRSBNJEDJP4HR2jwA93Kwc +p5t320sj/7hVJiujQTQJChZhJYRjCGPZ/rh2dBTCGB0oRqSFbQTM/0OuaHrNcKke +OF1XwTBuV9BkhPwWGNK6QI1f1ulz04qxZe8YI/kHDgvqOzDtqiIH8kC3CVqU8L6y +QaDNWc94W6461Gq19w5tWWdvaBUon1Hfo8sdVP3mM08XOqNb7DSbDxPPSQIIvtqq +IlcVs6UWz7Kkp4wCy8J/sGMHDBi9vIoxk61pv79Hgo8fxhe7swnk2MBaHgRhPWI9 +MgZPOt08DEPbQS3hYX0MJ4MSoHh/zUQ5xrPdzz+JHiN76CrATpfTI87lY4ARbw3x +8TpW7HhRQtea+sjBb5QXh9Yr+ZPXQtTZmVczMZ3mpR3WC9GQLbinGdyYGM3SUEYz +pbU0f5B9teKsPQNJXJ8Y9TTG3zbC34aHnD+g2Ep+L3pG4l5ooRwfWCm0hKjRNblt +R+/5xE9hp/OmLB5wFp0Eiid4P1DuH7oojKrDpw6J1rJzJQfRIjc0B56lVw+/5t9L +Igsp6utF7TN9fNe1/T2A5zyYjt0bE/75pzacvTe/eeMpkgoQWWmzWd4/hFlhW57a +YAfG9eyIW+cAvyn4BYCEfDiXOFXBhGCfjPeDSvWZEfsAxx1hDcu4I73RjKh9JBvM +Cx05eWJzBlpo1e0A1SHLucd535MWvd8WcelDI+F5t9CpPykwNLGUxsSEmzmg8mNC +pSMLE++Gb6K5b4Rr89/vvavX639U8/4TDPVdlCZ9BNiTGiIPn8rFCKhu7l57I3MJ +TqIC0ktGVcbyHMCrQSzUNcaKRdLZPimq0/tUImFW/WPPzXnxibjE1W73cFbTixpd +2kX+cwGfQATGdpN0sNyRPxGQMYbptdeXGB0mFwKFE+3FiY4VQXNVtugYvDS7hHqQ +BEtUqbERIcNZ/rXKBCO14NcdU6ZjBvGG5Ejzidrzesjg1+9bswF9O1qLPftKR22S +1SUti6ef8ZDrAp+iBRrwOnTbo7xotdqeVDrTLQLXLnk3RNKX0aXzFAUGcf2ByLUe +RUHxiIlYeKCHZgoakR5Fo6JftG+2OJ+R8HA86fygLlQZsCJTB3gUdn3SwuxM4/Oa +sETP8If/9bkAv6IEUIY4EhTR6iQOVfe6wCLaNn6V74XSOWkVFtl179M8SxS41AFn +l/i3mCxCQeR1+bQJVOtvXq1o9wpxJf4qm62D1/a4sMDnXaVXgemMrbGfwnKpB+wl +j8cUf9lHJKGJX91RFQbA00vBHf/Piotl+urWuwf1tUFY7kAHFKy3r3AmjKW2XpOY +dQfAqh0D3pAUovMmlPWhrlesXeRaJ/JRcAA2UqO4r5+UFdNmPzaNjM6uUakjmaxQ +fRZGzF8RFz+ZSy5KGQyXRmc2O/twrKvfRlDPPwbAqijQqiLDG8DdzOxvvnBxdp8F +tByinA4/3jpoeAhESfMGUF1upkLaWAbuU0U+dpDudMxHXhVHiV1/NCyPxGsvp6SG +QNyg0UbMkplu2OFUevxNhv7FO0U3u6yjkeKsPzgBKHL3y6w+h8TBKm/hfqibVgty +6Ua/oCsYNTwktG/vlvMCdhxu+ENjcFdBSotAFIkm7fPbbcprEKmRUo0rj67EBKwt +k/s0EYQvW/L9NCLXg7eoq+dg29yeDxWYFZxrJv2L8Y2LYHLk2xnTs3qQWSYYhmC5 +A6mIUUw0iiaFG36LTUS9svQcjrEo6XwZauLTpY5SWsgR+c17Jkvdi+Do9GT2i92d +vmTQ0ukDZAQmHtFD6aJ/fD/dRtwwLPJOPPyGFbIHe46biXjW1/usqdTsItyk5Y+c +LzXlcioeDgJ3M9X2XJ5y4Bnyoup7bJ9U0giT7Oo/ZZh+0RUDQPqegyJ0Vjr1JkLB +OHS8nVXzhMMwC6Gc+x9ThGyL5pshHGKGF20xzOvqxZSHp1jKlI5FR9SGYsAvYCzJ +IegMxx+87cRyCm8E66Cj7ERFENo2jZWfqzezU0W5N0ARdrcy2h9hJQu6YAnGg+Cd +gH0uiRsxaFmS3DSS1X8iwktzkoAf3gSRKQxmiz/PP1q85murCy3zDkZL3IaNfJbT +FLV1+daLO6/rvxaDorc94xGDlc9JEvgcg+p9SAtZy3vjL0JLYM980cmOBlSsRUj6 +HEGaZoZ/sx9Y+nrVPSmM/LYVFBtiMGYQwu55Tc33UhSg+E0r0GsjW6FhPzsmzw3n +GdhKxFpgm4QW8tKuRCFO+0vo8fEkuPYp5/3zm4gujtyNSMMIWchMp4YZkpr6XxeR +PJe43rQmoHd8Mtlh9OpvQR8w4Bacu/4hnVWfdNKgfns6EqOd8POS9zpPLOufrULH +WZ+ZxUjzzf0tNHN39Bz8YaAUK3tCEfHvnoJd0FzWAx/mcX/xRHYsyaCb1a/EQ17l +kBsonsvYFL0dvo7vyih+VLLKE85tvDDd/Vb9sD0Kbo2KdhnVVZiFxIJAgffHQcZX +qHnDBQ/+adozZqVPN9b6JwBETHxucY3uNIZylEVYzFfE1bsoSUJq0HvvL+Bjzv8+ +A6m8TXGwgUi89BnN+fZxGnMFxqz+wRekn/bf7JV4dR6bTTIHf+2QwAXcLSI1F2FT +cL1V7sXxiBiVFix13UZRMv+Q87VZG4qOaYC9z0hRqSpKq2nOhe0WLdN/RI4mzEIu +m/YRRqHj62DxcLh7OiMo1itUQkC9LWwBDa9eRm3MXFYR3qQgjbG80bGRVDnaNqNE +hvosDePkFvco34zqhI/RvlhU1YuZM+yqizbyB/q1KnPv0j7j/+DKEzAXUruQPt8O +GdvlyK1i3+SthiycCJkCOwgu5agV0ojvO252TYnmxs11pBqgJQ9aFVlmMqlBoUMe +J9qdDEkFygQCO6ph7L86fPNNXuDmM49dlnqIJPUAsv0wX+/dWpweaZBAacLbqI7I +62PvkXi+5KqWuCiKmhrqJsRzI3AuPvvBq99mBavpN490hhKJxUQBSMyW8GFgqLPR +rv4iNIHUBGeCqACJNnEZS+Q8LItr0EAQY5oBtoBW298QhQ2rQ8s7FkCiSjiYSpoi +cJSkwERNUwS0qJ1RdKXOVp5e/4dvkq0L+DIoYRvkc7sg6XQcGTClRXun+J3T0ndV +n3l9zTDcvLveW5t8VEAceWOYm8JZ2dD/ckKq7nHBs9CMSl5o6jxVTj8ZqT153M4r +r6cdcGq0h32cSsiNAbajCqPxesHZQCRc1XotGk2QI7nB70/iTi+wI9EwWC7WRyUB +iF/4wMUon/7tK4dNiR6kJHMLbsA2du8i/iLRPgM+Toiwrsr+FWvMICX3sVhJXeqN +1raCVZn1N7LIH5VWQxJlQvtCr/IgIp1NeMxnQvdmPJQcb6Zuq4EvWiWjLKy3Wl9n +KHUjSeDPv+bhTV0Xyna1akzlp5hniR61LJcvCEdpGeBtPgC91QgToo+oe9oMYEgE +c56kORksUBVAmE510vttzoZDCEdoepc5eH4fk/+LIJo2CDXPEXzCHMf0ugTQsM0Q +3u6FiiVfJgfWjxVFBmb9vEAFPFGztcItZPbaa3YLr8hvAnxH0q6sSzPdO0v9KAq6 +MxrHXxO8CjoI5JRH4cc2hPWlnlq+vht+KhL4qDi2H29XSUb6p/8D3rn+NoKZpeKa +Bl4ARM6ozyuNiqaNTIoV8EVRgtFWCh4N646xDcK2HJMz8Kplslc3W0mgVGG2C3fZ +Eh30V2h27waApHHLpfuoEocwOwoi5JsLdqmVnS3eyQKB9+zJmcCXvxECn8lFoqQX +2eLUqkWUYPOIYEoVY4sHEr+DJYnb5b+DS0p0+mHfGcATZx5i7OlFhMKvTSZKeb7d +jZnI0vG8FShOY5voUfhUvw7giZywuDzT4oEQeNqeKEjlxuMcsw7DQD7zlWB/5SWn +tTlbIzv663KU0tOt13qXvqupMnzY2+gcPJPrO2cFt89vBsP1QgOYKZsNvamzVCs2 +83XKCrFC5w2v5UranTu924fAcmZ3K7mtoq80llis5iC+yc4hrNU1uGsntt3V0NQa +V6BborwU7bImN7LU4UnuJ/gaqXKvKZ/eaDQhNP3sl72t/ZJIsRkdjXmOnJjJXtjL ++lKh7R3aOX8uFuJy0pXzvNSV+zfUq+12A3Ilz4DkpMCmnDDXPopqbDuYZ59aEMAP +IpGnkTyQ1z2mkjVH8DbLNMuLXR9E4HVrZPpUh7FSclQfkUNaSTgsAtQgZbasGRCM +Ph4sQUxWs0tBLPa9faFvE3yj3R7XOvYsrRX4s4GomQKh0VxRJm5x/W0YX9OBrdes +ZQF2dKmClKeoaNBIfe2jK1VNdhSMx2fGoGuvxl+R5Ghn8Yxgo27yiB2AkgGpd5ye +flLqRoQEWokRvyBvOvKsmd3oHaUjJRtUdid/cg+B8xE0QKr/d2v6RFOcAshMOuM0 +cQ5pTAVQbsBijB3E5LRYMm5bzMYvMXg+lglFYereYXfu3g9gn/w9m0lyuuBt1cnL +qH3Vrf1q0tK6wIEYMeKLJXvFmmoL//VtUXCrwlGeg4kyReEWABQCkVGqR9RX7gv1 +N+O7M5RTR/RNNJsU/Ut3sZsOX80YvBWwBQZWmL9/lwmKDXrIEy4Znoa4aMpEY13+ +mAVdlFgOCU+hZhi7bndKeGBcvN+rSSmppHNyOkurIsNmVw4AO3gUPcYefpUTpgms +X/T+TG+ZX9xRz1eHT9WTTzdcB5rhZ9KGQGs4yIA1vRAALZfUTIMVKojHbKaLnOk7 +NLa3OvyS7yAUDjgsN/xMLd1zMQ/Xk8JtOD5c65VuO3NPK6gEcdaIklQrztAIsZ5O +Di/UxrgdUOjCJmcg90DQfZRrU/SkqkevdvwL9NAudyDCbf1zLKpvdLyfBMA0WTEO +hgirEBDDnXLUx8gLMWbNKky+v8MHwbDv1+m9rHBYJawNWAI4PRNZMaKKXSEAJavZ +kW4VkJD2FVSrBpVWOojJuRThdCxUWgPC6FLkALviiius3FyrjfnGGDNV9ApmVq+w +s07L3gK5p5JM0b+zd1t5GN/PbWDtg7KZMUoGDC5mSnOxLc8UOJxalhh5v/x6kef8 +kCfT6zOp7QZ0FfcYuxKAW0AMEe0FhUWT3sT8Hzou5PFJGkVHwsY+gIanNrt+Zgc0 +tC+d3ypia2HNtcajcbO7fDkvxMHYEjFVgCTw+PWhItvbV8NroBPzrUCUg/JE/REC +eFS5CwuryRc1t2Hdqyo7bss3NEgAalU2k/kNL3LOcLUW64FfIv2L9VqMhUPLQ6OQ +D07LYtwWEMQQEdHacGFyoz3UvPJMtyY8r4sC/A/YHtLIFZiid9R7cgW+qMV7r2J2 +qMwuIP7TG2KuSBAds3c1S7TD2VxHO3qY4kdYHR6q0O9EIwTx5mUZ05ShnOnn8Wp4 +w4/+dYFT93DuIhgtiQnFEnK5NjUazPNiLpTuRChpBbFCq5Sb6w8w1Qw6Ht4nxdj2 +no4CwZE46W1AO8i1pNtRb1DSsqYCyadoap4/Hu5NACyC88c7HhAUH4r7Oztg9NNG +s79zq9AKZAw/UW5Hh6LnFyJrjHD3uayA1chRnqZtr3UY4ygUSJsQtbhJp3KgMPw0 +fRwLp4X+chO+wJnVIuTNThQK+DvXsmyWagYDkhYWFpTZleBZdmyzeaLvdQqkI9Ye +AUkErdIEsA8qFvhsLdmsgUCDCIOgWd+C6NUrtCamExDXRGI+pfyjOUfVwHTy+Vz1 +1D4FIO8l23BuhE9pPNMp6kz6cqnQCpxMqy/tHPrXZzi5YFi0MMb3l112T/AVFaJZ +aeESRiE2sPDcLGxzvMJxfCTHTzmaAQCUfmgHflpJG3WoFTkq4ZiE/ET5WgUAU7Bn +XgmEyPIRgfwzl4GnckztYJua0TX59q7rv4B3WSNsZ26jfphM6Jrv4KKuWD7qZt07 +lflAJAw/QguEwvW7X64Th5OlV4PaIaoGPQ8Sg0cAYONYAZg9shvM4jgBdYgGdnM9 +FHW/Hlv/xKQ0qOuWXp/tEkvzcrL9G9qa2kgDy1b2qpZTIjEQZLiuE5z0cNi8nfKl +8fpBGanu08A1QDSgJHGhZ4W/3lqJlVEYYNfgH2hXs5e2TuvcHIUPC6LFqPrdSWyE +Zsh52V6P798eGWqWbCoTdsh/Wp9z4L6Cu6P0L4UIyLaowORhUXZh1bBlQH/YzEDz +HjSQiQ6ZWgTwUhSidzOSGsn50pZaBifsOfJviBtSqpGHD4bIXI024zOxUR+W0vEB +tCCzikH0jUsxnwNlrXIrkCERKnSmPPxL9Yrwgns+IKHOTVS7T1BPH+jBYCnHEZeh +XtSAFCnCJraPZfQzkchtlmPYIy4xrxeq0Yw18TYCeh9JZuWriV1QSoBD1tubI5VA +cB8dzbXwozSXUG4XolRJjMMS2iIyFFMU1a/8AcdazJyYNYtI3yfHDb3No0iIfCZT +cioK3jjNLveH6Yl/moXU5wWMTffXAiNIRQjyWAcGkHpc6vO3eXcTLQvR2K3hLf7U +bC8WVo4F1Bk+FEZs5UbBRf/XldNVB7xpnSMbaBCsk0dIZpTNPkIl290AkZjqf0F1 +tlIQl9Eexnjd0Kv6pSiNDxPcWTd6kkCi1SaR1HAc4DX2D7yLjLl0tYw8TWFA0bN6 +fhHpP7yUCVYsfKBfmpySCPQRcloN2zTvk4dM+GXI/akAaa3kFRqEe7WTShhWss12 +mMa52J+VzPpinEo9e1SFtrbd+Ei2Zv3OZ3cuxAksBAhRZKbTxAsWmG1fV85YrzRE +yZ7SbVXVA5OVMNVVbWowb+PntL5CbSU/juuTh1rWTFj2KzM/+5eSRVTlMWMKXSKy +tTLlQWjlBGtMmtSF4zVUgKNAcmBttUnRwnroCCzTN4GlrBq9bI/hUw1h4MJAlikA +NBZzByz72RKVSm/C5k/TmpHGSKInm3TbqbF7V+xQYpgPXOxgJkAz/6rQi5rcAYjH +u5Y0R5/0o9Jp3fewRPIdOYkIL7/QAGXXMbJkcc1fUR+udyAMZLUMPv0J2KZgWk+3 +gUGk/L6+Yjfxw7mGqhsY+1wGHOjthu5mkk7dXc7erhsB4IwI+svFKuJKapDj+DOY +cFsyGkjEknK1R7FBGVipfiQtUj2s7RitXXz3zaseHlUpCXhKPLj8yss7GNDLql1r +1bSqHvDXMCVP1CLLiMRtt7OviU+LD9hV6a+0Jc4NBegg7Fnvrg966RrfK2w5knhS +aqhTVeTzEy4pE4Rs0AAQ//KqXSUFQWZaP3fPBGgTJawVXXszreVNHrPCgfomWDz/ +Dg6BdhFLE623A4NpoMGzldZYS2fkZMHH0K/Wzf5Yf6dbikiqIhAWLnf4y3g1ZGGE +8TXkIRjqzS+8BnIxtZTDXgW0K+IOnOZuhRAkTAKhLnfsfotx4fGS4EwhXXn/Mimi +fRJvfoGKMP+dzJo7fsIZVJrGHJ+Rygqmk4RMwjoEpiQrQPaHIxWzNDqeeBaC2GUK +wanaEngiid6SaOOglaooQ93UTnbWqEOsgUv8LWvBcEAp8ImiVcgZ6P73JJ3i0TqU +fuR/63QG3w/bkjQz/XUlGT9mj2821tcWPiPTDsRK9T1f7dIT6eEjIaDvmGS1pMzz +3oocfft+/GrlybpqzFUmNoZKH30VueIbTdTgK3P+OVp882bJJnL980t/yDmqw7fm +EctJ89VPH4bPXTmHxB5vooTnQswWsOaPvby/s4ltV/weydAQNjNs0kxlxzZ6oZTx +XkEdgGc6M1z7fDII1H3z8jZY5+mufBnc3FINQIzBsLJ8rzKdWg9JzvCD+8ffWzD/ +7HNTOaxHFPqyejhMKMWX/rp3VqhkIGcfYqE4h8wDYP73u422YzhhceFQ6uRfYgTs +atU/uezDfSy2/j0FjuAWCQ/Z5xX44VkvWyUC+PUrO2uuILUgHH19UXP6VQpjxwv5 +Lip2Dt+TDHzkbgrOD05izPoeGZIogcW1Q3n+N4/uQ92qwNI7L99z7GLuSdFqEGwd +166Oaw3vMnLkN6gEMX0QGWnpHXbUxxhLlTVEOWli0It9Fmq/BZh9hihztmWoAec6 +rohxq5mluNwYcc7kagepVb1n+br2nG21V83rAylL+ZDDCy8dbgai9mGoV8eGkqXM +FCXP/OxM7oge1H3koYd/Io/HrQTb6TgTNtkf8IAM2EFFxnGxdrQpeo/nPCz/yOcT +EgQKEo8wPUU+ERH8QHbBGaBCs1mEdp6TxjZakVLd7oLBXqwj+XNUcwnRAmRxN0Hu +W+ETPLIOJX1UORecgHmBss7VBlJPIasYod9ohdaDiv2L8rEZQTImwh1Nj2+8/zeu +1bdIIRO27MBuJKH0fzzH+/ePo6QihGhTQ0JhgjewRdN9C72SgR5EnWKuZO5nb8uc +tb6/iAJxsIva63tVNshjCO6V9l5d4hJLCux60hQtJSwfO4JX/zBF4QQbTzpyn0Ff +vVGCJUw6cu0ytHtSvvtrJlCUuoNv4Nn98ytxcml8nV3tCMa9nUFU3xGAHNbw6rHN +WuxWc+h+/l0EBUHutuH9ipG7MX0TzIg8NvhoNsaAasnWmkP269IaF8nVudZYks8z +pki/gP9rLxnD7ZBCUGj/7c+AjoDPgo+Ml4I56k32glnGv+DH8uio7FfBxvYcU6G1 +dCS3/pL8mV6nq8XpRVwEr4rAixKSxeIMVGvFtzcUePCpZpjz24YrlrLz+ugJiC1f +B/95OFC6RAhVZETqXrtE9cQMlTEzKyNVBs3uQp203rMdQyENfi4FSKjlcq0K8lGP +qO2+Tz/IqhZksaHKnIZ0PRvrgTa8XuSVM+2X8V3rhzI8WLfpMyJhml0Kit7vFQY5 +Cic9KaWr0iqo/wl7nuRPFwfz/YUE9Rk9P6FhsBkaHKE81Fy+o0qdiZJZwSr4uh3P +gdebEllOvuCzZsN04TMGrjEVyhUHW3iHtp2A4O5zjnzI7PhS2Ev1NQ6D3362TTmC +7q90a1hQTa7T0cBvwqNvq7vfg+/Ek/xCrzR7l3OxWHv2YWLAsMliiJMK8hR8uhaA +NXHhL+v6Wnc7ho8cfoVie3gzWzOmh8LlS4xGws7HO3jKoU8IzdrIk316/NQgVFA2 +1yKi14nhevBVv+K1SCvzv1BCMlJMCB/U5NxUX2zQEsQ+6UiPJjjiaXqmkOtZNYxw +9yNVaQ5FlJgsUdfjXfggQ5gekuZMtr+SSHFljzsoZXbdyosHxDdNYTLqlipqujMx +e4TdxbDYlD78jnaMqjs2Acv8xGVDt+RmNuOUqOCc2NIVL2UsxWwpDdIIJFcB4ECe +p4A9Y+Sn543tzz6fHfoVoWxVshP+DTY+I+d7SQWhQYy0RyH1Kp3f3ZoqaszBiN8d +NCjEAaVgrot/fDjhk+7Rj1ties0OE4PSzg0cl8ENVoksi+pFT80tcij/JGFDtAsv +GkRZHbW1t9wR4EAIUEVWLhCeYCIzvA/GlZFuWFKVN6sLyH3qghPoF/C10YyITzG1 +cT02OZ+4XSseGPRI5yZuHWJC5/ZQH+QQKzCSijCSjxGTdvQji8qkpSdDD5JVhmIv +0lYC5Z2n/Fz1SoCbNngz8Fo/IIEW/QowxJO7cwO6h3KTUbDlj8qMCMRvImz8kBC5 +7VVL61JJYf+B7xXI6H3ZSekw7llRvbGBY8Q+MlcDqxMZ+sAaM28XyaVb4fnw5Mog +jqgF4A7ii5M7+6wsw2ghy7UiR1+2A8Je5GrWUA0Jd8oi63RVBZEdCdVAh4fGcrEM +NeVZgKHwhaNIFisq1Z9NU3TkyhNBgwkAtzKrpkUHkuTTvvF8qD6dgW/FQSquqnWN +znCfqz+vYYgykBUmqiAkmmS4fJRKNJCWw3enSgxRf13Qw218lZLtooRmqwdaPiTD +MG0li7usrgQfpGkgAQGENkGplnMQIvbc0rOffCkqJWF/pouicjrWF/ARBr3297ko ++r9fimc05rl6zS4f5lRFxN9pejDlOq+/gnnmdGpWkLl23jNKffX9jVJ5C1ioqZVO +eD2uVoDRuHQ+SV/SD0lvMMxgXA2l/KcCgpf6KJSbYykwlU8llFrw/OiOFT08Nkkd +CFZkbfpHx4dO42FdaoONFF7Z5VZJwMqjmf8tfJfUSBsLwNVkZ3MyEuimVg4yq19E +Gq3ONm/vAQY/lURhtr4FqXsEDlm+NXNC75PuxTXlaQErR4rYs1FMywMjqFzlj+60 +rezA325w+t/hRsRTMqjvxG0CZPS5lzK6vlJmieAbqnuIOD0YAUhIgTRjCwubvSfJ +srGxoQPe3mmFTQdaTTQtmY1nQS4jiVG0xw8EPaAczwKsC+taUBsOo1QTTXPJoB1R +sgr4vUGTa7lUXg2Wd0yvb/R+PDszLID+oa5EHe53e58n79ADI8kwJF9Nkfpbbu0z +7+kkDKnRcRAaycqEnFodZRD4uXPR+DsBG31e0/JgoMfB6QVi/rUnKRsBzcD6YqW/ +2JT+NSDkP4+HGaFb167czavR3rOffv1Y64QcgBVjQM0eaQ/qLbXr6Jc1de9lvS6y +bZ0TvcbILMVHyHL5rPbEqp5gvW8JXgI63Aj9YkEq8gUH/zDtcdER/xBOjWh2xSXZ +BYn8rJ6PWEf/ezHaYQhB1kAFsGmkSIoIqvtxDPdXxv5qkPIRx+0ZESXuZ77L4Suk +Kutd638YhdCyiGZLWetsHdgFIz/QLGVUvtBto4Jxopxs7uQXFMPGdZD1sw4qIupT +fVFFlWEkKyE0pu5xhzNwZqbJfhuDD/jjvTuyGAwwdMLGQcD0B3BVpxP8bqYULASF +V2QLvCYYccYcItk0ZGnOjTO9Yv5/5uct/piDaMr2/Hoo9KmvLs+QYr5LE/FawzaE +qm1h6ExBafhikpOl3in1MJ9zdWwuZ/xC+CVRPO9sL4NBxU7hNL9H0HPfo73Bss32 +hjhE7+TFK4RTBTLmbn7JQhpc5Sk9fgbgduXYkTWyBMjODhxfUv8MHl62HqTRB166 +WuN9Lh61bvKtIQdo0HkcOCFOV1sVWebolQyfgqIzeEGMTs3wPgU4dTYpijrMJ4Sw +euGxAPvKVaOHpCzwDm5RMK5rHzVZwi2eY0PysITGvx4hgEfU2njUXnQeQXphgA3Z +75wws4nQsN0492G5B3SUeUd+dIt7CZFCCkJQJFrLdHQz/Z2Yin/abA7wxWQa4YE4 +dzoZpOx4vqG8PQMGIQZA+u0SCr5itDRrLh8PxNz7xoMtGH4Iev2bhxrKy2pXHpiR +81q/NnQd174tBQ4oyZqt6rqd1OKI+O1uJCxFOJWIBK6jcszL4BrinVROuFVpzzZH +vekKNGVZnCjtzzjTk335gxvLdRM16VCdg/IhM/ECMaeCiEqRP142/TlqfPizLh4I +j3ycoz7JqgtrYK07nG1sKiQMQybA0QX/9+tie50a0o1LoVlZvX+0Sg/1meaCGJyr +WKffy01WQ4CN8Ed46WjTb/yF5hyv2ieKPBf5U6d/GKiHD7aGXrW08Cae/cQGvi13 +R/udZZ8vlQhcUgJQApJ2/PQVdL7QhYjMrN/YL+mQx4nPiyl3uoxDJykQqyLh1sI0 +qry7w/zWpkemZ+t5vy28XHlmQtuR3D4qfYFt1o63SI7g8JhUqXdcYoFFYtSlvWf3 +/gRAKXJpV7ibs0PBQy1zqPthgQyyao3tWuEmVC96a+j/IQlKcql4Nt2zwkpAKa4j +QnWxFcORZAOj3nMUFRFXIBSRpgl6Av0TQz3ljU2WBL02PafDowJhbMreCQtuLcnQ +uwMq0LcujFFmmGgp469azJSoGLNv2XPcCWZ618KX9CBxDSOzBA/4bxtM/9XYHEYl +FhbqBdhEnqcZXg3bGmkh1s3KfgJD8gp0sFnV6JH1IbIOArBWUv0d/F7o1TY8Iizr +ZQNpahHEGTReBzVdbBxbjMFA8RY7nOXCGz2az/qT8NvSMi8WZrmGbDIKZXrmACkT +CgNH3JhmYEpMfO/GxPplHBhahCuvwEuCTr5hGsAEeFtyZR8mqy6/UcezvxoVJ0ge +hI3uS6kcM+2dQkseirSrdxvKKNG47ua1rbL2Lnzyi4wYPiKH8HqMix0oy9VXTN9w +T7vObW9Ac3cAJWC/jF2F3XX3Zd23XIUwn+WoOzpVQNaIqXa/U0kw3PHAoi7MZTIb +p4d9Is4uReMyUvU7KpURP4De4jP4vmPH6D8H/cqM24eMX2HHVd4RvPC6mKIUGCna +ElELKsA1FZBKTOJJbvSIrSztQ1aDh+CQeTh9ey8D48ajDVY9CDJ3EXgJxvtY/BtP +txRJ1ly2r2liE7yKZL0KtN3C4qdYPmqzsy4oZYw8BE9WdERYFh37uAHqs3RV5+HH +NKZ/zWrFg1Q9SUxKxdZsY/jYlQiqlMqT4W266aycaZcWg7SISQ+wQCEbVT4sXmKN +KUPj9YQRSJdXHTGnQd7c1sNisBqY3LN0hTCOBna/eZcEgcpk+gf21mP/HbNPUmjc +moCOBcrTpEYkE8obdwTVMbDI9BCZvefSbixbj5VbX2ThZmgWLU1WOCkQlJk0CH6m +CZmtZyar/4TXjy/07VvLZKUWZbUsQBLxWtO4VtDcV/uZ0myk7ZSBLzGSHQ4XUuoK +rqcCGb8TGp1YDzc52EsXIlmkqIYzOd9xj7Do+6+m/hRC+i2IdWRgGMqZ9Aq3yLSg +04GL3Vdc7hiiWjzGqCAS09tRqC3uVm0tIoDg5Ra7XbjrQKcTAjOAleUDNf0B9vYu +Y4bqyxkHFIQ8CGPZV7DWv7IlEuebcco8xJN2xcqAqsRSZ88EjNo1tTdDAxpFOLVp +2IWpoItDSSOW99hbNyyrIKoAFXF9ZdF8bvZAl4jSqtdoD5dm7xabP4arBEiOoGIy +RUvsZw8fYqtmOtkKjLYmGd+wAI19YVlEthJ+XTZwXdpYZ1mh1XMa1XFeJ/yqjK/x +boswjus904A6aR/2l7Irtwp17l5luNW2ZMueAouDE3g53s5WwqeNrLXr0shDu8EI +64pJB2jBvLVuZJyluN54HcV4O042LwZWiRaRxFzLUwjehVvkha0piOnshULmV3w0 +4ymIMZF4MtBORj7mOD0sCH4l+9MG7oYhfFjoM5ujdmkSH9kPkJGbjNZRLFPNDaqT +jtrhRwoYFlZnRUfpl0Euj10AMzMgObCJNU0L7CvIbvkw3mkCMfyT7U/y1N/GaQNl +2KoO8E2xUwf3tyEpJ+jvyvABf75KShI0Z+nBR31uBXRn9UwmKrhKdp1WP5fVvwiZ +5WiTrx/UGNSwZ+LfSF0IR853AwmtNFFvVu3OS1fveks7GF+MBU9AZr26A2Ewjmed +Vzofs3BZpb1s/LMy1W2spC8OrJAImwRiWpzTOsb7uzbJ+e8/5316OIiZbHB3Du9W +3vnXKIyp2dzhM66rTZC+UuLwoUkmWmvZnMPbxGZZ4OCt1WalwprLpJmxGAJjA6xS +jNo5t39oylpOaBBIj5Kq6At+kPOwJK/mSty4+5TFHuV+fdoppI94sCEuz9LBfRUX +SEuK8vCWSTxLv/E63wB5t3uyqIVv3okNNWWBza2YTG4I1mHqOYa7qy7+okZ0ANFW +tCEKSEtA0ypQt3y+YIVzkrEynX8kBG6EWSIbpVIuK+rDGs2FYvyYT+dW1x9kEQ+v +M6TPjBgiF5wMU1DecY4qwTNTri/fA+MaOaNFCKKt+UTPuxIno7IQUWJgcfbhJWfV +BdkyEoeChLiAHDIRal5T4wUAfPcZIZhV62e6F22FjOR2C5WAtBRWll+8Ww2WKIml +OZUxJj2am94kvMk70oTc2QYgRoZWiYWDZfPbSBslUYsl+XPyQCT8BILJB4lrGW68 +KkWnPO2UjaBjOdPkZXjzdYRcfjAfmxSrSH8tiyw0zUZpBHdAdQw3tfE8miFOhTKC +sAXRvkyMoMnuHAimhQxMUnRYIvXWLA0ykUbGoq4T3TyQIB5qHLjceYS4cW6GFUWw +BEQ+2BiW6shiH+oivdsaxS0SsOSl/S+FxW4SsHCz6x3ZDmJLVFAlkQGtm3kycQmz +IFVLYGpuhYBjujZyh4IHHaps4ZC/vf22lG8KPc+TruuXv5J2TKLzsiIKSPqyeUvA +oVhZXPctuv3r4xcZO0YDuW6VtjCbj35f5RMJPrZm0lizC0fhjr2o3vdnyOO1jcID +dlMVTwQ1hcG3CTPRCk95D9RyC6Oh/WVtufmDqO0XnJXbJAgBHU/Q3FSDaPJRdWU5 ++fc9q+g2TrN9bCQB2UsMW5dLkeb5N1VANv5j0moBmMxT9/hJpwxmoJMWLJS2wqk9 +thHzT12yi0J24HofhDVD+gY2KWw0iD386OnpUbYO0ti8uRpfp4B47Zp+xEQQwlOW +l58a7+hnQ6b62l1bazXJCimB/OVobOgo4pwXYY+Wt2b0CML+iVn07FiDF126edx1 +bqnWY6L6lzKnIfcKWkeah3ZMo0cXIv2fXboquq4K6CQNM7HVSNOczVeQcfPhfP6+ +Oa1Jv6QM5S3gi4WjBBhROR3SjDHup2ftRQ1GPvBve6dMZ9jwDTm590AimGWxKJtT +AeL0qOcmL6JGEgL4JaX6qbybBV8cPT6ZT1rpDZ/69qZsyLi23Y6e6X8/Zes/9HGi +tJs98BcFOVP+k/LZvWwB1bb9O3keeMXIjXMpZhomWK9GOPalRS3WYVOd+IF5y8mC +HS1ffjhaVpwpH8U9IomY/1vh2YDu1PVm8SDEggrnKnI+7OcMM7NIcxZk4CxVpPUx +HP61pqH/li4BLt2dwso3vYFGLE9E7+SZi1RVhiouFHXkwM26Yh9NKCDFcMiB5weS +UKK/6K3GUKyLxigRD7MZXlnF3sWPwkrA7DJJnbQ/3PMK4/kZT1KqTijXLVPMm3cT +NdXTgNCwbv6wkVXlVtkP/sP0YHZf9VKi6UxFet6F7tl/uJQRghnA459MqSrSs5yq +YyKJgp4GphSOLvPZ75mEg5NrMiR72xBTvYA6jxVwy8/RflHCrM3ift+K02fuKm9t +j6T5V5XPCT2ukIw6X48VuMZlRtWrtnXw58D3tnnOsne80rhQfWBAD9umBGR24q7l +q345o9SXTqwB3JTnEzrrakB/65PNVH3VqUDnlPuOxTlMqgPNJoCp3DjxPsw9UYr6 +vPHSOFdwU+WJ2rBrR78kV5Hdx+QcmbRMIOaVytbvWGGumu/Susso8EUUlSha7lVv +iQCG3yYU/UwWojBb20kEO7ZtySUgTE1GeX7GnsDomVg88bAxwweNiA6ajGDE31KA ++sthyYTjFc8BFGJMvZNP3Myk2LA6xBE7fGawPqaQaA7KLkUNu/eUwXg/3YAwgHEL +q854mENUOoVigUL80r7cIwhaMYdhNnrfFL7dbhLrIkAHx3Y80GitH0A04fQGYgJa +mRhpLpJrag4s8Defe8rLwxBIupfTS9+rWQXY5JBdVUFyO11GnEWGogFvvGR/7ATu +EpFMXh2f8JljpqrNl3CLFojZEx6kEhBFDmJV5yCGR3ceHMCD33uu02S9fuTmuQz0 +Uyr9Q/5xAbctKJzjbsbT1fv4y69259A4sRYw/PtWsJUdeH3U8rjEeQIw3yOkQi5s +KO3rqLh22T1mYp5ozTH7cTsz29xPYiEixqUZZE/NRVIuGP+k/NKd4WQdtuCfwyDn +O/QbxsdFpr36SF30z4C4EXOxSPWf+Skfn5c3Gqf5pjYcsE6rJgisDzYpppiq5x6c +iMfcxuAKmI1vAgrM6vKwN13j58icozNHRLjpmrSgq0UcAkvShLy2fQgsgSnE/Zkj +9bJ39ZYmx/WYeTOU66n5n/RXxXVVwm4A1j9AyuG+xoeIt6GDTRroDMZArIyvtCUO +Mduj6RjgxY0Ju1F596J2v9l0Auiwdwq6g/iNXz/J2IwZL/j0pMxVc6W11Zk1t1Xi +S7fW3xD/KFWvNPDeb0+wP6tLLaZp4vBnlckmkh2r49/+6glg1GvPsCK0zdseKbQZ +CpvUnz9gRxONxasd8iDMx4XP+cZU/qt24Yf1N7jT+SRhnVBpNw8hD2ARxNHUY5b9 +4EjQoZcw3C6NYSpZzbqqqUtftIhJAeewARw+Q5c+BBLtGTuUd7RagbKBSOouSNX1 +259lwPs2AJiCss77mpd3sJxhXrGBDGaSb5DNpftM3UAmMsWaY1vowGwkulWJmP86 +jp2VbN9GCK4IoGSO6iVNb7o+x7w+cwaOBfFXFg4LVUGLbqT/LSi0O4+y2mTPoZi1 +SruCYP5KmzAqToixBjl5l8vrDUB/paxNnDSOCp3nlPW6B7572K2DNCEYUpEreYAW +iKuOiiM9a/ikJau1sCFhL9PJ65WqdLWeMSH/6jf7peNsv2lK35ucMksieRK2jfHc +NWdrGetAMlcB2rVu0xiERh87SWP8ArnjLJomTpMV6aKuTB3gxhUkExfWbUQDQtA5 +EYCy+NPSfAPaLVSu6c/WsnFW+VwydK60bL+kZI/Lw+uRAGwF1RW05jYpAREDhvWm +C2sVIAXnjZ6bAHaLVt5WpJSmhoFoIrXOvX/2f22cdUcPxmi5r3N+am35jyICj7TZ ++foK8hpnT4uQF5gqaMw2UYhNNDribdOn8W4e1CL6p8ubP42dgvvPECvWRI8/jIhT +bHWKZAMhjeBxSBCiFi3GczMfg82lcwFBNrHUDrHBWhqwjlk5SRmgsDgnGmDBaRdn +OhaJ8qX8XkUMEXsUaTDC3VeXK6Vcw41JaOG5pgCceRjsGE3KOM9SJkOt8gl3qjV2 +4f8PfPgRSCkcOdRDkiDIQh9TDg4CK3Rkb8wYVziLfZHgbdLVrlJ5PM2lp4OGvArm +bU9dk4oCzdHAoEIys79FsuDVOLSdBJP24p3MQLLZN6P2XNSZ0WcL6ejN6XxGk+2N +aR6iwBUPpta4J7LNXNMeH4iEFgj/IfbtHg70zFk5ju0gt5AUyKRZz0wYHm6u13Ui +okhzQUM2WzLAsdXyYehTUxz2LJhJSYDg0r+d1TPTrXauzh/p6vMwZlh5ucaHAPuH +MqIJIgobWRKECbX0m3m4cLyNU8CBb+4H+26eIskpaShxtGpbWCSBjVNA6faG+lB9 +LdONLxhGhir1KpFPgt/O9N0FT37KiW4zHFroj1G8fHAmaAe/jLKCLb6j44P9psF8 +`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 +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 +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 +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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 +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 0000000000000000000000000000000000000000..d292d37f5c3b95345fc9f93f3b121adfeb8ad2e8 GIT binary patch literal 53757 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 F{vRVi 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 0000000000000000000000000000000000000000..26ca13fbff4af0c6892450896b85f962f20153d8 GIT binary patch literal 87682 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 Jj|e&8{{wbwMe6_n literal 0 HcmV?d00001 diff --git a/Ti375C529_devkit/ip/gTSE/ipm/graph.pickle b/Ti375C529_devkit/ip/gTSE/ipm/graph.pickle new file mode 100644 index 0000000000000000000000000000000000000000..659a69b2f0d8ea660904883f8ccc2bf6ce02ad31 GIT binary patch literal 189579 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 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 0000000000000000000000000000000000000000..d2a83a471578b7eef8fc4e8ec05acb309bf71bb5 GIT binary patch literal 66826 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 JPELsN{|EmYkS_oL literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ed0f82c70683a330db0cf632c31c95e05efb1ef2 GIT binary patch literal 141418 zcmeHQd3;?*b#`Jqwqs}CoL#YvEmX@V~(tGE-bLX7*=H8hz@40_9{n5{o zX6AhN%r|Gw+&gpc)0f<}c+pXdlK<+frz>*@XR0^dx_*3rxmK&x)=y0BtCnXc7wXFf zrmj{0dg;O?w=W!C=&UcrUk)$SmzJhyCMxQe#~qlNnBQONxTP{ZF;k6yRbP5bdH;N6 zq5hD{-djskvj_H7*UwhtLgRB≫H=?9}?%sqvfkSJu}m)v5CSsVA3{KP=Q&?Tp(T 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%0A;9&32|yL_G{6f1cLUxCcn{z{z?T5u1^gWF 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 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= 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_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 0000000000000000000000000000000000000000..61a1d4c40760523bc67dc460dfed1eb9d1309b62 GIT binary patch literal 47078 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 YY-Tze2+f4^&?OM?=hC5>=}`Xv0qwqZn*aa+ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6aaff8c44f4f68b61a196bd1a6b5bcc57073ff8a GIT binary patch literal 99769 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 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= 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 0000000000000000000000000000000000000000..c2645c974adfeb8553930b4b4339acb4e449c243 GIT binary patch literal 47086 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 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< 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